I still prefer books over learning over the internet. The internet is a source for quick fixes, but with the good books (and you’re absolutely right, most programming books are an utter waste of paper) I don’t just get whati should stick into my code to make it work, but rather the prinicples upon which the language is based, how it works, and a list of commands, variable types, and their properties which allow me to play about and instantly grasp what i am doing.
In fact, thinking more on it, I think you’ll find that the best programming books consist of that: a general vocabulary of the language in question, and the general principals on howthe language works.
You can’t get by with just a sheet of terms such as print, else, if, or, etc… without understanding the logic behind it, any more than you can get by knowing that a language was developed to give you a variety of means to object oriented tasks, without knowing the difference, for example between the variables “int” and “string”.