It is not the languages rather the paradigms you should know:
- procedural (like C, Pascal)
- object-oriented (like Java, C++, Smalltalk)
- functional (like Lisp, ML, Scala)
If you understood one of these paradigms in one language, it is easy to learn another language in the same paradigm. And there are even more fields specially supported by languages that are important to understand:
- parallelism (in Erlang or Scala)
- declarative templates (e.g. in C++ or Prolog)
- dynamic languages (e.g. JavaScript)
At at last you should always know what goes on under the hoods, so you better have a look at assembler.