I predict the death of C++, too. The principal platform for C++ is/was MS Windows standalone apps. C# is the new language of choice there, and given a choice, I think most developers would prefer C#. It's simply a much cleaner, more modern language. C++ does have an efficiency advantage, but it's narrowing and few people care with today's machines. On the other hand, people who want fast code and lower level control are much more into C - witness most Linux applications, including the kernel.Karbon L. Forms wrote:Strikes me there must be good reasons why C++ is hugely popular and even Borland is letting pascal die. Not sure what they are though. I like C++ despite the fact that it regularly f**ks with my head. (The bird does that too and I like her).
Someone says they like C++ because it's corss platform. It's actually quite hard to write programs of any complexity that don't require a million #if's and a complex build system (autoconf/automake on linux for instance - holy cow!).
However, there are reasons even more fundamental: Application development is shifting from the desktop to the internet. Slowly of course, and there will always be standalone desktop applications. But features such as built-in web services and ease of integration with web applications become more important in a language. Few people would want to write a web application in C++.
The real problem I see with C++, though, is that it has no culture around it. It's a nice language in its own right. A bit low-level for some (and for some tasks), but a nice language. Very powerful. Very logical and clean. But also very hard to learn well enough to be able to benefit fully from all that (I've seen so many C++ programmers who really only have a partial idea of what they're actualyl doing).
However, the standard library is really only an inclusion of features which are considered "built in" in other languages (Valley, std::string is no worse than any other string type in any other language, bar perhaps a few specialised operations). Compare that to Java, C#, Python or other modern languages, which have huge and genuinely useful languages. And from this stems a language culture. Java programmers all write code the same way, they all use the same notation and style. It makes interoperation in the Java world a reality. There are good libraries available for C++, for use, but they are disjoint and don't gel nearly as well as libraries do in Java (for obvious political, cultural and corporate reasons).
The net result is that the vast majority of programmers who aren't biased with years of experience are a lot more efficient in languages like C# or C++. I used to really love C++; I used to consider it the only "proper" language to use for making a decently complex standalone application. Now I just think, why would I want to manage my pointers or roll my own data structures or use ones from libraries which use a different coding style and different conventions to my own when there's C#, Java, Python and other alternatives out there?
It's a bit sad really, I used to really like C++...
