I often wonder why C++ gets people so worked up. It seems that no C++ discussion can happen without somebody recommending to use another language instead without any regard for practicality. There’s always a person who detests C++ so much that he takes the time to write a long hateful comment. There are people who say that C++ has outlived its usefulness, people who say it plagiarizes other languages, and of course people who just can’t stand templates.

Of course now that we have C++11, a new category of comments has sprung up. According to these, C++11 alternatively didn’t do enough, is far too complex or simply didn’t add anything useful.

There is the opposite side too. To some, C++ is the One True Programming Language, which is obviously an exaggeration.

It’s an interesting polarizing effect.

I haven’t seen this in the discussions around Ruby or CoffeeScript, for example. People in those communities don’t seem to be fixated on telling you to go use Python or JavaScript, or complaining about the metaprogramming facilities.

So what’s the cause when it comes C++? Are people scared of C++, frustrated by its complexity, or simply misguided?

My hypothesis…

I think that there was a period of stagnation in the C++ world in the 1990s and early 2000s. Combined with the rise of other languages (Java, C#) and of course the web and the dynamic languages, it diverted a lot of C++ programmers who desired change towards those greener pastures.

Those who stayed were predisposed to conservatism. This kind of developers is likely to complain about the evils of templates and the impenetrable complexity of Boost.

Another group might be even more old school C developers who have been forced into C++ by the changing nature of their employment as C++ entered traditional C domains such as embedded development.

The people who switched away from C++, on the other hand, are likely to be excited their new languages and to praise them as a result.

However, all of this doesn’t fully explain the fervor of the complainers and the “use another language” brigade.

Parting remarks

I’d like to note that I’m not trying to characterize the whole C++ community but rather making observations about some groups within it.

There are plenty of developers interested in new ways of doing things and pushing the boundaries. There are new people joining the ranks of C++ programmers all the time. There are a lot of developers who just get on with writing great software without participating in discussions about the language.

Still, it’s interesting and potentially useful to try to understand what’s driving the negative sentiments, and whether they are based in reality or mostly the product of worldviews that don’t agree with the direction of the language.