This arrived as part of a mailing list that I suppose I opted into 
at some point:


==============================
More ++, Less C
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 naive 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
-- 
                                           David Nicol 816.235.1187
              A government of the p8a, by the p8a, and for the p8a.

Reply via email to