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.
One thing I'd emphasize is that absolute beginners are often intimidated by the tools themselves. Faced with the incomprehensibly obscure console commands or IDEs with myriads of mysterious-looking buttons and dialog boxes, it can be hard to figure out how to even start writing simple beginner-level programs, especially if the language itself requires that even the simplest programs must include some obscure-looking code for initialization, declarations, imports, etc. Thankfully, these days you can probably find good tutorials on the web that should make these initial steps less scary.
As for the beginning language, that strongly depends on what your goals are. To become a good generalist, I would recommend learning C and assembly (for whatever architecture; x86 is probably not a good choice for beginners compared to e.g. MIPS), and also studying the inner workings of compilers (i.e. how parsers, optimizers, and code generators work, and also how various high-level language constructs map onto the concrete memory layout and machine code patterns). When faced with a novel language, this should allow you to immediately figure out what's the rationale behind its various features that would otherwise look arbitrary and strange. Also, in my experience, moving from C to almost any imperative language, including object-oriented languages, is a fairly easy transition. (I have very little experience with functional languages, but these also have to run on top of virtual machines written in imperative ones.)
Of course, if you have more specific goals in mind, like focusing on web programming or numerical calculations, a different and less generalist approach is probably advisable.