- Joined
- 5/2/06
- Messages
- 12,165
- Points
- 273
What do you think of C++0x?
That's a (to me) amazingly frequent question. It may be the most frequently asked question. Surprisingly, C++0x feels like a new language: The pieces just fit together better than they used to and I find a higher-level style of programming more natural than before and as efficient as ever. If you timidly approach C++ as just a better C or as an object-oriented language, you are going to miss the point. The abstractions are simply more flexible and affordable than before. Rely on the old mantra: If you think of it as a separate idea or object, represent it directly in the program; model real-world objects, and abstractions directly in code. It's easier now: Your ideas will map to enumerations, objects, classes (e.g. control of defaults), class hierarchies (e.g. inherited constructors), templates, aliases, exceptions, loops, threads, etc., rather than to a single ``one size fits all'' abstraction mechanism.
My ideal is to use programming language facilities to help programmers think differently about system design and implementation. I think C++0x can do that - and do it not just for C++ programmers but for programmers used to a variety of modern programming languages in the general and very broad area of systems programming.
In other words, I'm still an optimist.
When will C++0x be a formal standard?
The first draft for formal comments was produced in September 2008. This is the one that's currently available for comments. After about another year's work -- probably September 2009 -- the committee will vote out another CD and (after receiving comments) hopefully a final draft for the national standards bodies to vote on. That final draft (FDIS) is likely to become the new standard with only typographical changes a few months later.
By October 2009, we should know exactly what the new standard will look like and then we can discuss whether that language should be referred to as C++10 or C++0B or C++oxC or whatever. Personally, I prefer plain C++ and to use a year marker only when I need to distinguish it from previous versions of C++, such as ARM C++, C++98 and C++03. For now, I bow to convention and still use C++0x for the next version. Think of 'x' as hexadecimal.
When will compilers implement C++0x?
Currently shipping compilers (e.g. GCC C++, IBM C++, and Microsoft C++) already implement some C++0x features. For example, it seems obvious and popular to ship all or most of the new standard libraries.
I expect more and more features to become available with each new release. Most likely, relatively isolated features, such as auto, lambda, and strongly typed enums, to be among the first available. I do not care to guess when every compiler will provide all of C++0x -- undoubtedly, that will take years -- but I note that every C++0x feature has been implemented by someone somewhere so there is implementation experience available for implementers to rely on.
C++0x FAQ
That's a (to me) amazingly frequent question. It may be the most frequently asked question. Surprisingly, C++0x feels like a new language: The pieces just fit together better than they used to and I find a higher-level style of programming more natural than before and as efficient as ever. If you timidly approach C++ as just a better C or as an object-oriented language, you are going to miss the point. The abstractions are simply more flexible and affordable than before. Rely on the old mantra: If you think of it as a separate idea or object, represent it directly in the program; model real-world objects, and abstractions directly in code. It's easier now: Your ideas will map to enumerations, objects, classes (e.g. control of defaults), class hierarchies (e.g. inherited constructors), templates, aliases, exceptions, loops, threads, etc., rather than to a single ``one size fits all'' abstraction mechanism.
My ideal is to use programming language facilities to help programmers think differently about system design and implementation. I think C++0x can do that - and do it not just for C++ programmers but for programmers used to a variety of modern programming languages in the general and very broad area of systems programming.
In other words, I'm still an optimist.
When will C++0x be a formal standard?
The first draft for formal comments was produced in September 2008. This is the one that's currently available for comments. After about another year's work -- probably September 2009 -- the committee will vote out another CD and (after receiving comments) hopefully a final draft for the national standards bodies to vote on. That final draft (FDIS) is likely to become the new standard with only typographical changes a few months later.
By October 2009, we should know exactly what the new standard will look like and then we can discuss whether that language should be referred to as C++10 or C++0B or C++oxC or whatever. Personally, I prefer plain C++ and to use a year marker only when I need to distinguish it from previous versions of C++, such as ARM C++, C++98 and C++03. For now, I bow to convention and still use C++0x for the next version. Think of 'x' as hexadecimal.
When will compilers implement C++0x?
Currently shipping compilers (e.g. GCC C++, IBM C++, and Microsoft C++) already implement some C++0x features. For example, it seems obvious and popular to ship all or most of the new standard libraries.
I expect more and more features to become available with each new release. Most likely, relatively isolated features, such as auto, lambda, and strongly typed enums, to be among the first available. I do not care to guess when every compiler will provide all of C++0x -- undoubtedly, that will take years -- but I note that every C++0x feature has been implemented by someone somewhere so there is implementation experience available for implementers to rely on.
C++0x FAQ