C++ must go
I've had it; C++ officially needs to be replaced, and I don't even want to hear about C++0x. Either one is struggling to assemble the right templates, or from someone else's "standard" template library, or dealing with compile failures, or hitting missing features in the compiler, or unable to debug into those "standard" template libraries, or unable to set a breakpoint in a method of a template because the debugger is confused, or even crashing the outright.
*This* is productivity?
Here we are, C++ is the pinnacle of programming for performance,but even competent programmers must fight against the very tools on which there work depends. The separation of compiler, linker, debugger, and new program made sense 40 years ago when computers were expensive and slow: now, however, they can afford to be more dynamic, facilitating debugging the compiler as easy as the target program itself. Why should the debugger of an understanding of a programming language that is not automatically shared with the compiler? Why are templates (so arcane) the only method for reusing significant algorithms across wildly divergent types? Is there no middle ground between preprocessor macros and templates, so that one does not have to to outside the language (or struggle with a poorly supported one based on templates) just to get the power of a LISP macro?
I'm ready. In fact, this might be how I want to contribute to computer science: reinvent our infrastructure, the languages and tools that support the languages we use.