I believe the best way to learn programming is to do it by ourselves. There are two ways, I guess:
- Master the syntax, then apply to different situations or systems to understand them further.
- Understand completely the systems that you would like to program and whilst doing so, you can learn the syntax.
I learned Fortran using the latter. :)