That's the title of a youtube video at:
https://www.youtube.com/watch?v=7fGB-hjc2Gc
The title winner is C++. The author of that video makes a really good case and, it is genuinely objective. It's not an emotional thing. The author is obviously very well versed in C++.
The creator of this video did an incredible job. Of course, AI helped him a lot in this to make the whole thing attractive and transparent. I omit graphic humorous inserts.
What I disagree with:
- IDE flaws should not be attributed to the programming language,
- there is a problem with initializing variables (default values), implicit initialization can cause a lot of trouble, this should be done by the programmer,
- complains about implicit constructors but wants implicit variable initialization,
- complains about the lack of reflection, cites Java which has reflection, but forgets that this magic is possible thanks to, among other things, VM, and C++ does not have VM because the compiler generates machine code that is immediately executed by the CPU, so metadata about types has to be added to the code by using RTTI,
- complains about the lack of automatic conversion of enumerated values, but again forgets that in Java this is done by, among others, the VM, and in C++, after compilation, only integers remain from enumerated values, so you have to add some metadata (string) yourself, which will convert the numbers to text,
- praising Rust for the need to write down how to pass a variable as a function argument, which is an exaggeration because for at least 10 years most IDEs (e.g. Delphi, Eclipse, Lazarus, NetBeans, Visual Studio) have been suggesting function headers, Rust still does not have a convenient IDE, so its compiler developers solved this at the language level,
- complains about the lack of choice in memory organization in arrays of structures and structures of arrays, but this is a "stretched problem" (either we have an array of structures or vice versa),
- complains that the object's destructor is not called after the last use of this object, that it has to be called manually, and he would like the compiler to do it (while in Java and C# the garbage collector does it).
What has been treated very superficially (practically without thorough analysis) but is important:
- problems with multiple inheritance, without elaborating on this rather serious problem,
- operation and use of interfaces.
Finally, he states that C++ was not created for humans but for some super-intelligence. I understand this was meant as some kind of sarcasm. If something like that is ever created, it certainly won't use a programming language with so many flaws, contradictions, quirks, and omissions.
Nevertheless, the recording is very valuable, if only because it contains a huge dose of C++ knowledge in a highly compressed format. This is the kind of knowledge (summary) that should conclude C++ courses in computer science at technical universities.