The real question is "What is the best way to learn programming in insert language here."
Hear (or reading) that question reminds me of an old joke:
To my way of thinking languages are just syntax. Programming discipline is more important to me at least than syntax.
Regardless of the programming language the best way to master it as space_monk points out is to spend lots of time writing code. Learning programming technique independent of the language and applying those techniques to the language at hand requires practice. And lots of it.
I'm currently writing software to perform temperature regulation of a mash tun during grain mashing to make beer. It's being written in C++ against an Arduino embedded processor. I chose the Arduino because of the built in "sensors" that make my life easier as well as the fact there is a lot of public domain stuff out there to do what I need so I don't have to reinvent the wheel. Sort of analogous to CPAN.
Peter L. Berghold -- Unix Professional
Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg