|
|
|
|
|
by rtpg
3141 days ago
|
|
Comparing C++ to Frankenstein is a bit of a dis-service to the time spent developing this language. There's some bad innards from C compatibility, but that's only a small sliver of the overall language. The language overall is very big, but has a high level of consistency and.... dare I say orthogonality. The open-ness of the language at the outset, especially around the breadth of available overloading, means that future improvements can work in an extremely wide space. It's one of the few languages that stays true to the "every type is a class, no type is special" philosophy. It's powerful stuff and gives you more control than you can find almost anywhere else, especially with the more modern improvements that pull in a lot of goodies from other languages. I'd say the biggest wart is the compiler-linking process... the fact that the preprocessor is still a thing is rough. |
|
I like the "pit of success" analogy. In design (whether it's API or language, or even physical mechanisms), doing the right thing should be the easiest way to go. C++ has a narrow ridge of success, with cliffs not far from either side.
A more orthogonal, more powerful and even more controllable language, to me, would be some variant of Scheme or Lisp that let you produce fully typed ASTs or even target code for the places where you need absolute control over performance, but high level enough to focus on the business domain problems most of the time. C++ demonstrably simply can't climb very far in the abstraction stack; people don't write web apps in C++. That's the metric that matters in the end.