Search code examples
c++programming-languages

What's the best way to move on to advanced C++?


And what's your suggestion to move to the next level of C++ programming for someone who may be called, well, an intermediate C++ programmer?

Intermediate Programmer: Understands ISO C++ reasonably well, can read and modify other's code with some luck, good with data structures and algorithms but not great

  1. Learn C++0x
  2. Learn what kind of assembly code gets generated for different construct types, maybe for x86
  3. Forget language nuances and get the fundamentals -- automata theory from somewhere like Sipser or Papadimitriou
  4. If you know OOP or at least think you do, consider how to incorporate functional programming skills with C++
  5. Work on something on the lines of a compiler and open-source like LLVM or GNU Toolchain
  6. The whole idea is busted -- the next level means more sophisticated data structures. So if you know AVL, consider learning left leaning red black trees et al

Now obviously nobody can do everything in this list without prioritizing, so we need some suggestion on what might be the best way forward.

NOTE: Thank you all for the very helpful responses.


Solution

  • To answer your specific questions:

    Learn C++0x

    You definitely need to do this. So possibly you have your answer right there...

    Learn what kind of assembly code gets generated for different construct types, maybe for x86

    I would say learn how to understand the assembly language the compiler generates, in outline if not in detail. You certainly should not be trying to predict what the compiler will do, however.

    Forget language nuances and get the fundamentals -- automata theory from somewhere like Sipser or Papadimitriou

    If it turns you on, I suppose...

    If you know OOP or at least think you do, consider how to incorporate functional programming skills with C++

    Of all of the paradigms C++ supports, functional programming is probably the worst supported - if you want to learn FP, learn Haskell (or whatever), not C++.

    Work on something on the lines of a compiler and open-source like LLVM or GNU Toolchain

    GNU is written in C, so it's not likely to boost your C++ skills - I know little about LLVM.

    The whole idea is busted -- the next level means more sophisticated data structures. So if you know AVL, consider learning left leaning red black trees et al

    RB trees are not much more sophisticated than AVL trees - same basic concept. If you understand the basic structures covered in a data structures textbook, I don't see the need to dig further, unless the subject particularly interests you.