職業プログラマがプログラミング言語を学習する理由

プログラマが新しい言語を学習する理由は色々とあるが、職業プログラマの場合はこんなものだろう。ちなみに優先度が高い順。

仕事で直接使う為

開発対象の実装に使用する言語。例えば次のプロジェクトでC#を使用するが、C#を触ったことがないので学習する。
または開発で間接的に使う言語で、何らかの理由で選択肢が制限されたもの。例えばデバッグ用ログの解析結果をExcelでグラフ化する必要があるので、 VBAないしExcelのCOMを叩ける言語を学習する。また例えば、インハウスの小ツールを実装する際に、他人のマシンでも動作可能である必要があるのでRubyじゃなくてWSH + JScriotを選択する。
基本的に必要に駆られて学習することが多い。

仕事で間接的に使う為

開発で使用する必要はないが、使えると何かしらのメリットがある言語。例えば開発中に使い捨てツールを実装することが度々あるので、CやC++よりも開発効率が高いRubyPythonを学習しておく。
どちらかというと、楽をしたいために学習する。

将来、仕事で使うことになるかもしれない為

現在は仕事で使うことはないが、将来使うかもしれない言語。例えば現在はJavaを使用しているが、最近業界内で違う言語を採用する事例がでてきているようなので、その言語を学習する。または現時点では採用事例は無いが、何となく数年後にブレークしような気がする言語を学習する。
要するに先行投資。

それ以外

その言語を使えるようになることよりも、学習の過程で何かを得ることに対する期待の方が大きい言語。自分が主に使用している言語とは異なるパラダイムの言語であることが多い気がするが、単なる妄想かもしれない。例えばオブジェクト指向に触れたことがないならオブジェクト指向に対応した言語、普段は静的型付け言語を使っているのなら動的型付け言語、手続き型言語しか知らないなら関数型言語や論理型言語。
基本的に視野を広げるために学習するが、仕事で間接的に使うことや将来性を視野に入れている場合もある。