high school:
basic
6502 assembly
a little FORTRAN
a little pascal, but didn't understand it
mit: scheme (sicp omfg)
symbolics lisp
common lisp
clu
pdp-10 assembly
connection machine
a little C
a little more FORTRAN
grad school / 90's: a lot of C (system programming / unix kernel hacking)
Obj-C / NeXTStep (reappears later as OSX / iOS platform)
MIPS assembly (branch delay slots ftw)
x86 assembly (segment registers wtf)
ALPHA assembly
a little C++, but hated every minute of it
Visual Basic
dotcom years to present: Java
C#
SQL (Oracle, Sybase, MSSQL, DB2, MySQL, etc)
Python (scheme without parens!)
ETL platforms (visual programming environments for data manipulation)
PHP
Obj-C / iOS (oh hi, you're back)
Groovy / Grails
a little Ruby / Rails
I'm a little weird because I did a lot of Lisp early, and then became an OS hacker. Once you can find single-line errors in assembly code, everything else is easy.I learned a lot doing C and assembly; especially the importance of working clean, checking results, and being careful with pointers. Lisp teaches you how good the world can be; C and assembly teach you how to cope with how bad it really gets. However, I'm not sure I would recommend a new person to spend as much time on this since the world has moved to languages with garbage-collected heap storage.
I never cared for the functional languages (ML, etc), mostly because I found the functional programming zealots to be such insufferable bores.
If I were starting today, I would start with Java or Ruby, since they are modern OO languages with good deployment options. Once you know these, it's easier to "downgrade" to simpler languages like Python, PHP, and JS.
But the real takeaway is that you should learn them all.