As a former C++ programmer, I appreciate everybody that tries to make programming in this language more logical.
I just think, that C++ and particularly the whole template system is just to complicated.
I have enough work to do, finding solutions for the real world problems that must be implemented -- I don't want to have more work fiddling around with language specifics and even more trickery, just to have my programs running maybe 1% faster.
C++, particularly the template system and the new standard library that is based on the STL, disappointed me long time ago, when a whole group of programmers where trying to find out what the compiler errors where about deep inside the STL. The whole error handling inside the templates where so muddled, that it was nearly impossible to find out what the trouble was, without reading big parts of the STL source.
I trust, that today's compilers generate better error messages for templates, but still I am not sure that the whole thing -- and particularly the STL -- is worthwhile for most real-life problems.
And what do you mean by "most real-life problems"?
HN is rather biased towards web development, so...
C++ is used for real life problems from web browsers, to physics engines, fluid solvers, photorealistic renderers (in fact, pretty much all software used to make most visual effects CG for movies is in C++), autopilot systems, and pretty much everything in between.
And as yet, there's nothing else that comes close to allowing both high-level abstractions/encapsulations and low-level memory alignment/allocation/control as and when needed, which is important for high performance and memory efficient (bit packing, tagged pointers, etc) code.
What I meant was: I want to spent my time with the problems that I must solve, not with by programming language induced problems!
When I really need speed, I always can implement single routines in pure C -- I don't need an STL abstraction for that, that feigns speed to the programmer, but in the end it does not give it to him, because he chose the wrong abstraction. It seems so easy: Just use the STL/std-c++ library and all your speed problems are solved -- but std-libraries do not make a bad programmer a good one -- instead, it creates programmers that invest their time in language specifics instead in data structures and algorithms. So bad programmers will be even worse in the end.
Also note that in systems such as those, that lean heavily on numeric computation, you'll see only a little bit of templated code, used sparingly, to make writing the rest of it easier. In fact you won't even see any deep nested class hierarchies.
I just think, that C++ and particularly the whole template system is just to complicated.
I have enough work to do, finding solutions for the real world problems that must be implemented -- I don't want to have more work fiddling around with language specifics and even more trickery, just to have my programs running maybe 1% faster.
C++, particularly the template system and the new standard library that is based on the STL, disappointed me long time ago, when a whole group of programmers where trying to find out what the compiler errors where about deep inside the STL. The whole error handling inside the templates where so muddled, that it was nearly impossible to find out what the trouble was, without reading big parts of the STL source.
I trust, that today's compilers generate better error messages for templates, but still I am not sure that the whole thing -- and particularly the STL -- is worthwhile for most real-life problems.