Linked by Eugenia Loli-Queru on Mon 11th Jul 2005 00:25 UTC
General Development In the Japanese edition of his latest book, Bjarne Stroustrup added an extended essay, reflecting on C++ use over the last decade, and presenting plausible directions for the next revision of the C++ standard. Download the PDF to see what he has to say.
Thread beginning with comment 2389
To read all comments associated with this story, please click here.
Interesting Quote from the Article
by BryanFeeney on Mon 11th Jul 2005 10:17 UTC
BryanFeeney
Member since:
2005-07-06


C++ has drifted towards becoming an “expert friendly” language. In a gathering (in person or on the Web) of experts, it is hard to build a consensus (or even interest) for something that “just” helps novices.
The general opinion (in such a gathering) is typically that the best we can do for novices is to help them become experts. But it takes time to become an expert and most people need to be reasonably productive
during the time it takes. More interesting, many C++ novices have no wish or need to become experts in C++. If you are a physicist needing to do a few calculations a week, an expert in some business processes involving software, or a student learning to program, you want to learn only as many language facilities as you need to get your job done. You don’t want to become a language expert—you want to be (or become) an expert in your own field and know just enough of some programming language to get your work done. When supported by suitable libraries, C++ can be used like that—it is widely used like that. However, there are traps, pitfalls, and educational approaches that make such “occasional use” of C++ unnecessarily difficult.


This is the fundamental problem with C++. There is such an abundance of features, all of which inter-relate to a certain extent, that you really need to do a lot of hard work within the language to become productive in it. Note, the difficulty is not in learning the initial feature set, it's in learning to avoid the pitfalls that occur when you you start to use all these features in a significant way (e.g. pointers or references? how to use templates, typedefs and structs together? etc.).

This is why so many people use Delphi, Java or C# instead: by simply picking what they hope will be the best features that users need, they minimise the training time, and crucially, minimise the number of potential issues that affect users.

With a modest effort, C++0x can do much better in this area.

This however, is something that I can't agree with. I think C++'s problems are a consequence of fundamental design decisions made early on, and an over-willingness to cater for the C programmers who were afraid to make the OOP leap. It's notable that only now are fully OOP languages like C# and Ruby becoming available.