Вы должны изучить ... все из них! А точнее мета- изучение всех языков. Когда вы знаете два или три языка, вы можете быстро выучить любой новый язык, который похож на эти. Если вы знаете достаточно языков, вы «фактически» знаете их все, и, что более важно, вы понимаете то, что является частью языка , и то, что относится к программированию независимо от языка. В конечном счете, определенные языки не имеют значения.
Таким образом, вы можете изучить Java, C, Scheme, OCaml, Assembly (по крайней мере, две архитектуры), Forth и немного Prolog, не обязательно в таком порядке. Второй язык будет самым сложным, потому что вам придется как выучить новые концепции, так и забыть концепции, которые вы выучили на первом языке, но оказались неверными. После этого это легко и только становится легче.
Затем при работе с конкретной задачей разработки используйте наиболее адаптированный язык, основанный на доступности и поддержке компиляторов и библиотек, знаниях коллег, ограничениях политики со стороны руководства и так далее. Гибкость ума является ключом. Знание многих языков дает такую гибкость.