In reply to a crap climber:
Depends what you want to do, I guess.
For general utility programming (getting stuff done) I find Python very useful, and it is of course free and very well documented with tonnes of libraries.
www.python.org
If you wanted to add some real computer science to your brain, I'd suggest this as a project:
http://mitpress.mit.edu/sicp/ (all online, structure and interpretation of computer programs). It's based on scheme (a Lisp dialect). You won't see many job ads looking for scheme/Lisp, however that book teaches a lot about the fundamentals of algorithms, and you can transfer those insights to other languages.
Another approach would be to think about what you'd want to do with programming (e.g. mobile phone apps, web apps, data analysis, embedded device programming, games programming, ???), and then look for languages that are suited to that or that are popular in that domain right now.
Big thing, I'd say, is to have a project or something you want to achieve. That lets you set goals to work towards. Doesn't need to be big, a lot of small ones are just as good or better. Otherwise you're just reading about programming and working through exercises, and it's kinda hard (in my experience) to stick with that.