Поэтому хороший программист никогда не останавливается на одном языке. В идеале, каждый должен знать по одному языку из основных направлений:
- низкоуровневый язык с ручным управлением памятью (Си, С++, Rust)
- высокоуровневый язык с управляемой (managed) памятью (Java, C#, Scala)
- динамический язык (Python, JavaScript, Clojure, Ruby)
- ООП язык (Java, C#, Ruby, C++, JavaScript)
- функциональный язык (Haskell, Scala, Clojure, Erlang)
- логический (Prolog)
И вот когда программист знает хотя бы по одному из всех категорий, он может принимать действительно взвешенные решения. Его набор инструментов очень расширяется, а изучение нового языка уже не представляет проблем.