Stroustrup on The C++0x "Remove Concepts" Decision
ddj.com
ddj.com
What is an iterator? Not a class. Not a type. It is a
concept. (Or, if we want to be more formal, it is what
Bourbaki calls a structure type, what logicians call a
theory, or what type theory people call a sort.) It is
something which doesn't have a linguistic incarnation
in C++. But it could.
http://www.sgi.com/tech/stl/drdobbs-interview.htmlThe tragedy, in my opinion, is that we don't have more to show from a decade's work by so many brilliant people. C++ is straitjacketed by ISO standardization.
Even not considering C++, this approach is more likely to result in the acceptance of a feature that everyone feels equally "meh" about rather than something that "only" 80% really likes, but 20% opposes.
Well said. I use C++ and Perl primarily, and both languages suffer from this.
But part of me also wants to put C++ on life support, and simply devote all time to the improvement of D (akin to temporarily moving Python 2.x forward until Python 3 is more mature).
I think D is pretty cool, but it has a lot farther to go with regards to standardization as well as implementation. There is a current reddit thread going over its shortcomings:
http://www.reddit.com/r/programming/comments/93jh5/ask_progg...
Whether it wants to be or not, D is now in the same niche as C++, but without either the maturity or commercial support that a niche language needs to thrive. And that probably won't change now that the larger software world has moved on.
I don't know about the commercial application space, but in FOSS C++ is alive and well. And it isn't going anywhere for a long, long time.
For a new project, C++ is a much better choice than C, even if you don't use all features of the language. The compilers are faster and better than ever, and the libraries are great.
<UNRELATED> I, for one, have never seen a decent quality desktop application written in Java. C# has better apps because C# programmers seem to prefer using Windows.Forms on Windows and GTK# on Linux. But nothing beats the speed and responsiveness of an application running on the bare metal. </UNRELATED>
I hear eclipse is pretty decent.
Almost no virtual functions, or at least forbidden at many levels, STL here and there, or custom STL (EASTL for example, etc.).
The C++ that we use in our studio (for runtime code, not tools) is more like "C" - Using RAII here and here, templates, and rarely classes (mainly for RAII debuging constructs), and using just POD structures (this helps a bit when deserializing objects, especially if they need to be streamed - as in a open-world game).
Microsoft supports C++ in Visual Studio because it's what Windows and all of its applications are written in.
If by "niche" you mean "anywhere code has to run fast or in a small space." C++ is displacing C in embedded applications. The JIT compilers in Java and MS CLR are in C++. C++ is only growing for use in simulations, which remains a rapidly growing field.
C++ remains a good choice for GUI development, which is hardly niche.
This is progress - it used to be that the majority of programs had to consider processor and memory utilization as a primary concern.
The examples you gave are excellent examples of where it makes sense to use C++, but that's not what the majority of programming is now.
It's naturally de-emphasized in the web world, but there's still a huge amount of C++ being written. Most desktop and a large percentage of systems, mobile, scientific and embedded code is written C++. There's just relatively little cross-pollination between those worlds and the web world.
I feel that one of the things really holding C++ back is its development model. The benevolent dictator open source approach seems to have proven itself compared to C++'s problematic ISO-standard process. For one thing, mistakes are locked in stone. Non-standardized languages handle mistakes through versioning, which tends to be a much better bargain for all involved.
At the same time, the ISO-standardization means that C++ has some much more computer-science orientated modules than you tend to see in other languages. The amount of thought and optimization that goes into everything is mind-boggling.