C++

Computational Class

Finite-automata-complete

Programming Paradigms

Defined by

http://www.open-std.org/jtc1/sc22/wg21/

Things written in C++

Commentary

For any software project, it's important that you choose the right language to develop it in. That's why you'll always choose C++, no matter what the project is!

Why will you choose C++? Because it's popular, so a lot of programmers know it. And a lot of programmers means a lot of competition, and that means you'll be able to hire programmers at the lowest rate! This will surely offset whatever costs might be incurred from choosing an ill-suited programming language and hiring programmers who work at the lowest rate.

And why is C++ such a popular programming language?

Is it because it's a good programming language? Hardly. That's like saying that coffee is a popular beverage because it's healthful.

No, C++ is popular because C++ is popular. Hey, Google is a big, successful company, and I hear they use C++... it must be why they're successful! You should use C++ too!

But that's not the only reason. C++ is popular because programmers like it. I suppose the question then is, why do programmers like it?

Is it because C++ makes it easy to write correct, maintainable code? Is it because C++ is easy to learn? Is it because there are things you can do in C++ that you can't do in any other language? Is it that C++ lets your programs run as fast as they possibly can?

Anyone who has ever used C++ can tell you the answer to all of those questions: No. (No, not even when it comes to making your program run as fast as it can. C++ allows so much control over the low-level workings of the program that the compiler cannot make optimizations that it otherwise could, if the programmer were constrained to working at a higher level of abstraction.)

So what is it about C++ that makes programmers like it?

Well, I have a theory. While most "normal" people feel that their lives are too complicated, too full of arbitrary rules and boring details and essentially meaningless things to remember, there's a certain strain of psychology that actually thrives on complexity like this, because such complexity generates gratuitous expertise.

What I mean by this is that if a system is easy to master, then there's no opportunity to show off your mastery of it. There's no way to display your dominance through your command of minutiae and knowledge of trivia. And if that's what really motivates you, then, well, you're going to avoid that system, because it doesn't provide you anything to work with in the social game you want to play. Instead, you'll look for something with a lot of nooks and crannies and bells and whistles and jargon and buzzwords that you can familiarize yourself with, and you'll take every opportunity to demonstrate that you are More Familiar with It than Thou. You'll look for something like... well, like C++.

And if it so happens that programmers with this general personality type also like the idea of total control over their program — and while I'm no expert on psychology, somehow that seems likely — C++'ll have'em downright hooked.