I recommend Python as well. Python has clean syntax, enforces good indentation and code layout, has a large number of very useful libraries, doesn’t require a lot of boilerplate to get going but still has good mechanisms for structuring code, has good support for a variety of data structures built in, a read-eval-print loop for playing around with the language, and a lot more. If you want to learn to program, learn Python.
(Processing is probably very good, too, for interesting you in programming. It gives immediate visual feedback, which is nice, but it isn’t quite as general purpose as Python. Lua I know very little about.)
That being said, Python does very little checking for errors before you run your code, and so is not particularly well suited for large or even medium sized, complex programs where your own reasoning is not sufficient to find errors. For these, I’d recommend learning other languages later on. Java is probably a good second language. It requires quite a bit more infrastructure to get something up and running, but it has great libraries and steadily increasing ability to track down errors in code when it is compiled.
After that, it depends on what you want to do. I would recommend Haskell if you are looking to stretch your mind (or OCaml if you are looking to stretch it a little less ;-)). On the other hand, if you are looking to write useful programs, C is probably pretty good, and will teach you more about how computers work. C++ is popular for a lot of applications, so you may want to learn it, but I hate it as an unprincipled mess of language features half-hazardly thrown together. I’d say exactly the same thing about most web languages (Javascript (which is very different from Java), Ruby, PHP, etc.) Perl is incredibly useful for small things, but very hard to reason about.
(As to AngryParsley’s comment about people recommending their favorite languages, mine are probably C, Haskell and OCaml, which I am not recommending first.)
I recommend Python as well. Python has clean syntax, enforces good indentation and code layout, has a large number of very useful libraries, doesn’t require a lot of boilerplate to get going but still has good mechanisms for structuring code, has good support for a variety of data structures built in, a read-eval-print loop for playing around with the language, and a lot more. If you want to learn to program, learn Python.
(Processing is probably very good, too, for interesting you in programming. It gives immediate visual feedback, which is nice, but it isn’t quite as general purpose as Python. Lua I know very little about.)
That being said, Python does very little checking for errors before you run your code, and so is not particularly well suited for large or even medium sized, complex programs where your own reasoning is not sufficient to find errors. For these, I’d recommend learning other languages later on. Java is probably a good second language. It requires quite a bit more infrastructure to get something up and running, but it has great libraries and steadily increasing ability to track down errors in code when it is compiled.
After that, it depends on what you want to do. I would recommend Haskell if you are looking to stretch your mind (or OCaml if you are looking to stretch it a little less ;-)). On the other hand, if you are looking to write useful programs, C is probably pretty good, and will teach you more about how computers work. C++ is popular for a lot of applications, so you may want to learn it, but I hate it as an unprincipled mess of language features half-hazardly thrown together. I’d say exactly the same thing about most web languages (Javascript (which is very different from Java), Ruby, PHP, etc.) Perl is incredibly useful for small things, but very hard to reason about.
(As to AngryParsley’s comment about people recommending their favorite languages, mine are probably C, Haskell and OCaml, which I am not recommending first.)