Everybody seems to be using virtual machine based languages at the moment. And with good reason. Java and the .NET family of languages are certainly productivity enhancing, though not for the obvious reasons.
The main benefit from the new virtual machine based languages are that, relieved of the burden for deleting objects we are suddenly more productive. It’s not an argument I buy into. Not many people writing C++ get to delete their objects manually. A combination of the C++ Standard Library and Boost have seen to that.
The main benefit to me are the tool sets surrounding both Java and .NET. I’ve never seen a richer ecosystem of tools like IDEs, profilers, build systems, unit testers etc, especially supporting Java but .NET is catching up too.
What’s more, most of the tools are available for little or no cost. Most notably the wonderful Eclipse IDE.
C++ doesn’t have a broad ecosystem of tools. Performing unit testing and continuous integration with C++ is arduous. Most programmers don’t bother.
It is a pitty, C++ has a lot of strengths. I love writing it…though I suspect that may be a minority opinion.