I would like to learn programming but haven't been able to get started. Advice appreciated, both high-level (you should try learing language X) and low level (you can find a program that will run language X here), the latter has been a particular problem for me, I don't really know how this sort of thing works.
I am currently studying maths and physics, and I have a particular talent for the former, so I would probably do well with a language that plays to that strength. My only actual experience with programming was when my father let me play around with Jython a bit when I was about 13, I had some fun calculating prime numbers and approximating pi but never got any farther.
Thanks in advance for all suggestions.
Neat online classes! I didn't know about those.
Also, there is a free online version of the wizard book (which is the nickname for the Structure and Interpretation of Computer Programs based on the cover with the guy in a crazy turban with the lambda symbol in the flash of light next to him).
If you want to jump in directly, my recommendation would be to download a Lisp or Scheme interpreter (like Gauche, for example), fire it up, and then read through the wizard book, typing in all the example code by hand. In my experience, practicing the manual production of code is critical to developing fluency.
Finally, I kind of feel bad about recommending this without a half-warning... Functional programming is beautiful, but depending on where you live and the rest of your educational background, it may be relatively hard to use it to pay the bills and you might be setting yourself up to always be dissatisfied with the tools you actually use day to day. Lisp has a minor reputation for appealing to a certain kind of person who is really smart and technically proficient, but not necessarily the best team player. I'm not sure, but I suspect the rarity of Lisp jobs is related to this.
If you want to earn money from coding, it may be better for you to learn a general programming language like C++, Java, Python, C#, Ruby, or maybe Erlang (which is rare, but has relatively high paying jobs because the coding for it is frequently associated with critical and expensive machinery like telephone networks). SQL is another kind of "code" that isn't really a full blown programming language, but that can be useful for set processing using a language inspired by predicate logic.