Adding my 2 cents: C++ was popular because it was what people learned in college at the time. People don't want to learn to do the same thing they know, just in another way, which is exactly what happens when you switch languages. Once you're proficient in one (which takes about 10 years), there's little to gain on changing "how" you do things (Java or C++ or Haskell) versus focusing on what makes the difference: knowing *what* to do and doing it whatever way you know.
I used to program in C++ (about 10 years) but switched to Java (since about 5 years) for productivity reasons. I can implement an idea about 10x faster in Java than in C++ and since I'm mostly testing ideas (models, strategies), execution speed is irrelevant compared to the language not getting in my way.
I used to program in C++ (about 10 years) but switched to Java (since about 5 years) for productivity reasons. I can implement an idea about 10x faster in Java than in C++ and since I'm mostly testing ideas (models, strategies), execution speed is irrelevant compared to the language not getting in my way.

not a Java programmer but that is impressive that they have lambdas, did not realize. You still have to be so verbose and statically imply tho. C# has the same problems that is why I speak about Java because I know C# pretty well.