Você deve aprender ... todos eles! Ou melhor, meta- aprenda todas as línguas. Quando você conhece dois ou três idiomas, pode aprender rapidamente qualquer novo idioma semelhante a esses. Se você conhece idiomas suficientes, "virtualmente" conhece todos eles e, mais importante, entende o que faz parte da linguagem e o que pertence à programação independentemente da linguagem. Por fim, idiomas específicos são irrelevantes.
Portanto, você pode querer aprender Java, C, Scheme, OCaml, Assembly (pelo menos duas arquiteturas), Forth e um pouco de Prolog, não necessariamente nessa ordem. A segunda língua será a mais difícil, porque você terá que aprender novos conceitos e esquecer os conceitos que aprendeu com a primeira língua, mas que acabou por estar errado. Depois é fácil e só se torna mais fácil.
Em seguida, ao lidar com uma tarefa de desenvolvimento específica, use a linguagem mais adaptada com base na disponibilidade e suporte de compiladores e bibliotecas, conhecimento de colegas de trabalho, restrições de política do gerenciamento e assim por diante. A flexibilidade da mente é a chave. Conhecer muitos idiomas concede essa flexibilidade.