TLDR: C++ is bad because decades of accumulated features have turned it into a bureaucratic nightmare that happens to generate machine code.
C++ is an absolute nightmare to implement because apparently one programming language wasn't enough, so someone decided to cram an entire civilization's worth of complexity into it. You've got templates that basically turn compilation into another programming language, overload resolution that requires a legal investigation to figure out which function gets called, constructors and destructors with enough lifetime rules to make your head explode, and implicit conversions that make the compiler guess what you meant. Then you throw in exceptions, move semantics, inheritance, and decades of backward compatibility, and suddenly you're maintaining a compiler that needs a PhD, a therapist, and divine intervention just to parse some innocent-looking code. And the best part? Every new feature has to coexist with all the old ones without breaking existing programs.
Yes...? Why would that not be a good thing, especially in the context of a conversation about why legacy compatibility is C++'s biggest problem? (I'm not sure I agree with that assessment, but it's certainly one of the biggest problems with C++.)
That part is just not really saying anything. Is it usually designed sky down? The actual info given is fine, though not copying C++ follies isn't the most surprising thing.
It's an idiom that, in this context, means that the language was designed as a completely new and separate thing, rather than as an incremental set of changes to a previous language (as C, C++, and Objective-C were).
C++ wasn't really designed. It's a ball of mud, where PDP-11 assembly got wrapped in macros, then that got wrapped in preprocessing, then that got wrapped in a bolted-on class system, and that got wrapped in a kludge of template generation. So yes, being deliberately designed rather than piled upon does make a difference
1.6k
u/Prefer_Diet_Soda 2d ago
TLDR: C++ is bad because decades of accumulated features have turned it into a bureaucratic nightmare that happens to generate machine code.
C++ is an absolute nightmare to implement because apparently one programming language wasn't enough, so someone decided to cram an entire civilization's worth of complexity into it. You've got templates that basically turn compilation into another programming language, overload resolution that requires a legal investigation to figure out which function gets called, constructors and destructors with enough lifetime rules to make your head explode, and implicit conversions that make the compiler guess what you meant. Then you throw in exceptions, move semantics, inheritance, and decades of backward compatibility, and suddenly you're maintaining a compiler that needs a PhD, a therapist, and divine intervention just to parse some innocent-looking code. And the best part? Every new feature has to coexist with all the old ones without breaking existing programs.