in reply to Learning Programming

Learning programming and learning programming languages are two completely different things. But for both, study and practice (and practice and practice) are usually the best ways.

To learn how to program:

Pick any good programming language (perl, scheme, C, logo, smalltalk, etc) and a good intro book on programming (preferrably one not tied to a particular language) and start playing with the language while working through the book. Work on things that interest you, etc. The language will give you experience, showing you what really happens, and the book will give you some theory to back that experience.

Once you are comfortable doing some programming, switch to a different language -- preferrably something much different, like C if you started with scheme, ML if you started with perl, tcl if you started with ADA, etc. Then start working through some of what you did earlier in the new language.

Languages differ in more than just syntax. Languages differ in style, differ in vocabulary, and differ in how they encourage you to get things done. Learning more than one programming language (and being moderately fluent in it) really helps you be a well-rounded programmer.

Once you've worked through the intro book, go with a heftier, intermediate book -- like Sedgewick's "Algorithms", or Knuths "Art of Computer Programming", or the big white algorithms book from MIT Press (book is at home, so I can't read the authors). Read through those books, learning about things like "Big-O" notation, divide-and-conquer, dynamic programming, and other ideas and techniques that will help turn you from a good programmer into a great one.

Does that help?

As for learning a language itself... Get a manual and start playing. Do simple stuff first, until you get comfortable with that, then expand your skills with your comfort level. And definately read other people's code in that language. Languages have distict syntax&grammar, vocabulary, idiom, and thought-processes. When you start learning, say, perl, you will have to learn first the syntax and grammar, the vocabulary will come to you as you work with the language (but you may still be looking details up years later). Once you start using and understanding idiom (which will take experience in the language), you are well on your way to thinking in that language.

And then learn another language. The experience will change how you think about programming, and it will change how you program in -both- languages for the better.

Just my thoughts.