Какой язык программирования изучить в целях саморазвития?
Я рекомендую Go - статический, и ООП, и CSP. А для саморазвития лучше выходить из своей зоны комфорта и брать "совсем не ООП" - Forth, Haskell, Erlang, Prolog, Perl, Ruby.
1) Forth - стековый язык, начинаешь изворачиваться с ограничениями, прокачка оптимизаций
2) Haskell/Prolog - функциональные языки, "все совсем не так", начинаешь программировать рассматривая программу комплексно, как единое целое
3) Erlang - даже если про него просто почитать, то понимаешь что такое настоящий инженерный подход к разработке _больших_ программных комплексов, а после осознания мощи акторов - смеешься над threads других языков
4) Perl/Ruby ну и Python сюда же - очень рекомендую посмотреть на их методы работы с коллекциями, они позволяют компактно, в пару строчек, выразить то, что для того же С/С++ заняло бы пару-тройку десятков строк
5) ну и Assembler, конечно же, после него начинаешь понимать архитектуру компа и других программ, и методы повышения производительности своего кода
Как-то так, имхо.
Scala подойдет по всем критериям.
Go учится за неделю и он не совсем ООП.