Despite many improvements in C++11
, C++
is still not an easy language. Java, while not as easy as some may think, is still an easier language with very good performance (often almost as fast as C++
) and offers better IDEs (maybe Visual C++
is as good as current Java IDEs but no luck here on Linux), a much more comprehensive standard library (the JDK), more libraries (e.g. Hibernate, Spring, JEE, Lucene, etc) and no memory leaks (well, almost none – you can still build a memory leak in Java but it is more difficult to do so than in C++
). To be fair, with modern C++11
, it is much easier to avoid memory leaks.
C++11 has many cool features like lambdas, auto keyword, move semantics, and much more. It is definitely a much better language than C++98
was.
See this overview by Herb Sutter about the new features in C++11
:
Elements of Modern C++
Style.
To sum up, I think everyone should learn at least some C++
. If you have been programming in Java
, Scala
, Ruby
or Python
for the last decade and never touched C
or C++
, now with C++11
I think it is time to learn C++11
and improve your programming skills while doing so.
I probably won’t be using C++
much at work in the coming years and when I need a more powerful language than Java, I will probably go for Scala, but I will have a closer look at C++11
and try to learn and understand the new features, particularly those about multithreading and concurrency.
Remember: It always helps to learn a new programming language even
when you don’t plan to use it in production.