Wyoming | C++ is a language that cannot decide what it wants to be: A dessert topping, a floor wax, or a nitrate-based plastic explosive.
C++ has two paradigms of programming - OO inheritance and template. I see far too many systems where the combination of the two has resulted in huge, automatically-generated bloat in the resulting object - which many modern programmers don't appreciate, because hey, memory is now so cheap.
The C++ manner of handling exceptions is bloated and expensive.
The other thing I really dislike about C++ is that it didn't provide for automatic garbage collection. In a language with as many ways to create an object instance as C++ has, there should be automatic garbage collection by default. They could have put this into the language with a way to override it, but instead they left it out and said "Well, you can just invent your own by overriding object creation/destruction..."
No, wrong answer. Most programmers aren't blessed with enough schedule time to do that, and in a modern language, it should just be done.
There's just so much wrong with C++... I barely know where to start. I followed (and used) the language from late in the 80's, when it started as "C with classes," and watched it become the monstrosity that is modern C++. Even after they finished the language spec, it took years before there was a fully compliant compiler for C++'s full spec. It's a great case of a language trying to be everything to everyone - and no programming language can do that and succeed. They tried with PL/I and Algol-68 - and Pascal was the resulting push-back from that. C++ became what it is, and C#, Objective-C and now Swift are the resulting push-back from C++.
One of the biggest bits of political drama I had with C++ was when I was sent to Japan in the late 90's with several other people from several other companies involved in the Cygnus toolchain, in order to lay out a "real-time subset" of C++, which we were going to call "C+-." The Japanese consumer-device system programmers were our guests, because, hey, when Sony (or someone else) is designing a system with a small CPU and small memory that's a wart on the side of a consumer appliance, they want to keep the memory size (and costs) down. The Japanese wanted a programming language in which they could develop OO class libraries to handle specific consumer product tasks, but in a very small memory footprint.
We were going to eliminate templates, exceptions, run-time type ID, and some other esoteric issues, add in a default memory management library, and call it good. C++ advocates, including the author of the C++ spec, got wind of this and had a hissy fit - and the result was the fracturing of the C++ "marketplace" with results like C# and other languages that were less bloated.
Edited by WYDave 10/12/2017 17:25
|