Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

How should I bring some very rusty C++ up to date, as I'm sure the language and best practices have evolved? I realise this might be close to being off-topic so let my clarify some details. About 10 years ago I think I was quite a good C++ programmer, I'd devoured the Scott Meyers books, I could solve the puzzles in the lint adverts in Dr. Dobbs. I was probably a bit of a language lawyer. I've been programming mostly Java, some python for the last 10 years so my OO skills are still up to scratch. But having joined a company where C++ is common I've realized I have to admit to myself I am both really rusty, and there are language features now which are either new or a lot more common than I remember - things like namespaces etc.

I realise reading and writing code (especially pairing) is a good way to get up to speed, but is there any other resource people would recommend in this to give me an accelerated head start. Book? Web-page? Tutorials?

To summarize:

  • Recommendations for C++ specific refresher resources?
  • Not OO/programming generally.
  • Things in addition to just reading and writing code.
share|improve this question
add comment

4 Answers

up vote 9 down vote accepted

If you already "devoured Scott Meyers books", then you are a lot further that the average guy that did C++ 10 years ago (IMHO). Get the 3rd edition of Effective C++ (and the C++ Coding Standards book by Sutter/Alexandrescu) to get a short refresh, and, really, you should be ready to go.

The recommendations in these books (originally 2005 I think) are just as valid today as they've been then.

Oh, and install boost if you haven't already.

Lucky time for you to restart in C++, as I am very sure there will be lots of restart-type resources and books this year and the next when the C++11 standard starts to settle in.

share|improve this answer
    
Excellent recommendations. Scott Meyers came to our company last year and gave all our developers a two-day refresher course on modern C++ techniques. He knows how C++ works in the real world and isn't just another academic with theories. –  Karl Bielefeldt Sep 30 '11 at 13:09
add comment

1) start with a modern compiler which has c++11 features (assuming your work will require that sooner than later, if not already)

2) take existing programs (perhaps your pet projects) and update or extend them to use more modern libraries (such as c++11 standard libraries or boost).

3) read up on the latest C++ features. there are also number of good books. if you have not yet read Modern C++ Design, i'd recommend it. it's a classic for advanced designs using c++ techniques which were introduced and honed during your absence.

that's a starting point.

share|improve this answer
add comment

Nick,

I'd suggest you get involved with an open source project. Have you looked at sourceforge ? This could apply to any language, but the key benefit here is learning from other developers while contributing to a software project. You can pick up some interesting styles and use of language features from working on an open source project. Some good, some bad, some....just plain weird :).

share|improve this answer
4  
Maybe I've just been unlucky, but the open source projects I've seen contained some of the most horrible code I've ever encountered - they could be used as perfect examples of how to not write C/C++. So if you decide to peek at open source for the sake of learning, I would suggest that you pick a project that a lot of programmers are actively involved in. Such projects are far more likely to have good quality code in them. –  user29079 Sep 30 '11 at 12:29
add comment

Do some code kata in c++: hanoi tower, ring buffer, and that sort of things. Doing it is going to be a lot more efficient than just reading books about it -- although, reading books will help you learn things you did not know.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.