I'd say some variant of LISP or Haskell for really getting an understanding of functional programming - it'll change how you approach problems everywhere. LISP macros are also something really worth learning.
C++ to learn about how memory management really works, as well as learning how to mix multiple paradigms in one language (functional, imperative, object oriented, and others all squished together in an obscene mixture that turns out to be quite useful in large-scale projects).
Java C# (or SmallTalk if you're feeling adventurous) to learn OOP.
Learn something like Erlang to learn about parallel processing techniques - this is something that will really pay off in the coming multi-core world.