I know the basic OOP-related topics
, RTTI, Templates
. Reverting back from Java' Collection Framework
, I tried to find such collections in C++
and found STL
, and am trying to use it in my projects (although I don't know them in and out). I searched and found recommendations for books like Accelerated C++, Effective and More Effective C++
.
But I am not sure what should be my progression path. I am looking for something like this -- Python-Progression Path:
def apprentice(): read(diveintopython) experiment(interpreter) read(python_tutorial) experiment(interpreter, modules/files) watch(pycon) def master(): refer(python-essential-reference) refer(PEPs/language reference) experiment() read(good_python_code) # Eg. twisted, other libraries write(basic_library) # reinvent wheel and compare to existing wheels if have_interesting_ideas: give_talk(pycon) def guru(): pass # Not qualified to comment. Fix the GIL perhaps?
- Discover list comprehensions
- Discover generators
- Incorporate map, reduce, filter, iter, range, xrange often into your code
- Discover Decorators
- Write recursive functions, a lot
- Discover itertools and functools
- Read Real World Haskell
- Rewrite all your old Python code with tons of higher order functions, recursion, and whatnot.
- Annoy your cubicle mates every time they present you with a Python class. Claim it could be "better" implemented as a dictionary plus some functions. Embrace functional programming.
- Rediscover the Strategy pattern and then all those things from imperative code you tried so hard to forget after Haskell.
- Find a balance.
It's a tough question, because what you really need is becoming good at what you do, and thus no authoritative list exists.
That being said...
Effective C++
by Meyers and C++ Coding Standards
by Sutter, you're not likely to understand everything if you're a beginner, so re-read them from time to time (it's also a good vaccine)boost::optional
, boost::variant
, boost::lexical_cast
, boost::numeric_cast
make your code safer and more idiomatic. Also poke the Boost String Algorithms library.I am still at that last part myself, so cannot comment on going further :)
At each step, you should write a lot of code, reading isn't sufficient, you need to experiment. Programming is not just technic, the architectural part of the program is extremely important in the field.
Oh and try and join (if only to read) an open-source project, nothing beats writing code and it's better when someone else reviews it :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With