Vous devriez les apprendre... tous ! Ou plutôt méta -apprendre toutes les langues. Lorsque vous connaissez deux ou trois langues, vous pouvez rapidement apprendre toute nouvelle langue qui leur est similaire. Si vous connaissez suffisamment de langues, vous les connaissez "virtuellement" toutes, et, plus important encore, vous comprenez ce qui fait partie du langue et ce qui relève de la programmation indépendamment de la langue. En définitive, les langues spécifiques ne sont pas pertinentes.
Vous pourriez donc vouloir apprendre Java, C, Scheme, OCaml, Assembly (deux architectures au moins), Forth et un peu de Prolog, pas nécessairement dans cet ordre. Le deuxième langage sera le plus difficile, car vous devrez à la fois apprendre de nouveaux concepts et oublier des concepts que vous avez appris avec le premier langage mais qui se sont avérés erronés. Après, c'est facile et ça ne fait que s'améliorer.
Ensuite, lorsqu'il s'agit d'une tâche de développement spécifique, utilisez le langage le plus adapté en fonction de la disponibilité et du support des compilateurs et des bibliothèques, des connaissances des collègues, des contraintes politiques de la direction, etc. La flexibilité d'esprit est la clé. La connaissance de plusieurs langues confère cette flexibilité.