Bjarne Stroustrup, creator of C++, wrote an article for Dr. Dobbs recently lamenting the decision to cut “concepts” from the upcoming revision of the C++ standard. His article left me with the feeling that C++ had jumped the shark.
The upcoming standard has been called “C++0x” based on the assumption (or at least the hope) that the standard would come out in the first decade of this century. But there will be no C++0x; now it will have to be C++1x. Part of the reason for removing concepts was to avoid pushing the release of the standard out even further. Stroustrup says he expects concepts will be added to the standard in five years. How many people will care by the time the standard is finished?
I’ve written C++ for a long time and I still use C++ for some problems. I like the language, but it has gone about as far as it can go. It’s safe to say the language has essentially stopped evolving if new standards are only going to come out every decade or two.
I have great respect for the people working on the C++ standard committee. The design of C++ is an engineering marvel given its constraints. But if it takes such Herculean efforts to make changes, maybe it’s time to call the language finished.
I’m content with the current version of C++. If I used C++ for everything I do, maybe I’d be anxious for new features. But if something is hard to do in C++, I just don’t use C++. I don’t see a new version of C++ changing my decisions about what language to use for various tasks. If something is easier to do in Python than in C++ now, for example, that will probably still be the case when the new standard is implemented.
Update: The ISO committee approved the final draft of the C++ 2011 standard 25 March 2011.
Related links:
At least, they are finally adding hash tables to it. ;-) (You know this if you read my latest blog post…)
I agree that C++ may have slowed its evolution, but I don’t see as a bad thing. We shouldn’t overstretch darwinian metaphors: lack of evolution doesn’t mean imminent death. Moreover, change != evolution. Perl is changing, but I am not sure it’s evolving. C is not evolving, but it’s widely used. Design-wise, C++ is already a huge, powerful kitchen sink of a language. No need for updates.
I’m getting the same impression with Perl 6. It’s been nine years since the announcement was first made, and the language design team is still hammering out the specification. I can understand why language designers would want to continually add functionality to their languages to keep up with the times, but as you say: if something is hard to do in one language, it makes more sense to use another language. The beauty of having many languages available is that we can use the language that best fits the task.
It could be released next year as C++0A, or the year after that as C++0B… A 2015 target is still acceptable with that naming scheme. :)
I agree that C++ has been stretched as far as is reasonable. With the latest features there is too much going on invisibly, and sometimes I think I’m looking at a weird flavor of perl with the blizzard of puncutation.
What language do you favor for replacing C++ for use that space in software development where the goal is executable code not byte code to run in an VM, extreme performance (in skilled hands), and for implementing, not resting upon, the infrastructure other systems depend on?
Daren, C and C++ the only choices most people consider if they’re writing the kind of code you’re talking about.
The good thing about C++ is that *the ways to use it* also evolve (and probably faster than the language itself). Look at Boost. They are using C++ in ways Bjarne could not even imagine.
The important thing is not that the language evolves, the important thing is that we evolve the use of it and that is what eventually will drive the evolution of the language.
Need to get rid of the ISO committee, so Mr. Bjarne Stroustrup can take care of business in a timely manner. He is beeing slowed down by redtape , politicians and other forces in the industry.
IBM has been using C/C++ for 40 years. Its not broke & it doesn’t lack anything. This is logic, not marketing: there is no grey area. C/C++ is the definitive 3G language, the gold standard. Don’t break it, don’t wear it out like so many bad sequels, remakes, toxic ballmery derivative products, just because you can. If you want a new language, just do a new language and take your chances.
Exactly this bad logic is why Microsoft is going down. Just watch.
In other words, as far as programming language specifications are concerned, C++ is a mature, stable language.
Jim: Or maybe you could say C++ would be a mature, stable language if they’d quit tweaking it.
I don’t explain to people why they should decide for C++ in favor of Java, C# or Python.
They should rather try to explain me why I should decide for Java, C# or Python instead of C++. By this, most of them begin to realize that such a decision does not make sense.
I written Windows Mobile program with C/C++ for many years.
And there is no any forther mobile OS in C/C++. I feel sad…
I love C++. But it is not adapte the high level program…
Great post, obviously it has hit a nerve with the developer community.
I do think C++ have over-reached. These days I mostly work in Java, but if I have to fall to lower levels I’d rather work with C.
Keep up the good posting!
Rick
C++ is awesome, I am sure whatever one can do with Java, C# or Python can be done with C++ but I have my own doubts whether it is possible the other way. So just to make life easier… need C++0x or C++1x or whatever xx..
Sad sad,
They will loose the battle. For example look at string concatenation http://msdn.microsoft.com/en-us/library/d45bbxx4(v=vs.80).aspx and compare the .Net implementation with C++ at the bottom of this page. No comment needed. Yes it’s MS specific, but who will use this stuff? I’ll avoid C++ like a plague.
I’ll hope for them they don’t forget the usability as they move forward including complexity. We will see in 5 years.
Ben
Just because MS has invented some monstrous way to concatenate strings that uses C++, does not mean C++ is bad. String concatenation in standard C++ is as simple as
s1+s2
. It doesn’t get any easier.Its funny that you condemn anything on the grounds that Microsoft documentation about it presented some facts, badly, while true failed to convey any relevant meaning and actually confused you more. Thats what Microsoft documentation does, man. All of it. Always has. Just look at the docs for Office. Don’t look directly at Microsoft documentation. Besides wasting time you could spend doing something productive, it will actually make you unlearn potentially everything you know about the topic you look at. You can glance at it, but if you are looking for answers, don’t waste your time.
If you don’t stare at it too long the stupification does wear off, but I’ve seen people change careers just because of Microsoft documentation. I’ve said too much…
Use wcscat_s()
Android has a C++ interface but AIA is a homerun with bases loaded.
Regex is for fully OSHA compliant 5G crayola designers with safety Rails written in C, and thats not programming, thats coloring. Check out AIA.