Bartosz Milewsk at Reliable Software has made a short but very interesting article that I think summarizes extremely well how I have felt my whole journey with the C++ language has been and where I see felt it's all ending up to be like:
...But if a language is disproportionately complex, it starts adding complexity to the problem you're trying to solve instead of reducing it. There are endless examples of unnecessary complexity in C++.
Accidentally, the parsing difficulties of C++ might be the biggest roadblock in its evolution. ...As long as C++ gurus live in the clouds of the Olympus, they won't see the need for this kind of evolution. That's why C++ becomes more and more elitist. In the future, people who do NYT crossword puzzles and the ones who program in C++ will be in the same category.
and...
... C++ is becoming a freak language that's parading its disfigurements in front of mildly disgusted but curiously fascinated audience.
"So you have to put a space between angle brackets? How bizarre!"
"Are you telling me that you can't pass an instance of a locally defined class to an STL algorithm? How curious!" ...
I won't quote more. Read the article, it's very amusing, interesting, and ummm... true. At least to me it is. I love the point he makes of C++ and Java/C# in all this. How true.
I have felt at times that those who cherish their long-hours earned skill in C++ sometimes defend their L33tz programming skills sneering at the "lesser programmers" the same way someone who loves Linux a bit too much sneers at the concept that pershaps some tasks can indeed benefit from a more GUI/easier interface approach.
I believe Joel called this "those who sneer at those programmers who code in a language that doesn't have blocks of { }'s."
I'm on the Board of Directors of the Northwest C++ Users Group with Bartosz (http://www.nwcpp.org). He's an extremely interesting guy to talk to!
Posted by: Paul | January 29, 2005 at 11:45 PM
Oh so you preside in the same board! I didn't connect the dots.
I bumped into Bartosz about 3-4 years ago when I first bumped into www.relisoft.com I found some interesting view points and information, so from time to time I visit the website. Small world.
Posted by: Raist3d | January 30, 2005 at 01:01 AM
Show me a language that's perfect and easy, and I'll show you an OS that never crashes and can't be hacked. God help us if Java is the wave of the future.
Posted by: crowdpleaazr | February 07, 2005 at 06:35 AM
I am not going to defend Java here, but really, you think that C++ as a language is ok as it is? I would love if something like D became the standard, or at least some sort of C++ 2.0.
Posted by: Raist3d | February 07, 2005 at 10:35 PM
Unfortunately C++ 2.0 will probably be C++ as it is "plus" some more stuff. Don't get me wrong. I love C++, but I agree it is getting very complex. I just don't see how things can go differently. The C++ standard commitee tries to improve the language but at the same time keep incompatibilities with previous versions (including C) to a minimum. This is extremely important for large parts of the C++ community, like the finance and telecom sectors, because they rely very heavily in the reuse of source code and libraries. Eventually certain features will be deprecated and some of the syntax may be changed to fix some of parsing voodoo in the language, but it will take a lot of time. Personally, I sometimes think of the C++ language as the testing ground for features that eventually get into other languages or influence the design of other languages. And the reason why it is a good testing ground is, well, because it is very commonly used and because it is very flexible, allowing practitioners to play and invent with it. For example, who would have known that templates would allow such complex and useful techniques? It is the flexibility of the language that allows this kind of invention within the boundaries of the language itself. Of course, it is a pain in the ass to learn and apply these techniques. Who hasn't pulled his/her hair trying to decipher a template error message? But nevertheless these techniques are extremely useful and maybe in the future some other language (or C++ 2.0) will come up with mechanisms to use them much more effectively and easily. Then everybody will compare C++ with this new language and say: "C++ really sucks!". And it will probably be true, but I bet C++ will still be around spreading its genetic material all over the place. :-)
Posted by: Jaime Lopez | August 14, 2005 at 10:11 PM