Sign in to follow this  
Promit

C++0x no more

Recommended Posts

I'm a little surprised nobody posted this, especially after Slashdot picked it up. The DDJ put up an interview with Stroustrup discussing the removal of concepts from C++0x. This in itself is kind of a big deal, if you've been following the 0x proposals. But there's a little section on the last page:
Quote:
Even after cutting "concepts," the next C++ standard may be delayed. Sadly, there will be no C++0x (unless you count the minor corrections in C++03). We must wait for C++1x, and hope that 'x' will be a low digit.
Yes, C++0x just slipped its release date into at least 2010 and maybe later than that. Oops. P.S. If anybody recommends "C++0xA" I will beat you senseless.

Share this post


Link to post
Share on other sites
I'm not really surprised myself. Concepts was a pretty big feature, and C++ is a design-by-committee language. It's really hard to make big changes in design-by-committee projects.

It's also not surprising that C++0x will be delayed now that concepts have been removed. So much of the draft assumed the presence of concepts.

Share this post


Link to post
Share on other sites
Quote:
Original post by Codeka
It's also not surprising that C++0x will be delayed now that concepts have been removed. So much of the draft assumed the presence of concepts.
As has been discussed on various forums (even in the DDJ article, I remember), the delay isn't due to removal of concepts – albeit work towards making concepts to the standard required time from the members, naturally. There's some discussion visible at The Rise and Fall of C++0x Concepts (ignore the author, see the comments) and on ACCU news group straight after Frankfurt meeting by some members who were there. The main point being that Pete Becker just reverts to the pre-concept document and applies the other changes. I remember seeing an estimate of two weeks for the work.

There has been discussion also on comp.lang.c++* and comp.std.c++ news groups, but I haven't been following these. I feel proper concurrency support is more important at this point. Related to this, a small plug if you allow, Antony Williams (the chap responsible of Boost.Threads also) asked for help in evaluating and testing his current implementation of the new C++ concurrency support. It was a while ago, but perhaps he still likes to see more people involved. Or perhaps some readers here are just interested (he has a book concerning the subject matter in the makings also).

Quote:
Original post by Promit
I'm a little surprised nobody posted this, especially after Slashdot picked it up.
Likewise, as C++ and related is widely discussed here.

I wonder the longer term implications of this and if they are so problematic. VS2010 and gcc both seem to have unofficial support for numerous features still in the draft. In addition to concepts I would have liked better support for modularity, building etc. (i.e. modules). I'm not in interaction with C++ code bases daily these days and every time I do, the build model just feels so clunky.

[Edited by - Naurava kulkuri on July 24, 2009 6:26:45 AM]

Share this post


Link to post
Share on other sites
Quote:
Me too, especially here.

This forum is not really the place where people code in modern C++, quite the opposite.
Getting posters to use the standard library is already quite a feat even though it's tens of years behind.

As for concepts, it's not the great loss everyone is making it to be. While useful, simple and practical, it is still only syntactic sugar, since SFINAE extended to expressions already offers the ability to see whether a type fulfills a given concept expressed as a set of expressions.

[Edited by - loufoque on July 24, 2009 11:47:13 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by loufoque
This forum is not really the place where people code in modern C++, quite the opposite.
Perhaps many of the people are just getting their hands on and aren't that acquaintant with standard library concepts? Combined with the usual "tinkering" and concentrating early on to make "code fast", as far as I see, are contributing factors. I don't see problems with tinkering if one enjoys it. The more frequent posters here usually note quite vigorously those tinkeres to concentrate on more important matters if they seem to miss the point they're making. I'd like think it carries to their later careers so that people aren't tinkering in commercial projects and instead concentrate on getting maintainable code that is otherwise good enough for its purpose. :)

As an aside, I'm not that familiar with all the library things there are mainly because I've learnt C++ mostly before and around 2000 and they weren't that much around during that time period. I'm not posting that much code here, but if I did, there probably were a better way of doing things than my code. :-P

[Edited by - Naurava kulkuri on July 24, 2009 6:07:24 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by Naurava kulkuri
As an aside, I'm not that familiar with all the library things there are mainly because I've learnt C++ mostly before and around 2000 and they weren't that much around during that time period. I'm not posting that much code here, but if I did, there probably were a better way of doing things than my code. :-P

The C++ standard was proclaimed November 17, 1997. It was around in draft form for a couple of years before that, essentially unchanged (except for some minor wording an std::auto_ptr). The STL predates that by a few years yet again. I suspect the C++ standard library has been around longer than most of the posters here have been able to read. What was the excuse for not using it again?

Share this post


Link to post
Share on other sites
Quote:
Original post by Bregma
The C++ standard was proclaimed November 17, 1997. It was around in draft form for a couple of years before that, essentially unchanged (except for some minor wording an std::auto_ptr). The STL predates that by a few years yet again. I suspect the C++ standard library has been around longer than most of the posters here have been able to read. What was the excuse for not using it again?

Visual C++ 6.0...

Share this post


Link to post
Share on other sites
Even without concepts, 0x is still a bit of a sow's ear. The limitations of the stack/heap memory model became uncomfortably clear with the introduction of lambdas (and that syntax... yikes), and the strong enums is a poor substitute for real algebraic types. There's plenty of great stuff coming up, like nullptr and threads and smart ptrs and template typedefs, and I'm glad for those, but C++ really is not making the transition to modern language well. It's starting to feel a little bit like OpenGL.

Share this post


Link to post
Share on other sites
Quote:
Original post by loufoque
This forum is not really the place where people code in modern C++, quite the opposite.
Getting posters to use the standard library is already quite a feat even though it's tens of years behind.
Quote:
Original post by Bregma
I suspect the C++ standard library has been around longer than most of the posters here have been able to read. What was the excuse for not using it again?
loufoque spends a little too much time chastising newbies over their dslike of the STL - bitterness is sure to result eventually [wink]

Share this post


Link to post
Share on other sites
What I don't understand is last summer Sutter posted in his blog and made it clear C++0x was feature complete. They would meet two more times, but they could only fix bugs and wording to make things more clear. Now they're dropping a major feature? Doesn't sound much like feature complete to me.

Now this DDJ article ends with saying C++1x is feature complete. Really now?

Share this post


Link to post
Share on other sites
Quote:
Original post by Bregma
Quote:
Original post by Naurava kulkuri
As an aside, I'm not that familiar with all the library things there are mainly because I've learnt C++ mostly before and around 2000 and they weren't that much around during that time period. I'm not posting that much code here, but if I did, there probably were a better way of doing things than my code. :-P

The C++ standard was proclaimed November 17, 1997. It was around in draft form for a couple of years before that, essentially unchanged (except for some minor wording an std::auto_ptr). The STL predates that by a few years yet again. I suspect the C++ standard library has been around longer than most of the posters here have been able to read. What was the excuse for not using it again?


They learned C before C++ and their getting-acquainted-with-the-standard-library phase was spent in stdlib.h, stdio.h, string.h, and so on. At least that's my excuse; by the time I got to C++ I was using it with other libraries like Allegro and Glide my ratio of std library calls to other API calls went way down. I really can't say my knowledge of the C++ std lib is complete either. I pick up something new now and again, though sometimes it doesn't stick until I have a chance to use it in practice.

Share this post


Link to post
Share on other sites
Quote:
Original post by Bregma
What was the excuse for not using it again?
Compilers for Symbian and some embedded systems and consequently code bases in which they weren't used. Besides that, I wasn't that old in programming before 2000 and I was busy just trying to cram all the required domain knowledge into my head. C++ standard library is great stuff (considering C++), everyone should learn it if programming in C++.

Share this post


Link to post
Share on other sites
Quote:
Original post by Bregma
The C++ standard was proclaimed November 17, 1997. It was around in draft form for a couple of years before that, essentially unchanged (except for some minor wording an std::auto_ptr). The STL predates that by a few years yet again. I suspect the C++ standard library has been around longer than most of the posters here have been able to read. What was the excuse for not using it again?


You should know that its a popular trait among programmers to do everything themselves. I wouldn't say for most its not that they don't know about it, they think they can do it better with their own code. I stuck with C for a long time because I thought I could do things better without classes. Now I'm using C# and in two weeks of my spare time I've got a mostly feature complete WYSIWYG editor using SlimDX. I can't believe how 'lazy' I've gotten. In C I probably wouldn't have gotten half of that done by now. A few years ago I would have wrapped the DX code myself instead of using SlimDX. I've finally gotten to the point in my carrer where I look for libraries to do everything for me. Sometimes that is a hard habit to break and add to fact that most people here don't have real world experience its not that hard to figure out why they don't use things like STL and boost.

Share this post


Link to post
Share on other sites
Aw, when I saw the thread title I thought it was some overdramatic "C++0x is ruined! We might as well stick with C++03 now" thread.

And then it turns out you're just making a perfectly reasonable point about the delay turning it into C++1x.

How boring... [grin]

Share this post


Link to post
Share on other sites
Quote:
Original post by jtagge75
I wouldn't say for most its not that they don't know about it, they think they can do it better with their own code.


I think the main reason for writing your own stuff is that on some occasions: <time to set up and learn how to take advantage of library> >= <time to write and test own library>. It's usually not something you *know* before you start implementing a design, but you live and learn.

Share this post


Link to post
Share on other sites
Quote:
Original post by trasseltass
I think the main reason for writing your own stuff is that on some occasions: <time to set up and learn how to take advantage of library> >= <time to write and test own library>.
Niet, nada, no. It is sometimes the case that learning to use an existing, mature library takes longer than writing a naive implementation of some facet of that library. It is almost never that case that you could implement a replacement in less time than learning to use the existing library.

If you don't believe me, try it yourself: implement a type-generic linked-list in C++, provide carefully instrumented tests to demonstrate that it is both correct and exception safe, and do so in less than the 30 minutes it takes to teach a first-year student (with no background in C++) how to use std::list. And note that you still have only a fraction of std::list's functionality - no allocators, reverse iterators, algorithms, years of stress testing across multiple OS/platforms/hardware, etc.

A more likely candidate for why people avoid the std library would be misinformation. The number of threads on gamedev alone arguing against the use of the std library (many fewer in the last few years, thank goodness), not to mention the countless "Learn C++ in N days" tutorials and books that entirely fail to mention the std library... It is a wonder that *any* newcomers use the standard library.

Share this post


Link to post
Share on other sites
In my experience, beginners tend to think that using the STL results in programs that are not "real C++", for whatever that means. It's even worse with Boost.

Back when I refused to use Boost, it was simply a lack of information. I had no idea who was behind Boost, and it felt like "cheating" to use it, because reading programs incorporating parts of Boost didn't "feel like C++" to me.

Most reasons for not using the STL or Boost are completely, well, unreasonable.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this