in reply to Why learn another language?

A language that doesn't affect the way you think about programming is not worth knowing.
-- Alan J. Perlis

Languages follow varying paradigmata. Each one allows you to approach problem from a different conceptual perspective. The fewer paradigmata you know, the more conceptual blind spots you have - all the world looks like nails if you are a hammer.

In Teach Yourself Programming in Ten Years, Peter Norvig gives his recipe for programming success, and one of the points is:

Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).

Although I'd rather suggest Smalltalk as the language to teach class abstraction paradigma:

I made up the term object-oriented, and I can tell you I didn't have C++ in mind.
-- Alan Kay

Java and C++ make you think that the new ideas are like the old ones. Java is the most distressing thing to hit computing since MS-DOS.
-- Alan Kay

Makeshifts last the longest.