
Most of us that work in the IT industry have been around for a long time. We started out in our parents basement writing code in some BASIC environment, ussually Commodore BASIC or QBASIC. Do you remember how thrilling it was? Your first program and it was something extremely basic but the point was it worked. Some of us got hooked right away and kept trying to solve problems and added more and more pushing the capabilities of whatever language we used. As we got older the environments progressed and the programming tools progressed and got more complicated.
C++ programming seems to be the top dog programming language in the world today. Everyone seems to love C++. C++ is the cadillac of the development world.
but it's an absolutely terrible compromise between speed and abstraction. It is that way for the exactly the reason you mention: "it's development has somewhat stalled in the past."
It's a stretch to say "everyone seems to love C++." Of the people I know, I'd say more people hate it than love it. Personally, I don't love it, but do think it's a local maximum in terms of power among "popular" languages. As far as car analogies, I wouldn't say Cadillac, but rather Ford Explorer. It's ubiqtuous, reasonably powerful, a little cheap-feeling, reasonably safe when used correctly, horrendously unsafe when used incorrectly.
@Marc van Woerkom: I like C++, but it's development has somewhat stalled in the past. While C++ is a good compromise between speed and abstraction, other languages focussed on different aspects.
I like C++ too (but not "like like", for those who remember elementary school
C++, as a language, is designed so a compiler doesn't need modern optimization technology to get good performance out of it. It only offers abstractions when simple optimizations (mainly, inlining) can get rid of the overhead. That design makes the abstractions rather spotty. For example, in C++, there is a "virtual" keyword to tell the compiler when a method might be overridden by a derived class. This is to eliminate the performance overhead of having to generate an expensive virtual call for every method, even ones that aren't overridden. Modern compilers can easily derive this information on their own, which leaves "virtual" as just a wart on the language necessitated by dumb compilers. There are lot's of other warts in the language (eg: nearly all the limitations of templates), that exist only because C++ has to assume a dumb compiler and linker combo.