Something I want to reccommend:
Don't concentrate too much on learning "a language"; concentrate on learning the concepts behind the language, which tend to remain the same for most high-level languages (lisp not included!):
- Variables
- Scope
- Looping
- Control
- Etc.
Also study up on both "event-driven" programming, recursion, and OOP (object-oriented programming) concepts.
At a certain point, if you pay attention to what you are doing, and stick with it long enough (constant learning, constant programming, over many years), you'll come to realize that regardless of the language, they all pretty much function the same (even lisp, in its own loveable way). Most high-level languages descend from 2-3 historical roots: COBOL, Fortran, and C (one could throw Pascal into that list as well). You won't find many recent COBOL variants, though (DBC was probably one of the last environments, used in business and vertical-market coding, mainly). But Fortran begat BASIC, and C begat so many follow on languages it isn't funny.
Ultimately, it all boils down to assembler and machine code, so don't neglect your education there, either (some would reccommend you start there, actually - but that is a difficult proposition on modern PCs, unless you stick with 16-bit coding; fortunately, you can learn on microcontrollers as well). If you are really interested, study the history of that as well (ENIAC was an interesting example of a Turing-complete machine that used base-10, coupled with a "wired" program; Babbages Analytical Engine was interesting in that it implemented a version of microcode using a pegged drum, operated on base-10 as well, plus it was Turing-complete before Turing was born - all that and Ada Lovelace managed to write working code without any hardware; talk about hacking!).
As you can obviously tell, I love computers and their history a little too much (but I really do find the field intimately and infinitely fascinating)...
