Wonderbolt wrote:Is C++ still worth learning? I know a dozen nice languages, and don't really expect (or hope) to have to use C++ at some point in my career, but it *is* one of the biggest languages. Other than its use and strength in industry, is there any good reason to learn the language?
In addition to what korona wrote, C++ is still unparalleled in performance, among languages at a similar or higher level. It also has better tooling than any other language, because it is so widely used.
The beauty of C++ is that it is low level enough that you can still see what is going on at the hardware level. This is very useful knowledge for programmers, making experience with C++ or other low level languages very useful, even for programmers who otherwise always write high-level stuff. This low level approach also allows you to squeeze almost every drop of performance out of your computer. At the same time C++ is high level enough to allow you to write very complex programs with a very high level of abstraction.
This makes C++ a language that may not always be the best tool for the job, but always a good tool for the job. A time-critical application may be best written in assembler, of some hardware-specific language, but you can write it in C++ with only a small hit in performance. A small script may be best written in python or bash, but you can write it in C++ in a reasonable amount of time. A user-interface may be best written in C# or Java, but you can write it in C++ without too much additional effort. This huge flexibility is unique to C++.
C++ also has a number of disadvantages. The main one being that so many C++ programmers refuse to write C++, but instead write "C-with-classes", which can quickly turn any structured program into a huge pile of premium grade manure. But C++ has advantages that no other language has, and as long as that is the case (and there are no signs of this changing in the near future), C++ will remain in heavy use in the industry.
Another yes on this topic!
I understand you've said that you're already familiar with a bunch of languages, so perhaps this doesn't apply to you, but you didn't mention which ones, and I just wanted to expand on the topic of "having experience with a low level language is extremely useful, even when writing very high-level code". From beginner's concepts like pointers, memory allocation, etc. to advanced object-oriented ideas like polymorphic classes or pure virtual functions, or templating - all are extremely useful for gaining a deeper knowledge of how computer programs work, even if you don't use them directly in your everyday work (I realize that some of this also applies to C, but I've mentioned it because others also seemed to include it in their answers). And by no means do I consider myself an expert on C++ (I don't even consider myself intermediate - for example, I can't even read some of the template craziness Yakk seems to write here from time to time), but the little knowledge I have of the language is still something I think has helped me a lot in my programming career.