Question

OK, I am considering of getting into c++ development in coming months (there is no set date). I am vaguely familiar with the language (primarily C), as well as some basics of OO, MI, templates, exceptions, patterns, used STL. And now I am at the point in time where I would like to master the language in depth. And the natural question is whether I should
start with current C++03 or C++0x standard.

Please suggest what the best way to go from a user to guru, given that new standard is almost here, and likely to remain for many years to come.

Thanks

Was it helpful?

Solution

My recommendation is to start out in the middle. Start with C++03, but check the features and C++0x libs that some compilers are already offering each so often. As of now, C++03 is THE standard (not only formally, but most code you will find will be strictly C++03).

Now, if you intend on learning go for the best: start quickly with STL basics and jump into Boost libraries right away. Learn templates the whole way, read on metaprogramming. Modern C++03 usage will get you right on track for C++0x.

OTHER TIPS

Learn the older standard C++03. C++0X is still a couple years away (at least) from even being ratified as a standard. Once it's standardized, it'll take time before any conforming implementations appear that support all of its features, and it'll take an even longer time before C++0X implementations become significantly popular and oft-used.

In my opinion, learn C++03 is more practical. If you don't mind learning new features but can use partial for several years, C++0x is better. Good news is g++ new version and vc++2010 already implemented parts of new c++0x features.

Learning the new C++0x features is a great way to learn more about C++03 in depth because you see how C++03 works, the problems with it, and what c++0x proposes to do to solve those problems.

I had this experience recently learning about the new rvalue references and move semantics. In C++03 there's a lot of unnecessary temporary creation and copying in expressions, learning about why c++03 has this problem and how C++0x solves this problem was pretty enlightening and informed my current C++ development.

It's going to be a few years before C++0x compilers are common. So at the moment, you don't have much choice. Learn C++03, and then you can learn the new stuff separately, when the time comes. The fundamental differences aren't that great. 0x is mostly a matter of new features being bolted on, and existing features being generalized and streamlined. Knowledge of C++03 will still be applicable.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top