The Unkown Programmer gives you 10 Reasons why you should know C++. However, some of the points he gives either miss the mark, or are simply incorrect.

  1. C++ has influences in many other current languages

    True for Java and C#, but Perl, Python, JavaScript and Ruby aren't. Those languages where influenced by C (to a varying degree), but not C++.

    And other interesting languages like Clojure, Erlang, OCaml or Haskell don't have anything in common with either C or C++.

  2. Many code samples are coded in C++

    That was true before Java took off. Nowadays most books seem to use Java, or maybe C#.

  3. It will provide you a better understanding of other systems

    Technically correct, but if you want to know low level programming, learn C. This is what software like the Linux kernel actually uses, and it's an easy language to learn when compared to C++.

    Good C++ code usually abstracts away all the low-level stuff anyway, so you don't have to deal with it – but first you'll have to write the abstraction of course.

    Third, in the one space where efficiency really matters – embedded devices – C is still the king, because C++ can't deliver the performance when it really counts. And even here the replacement for C isn't C++, it's Objective-C for apps on the iPhone and Java on Android

  4. Templates & generic programming

    Wrong way around. C++ poorly implemented techniques found in other languages that existed way before C++ did.

  5. Interfacing languages

    The problem here is that the C++ interface and ABI (Application Binary Interface) isn't standardized, and depends on the compiler you've used. If the library was compiled with a different compiler (or even a different version), you might not be able to call into it.

    Not so with C, where the interface is defined and standardized, and is used by many other languages as well.

  6. Efficient machine code produced by C++ compilers

    Uh, no. C++ not only suffers from the same problem as C here (the language basically can't make any guarantees whatsoever about the code), its hideously complex syntax prevents compilers from even compiling it correctly!

    There's a reason why the OCaml compiler can produce faster code than C compilers, and why C++ programs are so huge when compiled.

  7. C++ projects are more interesting than the average

    This really depends on what field you're working in. Also, I suspect that there's a certain degree of "It's what everyone else is/was using" going on here.

  8. You will hardly be seen as a hacker if you don’t know C++

    This is an excellent point for generating flame wars, since it relies entirely on your definition of a hacker, and what you think of C++.

    Personally, I know C++, and I want my lifetime back that I spent working with that language. C++ is needlessly complex, the "OO" is a joke, and it has so many hidden traps I'm surprised no one has been eaten yet by a C++ compiler.

    And the fact that C++ is an almost complete superset of C might have been a good idea to win over the C programmers, but it also means you get all of Cs problems like the preprocessor, and casting, etc.

    Someone with a passion for programming languages might know C++, but I can't imagine them really liking it.

In short: If you want to learn a low level language, learn C.

Thanks to Florian Gilcher for reviewing drafts of this post