Has C++ lost its way?
Back when I started programming there was C, and the new kid on the block C++. I got my first job at PSION. C++ was the only effective way to organise your code with classes. There were other languages, but none that could leverage the power of C. The dominant language.
C++ was good at OO, and building structures that were effective was great.
Then Java came on the scene. Only slightly slower than C++ and gaining speed all the time. Also crucially run anywhere. Java and C++ fought it out for the middle ground held by Cobol previously. C++ had some advantages, but Java had many too. As speed was not as critical for business logic C++ lost this ground. Now turn year 2000, it was difficult time and the requirements for C++ programmers declined.
C++ territory was now limited to a fight off with C. As computer architectures changed the relative cost of virtual function calls has become more important. So verbose classes with multiple virtual functions have become more of an overhead.
Templates came on the scheme and the generation of the standard template library benefited both C++ and C.
Template usage in C++ can however push a lot of the run time cost to compile time. As things evolved boost::MPL became a useful structure to organise templates. Andrei Alexandrescu with modern C++ design. showed what can be done. But it is hard!
My feelings is C++ is currently waiting for Concepts to get into the language in some form. This will simplify a lot of code. And modules will increase the speed of compilation.
However we are currently stuck with extremely long compile times and unreadable code. Boost Hana and Brigand, to mention a few, seem to be doing something to change this but I feel we are still waiting for the next paradigm shift. Roll on the next few years!
C++ is waiting for the next paradigm shift and if it doesn’t happen other languages will take over.