Linked by Roberto J. Dohnert on Wed 28th Jul 2004 17:23 UTC
General Development Most of us that work in the IT industry have been around for a long time. We started out in our parents basement writing code in some BASIC environment, ussually Commodore BASIC or QBASIC. Do you remember how thrilling it was? Your first program and it was something extremely basic but the point was it worked. Some of us got hooked right away and kept trying to solve problems and added more and more pushing the capabilities of whatever language we used. As we got older the environments progressed and the programming tools progressed and got more complicated.
Permalink for comment
To read all comments associated with this story, please click here.
@JeffS
by Rayiner Hashem on Wed 28th Jul 2004 20:54 UTC

I agree with you about this generally, but I have to take exception to this point:

or it can be as high level and productive as you want

There is an abstraction ceiling built into C++ by the limitations of the language. Once you really start pushing the modern techniques, you hit a wall in what you can do. If you follow the path of the STL, you realize that you want lambdas and closures, and Boost.Lambda just doesn't work well enough. If you start heavily using template metaprogramming, you realize you want real procedural macros, and the hacky tricks you can do are just too much trouble for too little gain. If you follow the object-oriented aspects of C++, you start to miss dynamic typing, and run up against all the limits of the object model, like the fragile-base-class problem. If you start heavily using the container classes, you realize that you can't use polymorphism with them without using smart pointers. When you start using smart pointers in containers, you run up against all the hassles of now having two levels of indirection whenever you need to use an iterator.

In general, C++ gives you a lot of power in abstraction, but it's a far cry from being as "high level and productive as you want." Especially in the context of hobbyist languages, where the "popularity" aspect isn't as big of a deal, there is little reason to deal with those limitations when there are much more suitable languages available.