
I stumbled upon this video on YouTube.
It’s a 2-hour rant about how hideous C++ is, presented in a somewhat robotic, probably AI-generated voice. I watched it glued to my chair, speechless, as if it were the most exciting movie. Some of the wording may sound a little crude, but I wholeheartedly agree with 99% of what is said there on the subject of C++. The author is also a big fan of Rust, but that does not automatically invalidate what he says about C++.
The usual response to these complaints is either “you don’t know how to use the language” or “new feature XYZ will solve it.” Neither applies here: the author seems to know what he is talking about, and “future features” usually come too little, too late—if at all.
The video is two hours long and makes many valid points, but I’ll list a few that are the most striking and usually overlooked.
CLAIM: C++ is so complex because it cares about performance.
REALITY: C++ is so complex because of backward compatibility.
It cares about backward compatibility much more than it cares about performance. C++ does highly questionable things from a performance point of view, like implicitly copying large structures by value. Many features in the Standard Library, such as hash tables or regular expressions, are known for their poor performance.
CLAIM: C++ is a low-level language.
REALITY: The C++ memory model is largely inherited from C and describes a computer from the 1970s. Most C++ programs would perform poorly on modern hardware if compiled naively. C++ relies heavily on insanely complicated compiler optimizations. At the same time, C++ lacks mechanisms for guiding these optimizations; we can only hope that they occur, but we can never be sure.
REALITY: What constitutes “Modern C++” is a moving target. Back in the day, C++11 was considered “Modern C++.” If you try to present C++11-era approaches as “modern” today, you’ll be laughed out of the room. The guidelines change constantly, are not enforced by automated tools, and are not followed by most real codebases. No actual human being is capable of using C++ “properly,” and even the pundits don’t agree on what that really means. Meanwhile, as C++ keeps growing, learning it becomes increasingly difficult. It already takes 2–3 years to master C++ well enough to stop making stupid mistakes—and as time goes on, it will likely take even longer.
Does this mean that C++ is dying? No.
But if you are starting a new project, Rust or Go could be better alternatives.
