Top 5 myths about C++

2010-11-13

There are only two kinds of languages: the ones people complain about and the ones nobody uses. -- Bjarne Stroustrup

Nothing is perfect; certainly not programming languages. But it's one thing to complain about legitimate issues, and another entirely to go by old misconceptions that could be cleared up with a little research. Due to its prominent status, C++ is often a victim of ignorance, as people think they know things about it just because they keep hearing the name. So let's see a few things people believe about C++ that just aren't true. This isn't purely for fun: programming is hard, and the last thing you want is to limit your options artificially.

Myth #1: C++ is just C with classes

In all honesty, I can't blame people for believing that, as virtually all C++ manuals start by teaching C, as if the "++" part was only an afterthought. But the truth has to be said: C++ is much, much more than its predecessor. Let's see a few other features C++ has over C.

Incidentally, there is a language that's literally just C with classes. They call it Objective C and it's quite elegant. It is also completely different from C++, and much more limited.

Myth #2: C++ is just too complicated

Wait, weren't you just complaining that C++ offers too little over C to be worth the trouble? Make up your mind. Seriously, you can pick and choose which C++ features to use, and what you don't use won't clog up your executable OR your brain.

Myth #3: Manual memory management is hard

Harder than with a garbage-collected language, maybe. But between the rules for variable lifetime and the STL, C++ makes memory management far easier than C. Reference counting is trivial to implement, and true garbage collectors exist if you want to use one.

Myth #4: The STL? But it's slow!

Again, compared to what? People write games in Python and telephony applications in Erlang. Unlike either of those, C++ is at least a compiled language. Rest assured that for most uses the STL will provide more than satisfactory performance. See also myth #1 for other C++ features that can make code faster than equivalent C.

Myth #5: C++ has few libraries

Bwahaha! Do take a look at Boost. Not to mention that any self-respecting C library is designed to be compatible with C++, so it's not an either/or decision. As a plus, libraries you don't need will not take up space on the end user's machine, unlike with massive runtimes such as .NET or the JRE.

A personal anecdote

When I ported Square Shooter to the desktop, C++ was not high on my list; I had only used the language once before, ten years prior, for a less than serious programming project. But the prospect of having the game available as a stand-alone executable file was too tempting. Imagine my surprise when the port turned out to be trivial (barring unavoidable difficulties -- I had to learn OpenGL to do it). Especially as the original code was Javascript, a much higher-level language. The resulting code was cleaner, and I was able to do some optimizations that are simply not possible in a dynamic language. Last but not least, the game compiles out of the box on Windows and Linux, without so much as an #ifdef, thus putting to rest another myth, namely that C++ is somehow less portable than e.g. Java.

Of course, choice of programming language depends on many factors. Point is, you should make an informed choice, and not go by hearsay. Hope this helps.

Tags: