More ++, Less C

原创 2007年09月13日 11:08:00

Standard template libraries, abstract classes and multiparadigm programming are keys to high performance.

"Too much C++ code is just C. For example, people do class hierarchies in a very naïve way. They think of a few implementation details that are common and they throw them into a base class. I have been preaching about this for nearly 15 years, and nobody listens. It's so much easier to make your own mistakes than to listen," lectured Bjarne Stroustrup, creator of the C++ language in his Tuesday, August 28, 2001 keynote at the Software Development East conference in Boston. Now head of AT&T's Large-Scale Programming Research Department in Florham Park, New Jersey, Stroustrup continues his focus on efficient algorithms and high performance. The solution to the problem of overloaded base classes, said Stroustrup, is to write interfaces that are totally abstract. "Writing code like this is a bit tedious because of the repetition, but if you have a concept, make it a class. This is one way to handle common state."

Beginning his talk with a graph depicting the performance of linear algebra calculations programmed in C++ and Fortran, Stroustrup pointed out that, while beating Fortran at what it does best is difficult, it can be done. "These are my semi-arm-waving comments on efficiency. Efficiency matters—not everywhere, but in embedded systems and performance numerics, which are areas that interest me, it does." What is slowing down C++ coders everywhere? First, too much reinvention of the wheel, he said. "If you think you can build a matrix library, go ahead, but there are many already available." He also lambasted "Smalltalk-style" hierarchies and showed several code snippets explaining how to better manage resources.

"Say you acquire a resource and then you close it out at the end. What if you never get to the end?" he asked rhetorically. "OK, so you open a try block, catch the exception… But there is something fundamentally wrong with this solution. Your code has roughly doubled in size. You're better off creating a class with a destructor." Object-oriented programming, Stroustrup went on to say, is really just one of several paradigms C++ users have at their disposal. Multiparadigm programs that use OO, generic programming and data abstraction are powerful ways to achieve fast performance and power.

"If you were designing C++ today, would you do anything differently?" an audience member asked. "Undoubtedly," responded Stroustrup. "Language design is a response to a set of problems you are facing at a point in time. I would want to support direct representation. I would not, however, build a high-level language and sacrifice efficiency. A lot of times, that question really is, 'Did you really mean to design something like Java but you couldn't?' and the answer is no. In terms of performance, C++ and Java don't mesh. I could make a similar statement about C#, but I won't. You also have to remember that I don't like proprietary languages."

So how will C++ evolve over the next 10 years? "Templated type definitions should be there," Stroustrup predicted. "The main effort should be in standardizing some of the libraries. It's not going to be easy, but I see it as a language that maintains its emphasis on run-time efficiency. The area I'm most interested in is distributed computing. I don't see any real likelihood of changes in C++ for supporting Web development; that belongs in the area of libraries. Whether any such libraries can be standardized is a big question, though. I have my doubts."

—Alexandra Weber Morales
Software Development Magazine

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux中cat、more、less命令区别详解

众所周知linux中命令cat、more、less均可用来查看文件内容,主要区别有: cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;...

Learn More Study Less

  • 2014-06-18 10:51
  • 2.02MB
  • 下载

Learn More Study Less 電子書

  • 2014-05-26 23:37
  • 2.02MB
  • 下载

【每天一个Linux命令】25. 查看文件命令(cat/more/less/tail/tac/nl/od)

linux中查看文件的命令如下: cat: 由第一行开始显示档案内容 tac: 从最后一行开始显示,可以看出 tac 是 cat 的反向显示! nl: 显示的时候,随便输出行号! more: 一页一页...

cat more less 命令区别

cat more less

英语Learn more , study less.pdf

  • 2009-05-08 19:08
  • 2.02MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)