Deberías aprender ... ¡todos ellos! O más bien Metà -Aprender todos los idiomas. Cuando conoces dos o tres idiomas, puedes aprender rápidamente cualquier idioma nuevo que sea similar a estos. Si conoce suficientes idiomas, los conoce "virtualmente" a todos y, lo que es más importante, comprende lo que es parte del lenguaje y lo que pertenece a la programación independientemente del lenguaje. En definitiva, los lenguajes específicos son irrelevantes.
Por lo tanto, es posible que desee aprender Java, C, Scheme, OCaml, Assembly (al menos dos arquitecturas), Forth y un poco de Prolog, no necesariamente en ese orden. El segundo idioma será el más difícil, ya que tendrás que aprender nuevos conceptos y olvidar conceptos que aprendiste con el primer idioma pero que resultaron estar equivocados. Después es fácil y solo se vuelve más fácil.
Luego, cuando se trata de una tarea de desarrollo específica, utilice el lenguaje más adaptado basado en la disponibilidad y el soporte de compiladores y bibliotecas, el conocimiento de los compañeros de trabajo, las restricciones políticas de la administración, etc. La flexibilidad de la mente es la clave. Saber muchos idiomas otorga esta flexibilidad.