プログラマが新しい言語を学習する理由は色々とあるが、職業プログラマの場合はこんなものだろう。ちなみに優先度が高い順。
仕事で直接使う為
開発対象の実装に使用する言語。例えば次のプロジェクトでC#を使用するが、C#を触ったことがないので学習する。
または開発で間接的に使う言語で、何らかの理由で選択肢が制限されたもの。例えばデバッグ用ログの解析結果をExcelでグラフ化する必要があるので、 VBAないしExcelのCOMを叩ける言語を学習する。また例えば、インハウスの小ツールを実装する際に、他人のマシンでも動作可能である必要があるのでRubyじゃなくてWSH + JScriotを選択する。
基本的に必要に駆られて学習することが多い。
仕事で間接的に使う為
開発で使用する必要はないが、使えると何かしらのメリットがある言語。例えば開発中に使い捨てツールを実装することが度々あるので、CやC++よりも開発効率が高いRubyやPythonを学習しておく。
どちらかというと、楽をしたいために学習する。
将来、仕事で使うことになるかもしれない為
現在は仕事で使うことはないが、将来使うかもしれない言語。例えば現在はJavaを使用しているが、最近業界内で違う言語を採用する事例がでてきているようなので、その言語を学習する。または現時点では採用事例は無いが、何となく数年後にブレークしような気がする言語を学習する。
要するに先行投資。