I notice that this site has a tendency to extol the virtues of C++ as a programming language. As someone who has worked with C++ and who has followed the debate around its use for a long time, I think it’s time to set the record straight.
The truth is that C++ is one of the worst languages ever foisted on the industry. Far from being used in modern trading systems, C++ should now only be used for legacy projects. It is based around machine thinking, which is not programming thinking.
Generations of programmers have been misled by C and C++. Many have fallen into the black hole of its cult with trite platitudes like ‘under the hood programming’, which means no more than driving along with the hood open, trying to fix the engine, but unable to see the road. Cult followers urge end-users to “trust the programmer”, which is stupid and naive, but appeals to the programmer’s ego. And programmers are supposed to have “freedom,” although no one ever says freedom from what.- It’s certainly not freedom from the flaws and traps of C++.
Programming is about programming and not about hardware machines (programs run on theoretical machines). That seems hard to understand and counter to people’s intuition. C++ just supports the intuitive and populist thinking instead of trying to fix it.
So not only is C++ technically bad, but it is culturally bad since it appeals to the ego, rather than the intellect.
I’m not the only one to dislike C++. Ken Thompson, the Bell Labs researcher who implemented the original Unix operating system, described it as a “bad language” that’s “way too big, way too complex” and “obviously built by a committee.” Damningly, Thompson also said that C++ does, “a lot of things half well” but is “just a garbage heap of ideas that are mutually exclusive.”
The problem is that C++ is based on C and C itself is not a brilliant language. It is full of flaws and compromises. It compromised on compiler technology, forever forcing programmers to take care of detail that should easily be done by a compiler. In turn, C was based on B, which was based on Martin Richards’ BCPL, which itself was a cut down on Christopher Strachey’s CPL, which was too ambitions to be implemented at the time. It is Strachey who is the real genius here in my opinion, not people like Bjarne Stroustrup, who now works for Morgan Stanley and who hacked OO into C to create C++, even though C wasn’t a good base.
Either way, if you’re trying to learn C++ and you’re struggling to master it, it’s not you that’s the problem. The language is flawed. Designing a programming language is very difficult, and C++ is simply not that well-designed. Systems programming and application programming are two very separate things, and C++’s real issue is that it tries to combine them both.
Ian Joyner has done many things, including industry programming, systems programming, language and programming research and compiler development, networking, distributed system standards and lecturing.
Contact: [email protected] in the first instance. Whatsapp/Signal/Telegram also available (Telegram: @SarahButcher)
Bear with us if you leave a comment at the bottom of this article: all our comments are moderated by human beings. Sometimes these humans might be asleep, or away from their desks, so it may take a while for your comment to appear. Eventually it will – unless it’s offensive or libelous (in which case it won’t.)