Languages every programmer should at least have some understanding of:
Lisp - because it's lisp, duh Smalltalk - to actually understand OO Prolog - it requires a completely different thought process, for better or worse Haskell - for understanding useful type systems and functional programming C - because it as low-level as you should ever need
Just my 2 cents