Reading this was pure joy!
"C++ leads to really really bad design choices. You invariably start using the "nice" library features of the language like STL and Boost and other total and utter crap, that may "help" you program, but causes:
- infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny)
- inefficient abstracted programming models where two years down the road you notice that some abstraction wasn't very efficient, but now all your code depends on all the nice object models around it, and you cannot fix it without rewriting your app."
Yes... Yes. Yes!!! Finally. Somebody said it. Linus is now my hero!
Seriously, if you use C++ to its full extent - and look at inane amount of crap they put in C++0x (http://en.wikipedia.org/wiki/C%2B%2B0x) - lambdas! concepts! alternative function syntax (yes, check THAT one out!), built-in iterators! - why not use C# or Java instead? Equally slow (*), at least they are well designed.
(*) STL semantics encourages runaway number of memory allocations which is very similar to C# and Java. The difference is that both Java and C# have memory systems that are designed for this purpose - the cost of object creation is very, very low - whereas in C++ it is anything but. (http://1-800-magic.blogspot.com/2007/11/guerilla-guide-to-native-memory.html)