anybody's game

日々感じたこと、艦隊これくしょん、千年戦争アイギス、読書記録

プログラミング言語間の競争が起こるのはなぜ?

 新人研修で、いくつかのプログラム言語の特徴を調べて比較するという場面がありました。そこで知ったのが、「特定のプログラミング言語の支持者同士の間には争いがある」ということ。ただ単に優劣を比較しているような議論もあれば重箱の隅をつついた上での感情論まであるようです。

 言語間の比較が行われる文化を研修で習っていらい、他の自分が知っている言語や文字体系などと比較して、その文化が存在する理由を考えており、結論として、2つの理由を考えました。

  • 1つ目は、実際に習得して比較できる点
  • 2つ目は、はっきりとした評価基準を儲けられる点

です。

実際に習得して比較できる

 日本語、英語、イタリア語、フランス語といった自然言語においては、やはり生まれた時から使っている言語に理解が偏り、バイリンガルトリリンガルといえるほど習得するのに相当な時間がかかります。複数の言語を全く同じだけ理解できる人というのは稀です。複数の言語を同じだけ理解できたとしましょう。でも、理解するまでに相当な時間や努力がありますから、言語やその言語をもちいる文化に対する愛着も沸いてきますでしょう。多くの人間が使って改良してきたものですから、それぞれに長短があって、優劣が付けられないでしょう。優劣をつけることは、その使いながら言語に改良を加えてきた多くの人、実際に使っている人、(「文化」とほぼ同義になりましょうか?)に優劣をつけるようなことになりますから、さらに優劣をつけるのはナンセンス、ということになりましょう。

 一方、プログラミング言語は、マスターして利用するための道具です。分かりにくい機械語を分かりやすく人間の言葉に近づけたものですから、他の言語と比較できるほどに理解するのは容易です。優劣をつけるにしても、自然言語と比べ、その言語を作った極一部の人同士を比べていることになる程度です。どの会社の車が性能がよいかと比較するような、そんな気持ちで比較できるのでしょう。

 車の性能を例に出しました。別のプログラミング言語を習得するのは、鉛筆を持ち換えるほどの簡単さではなく、まさに車を乗り換えるのにイメージが近い、それなりに手間とコストのかかる作業です。

 実際に二つ、三つ、四つの言語を比較できるほどに習得できるが、一方で、それなりに時間がかかること・・・これが言語の支持者同士で争いが起こる原因となっているのかもしれません。

はっきりとした評価基準を儲けられる点

 だから、かといって、習得が難しい言語なら批判されないかというとそうでもありません。プログラミング言語はある結果を得るための道具ですから、習得が難しい時点で、「劣」の評価を得るの対象になりましょう。

 プログラミング言語は、目的を達成するのために利用される道具です。この点においては、自然言語と代わりがないのですが、自然言語と違い、二つのプログラミング言語でまったく同じことができたりします。

 同じことをするために、それぞれの言語は、どれだけの文字列が必要か?どれだけ簡単な手続でできるか?どれだけ論理的に記述できるか?どれだけ早く実行結果を返すか?そういった基準があり、相互に評価することができます。このことも、言語の支持者間の争いを生みだす理由なのではないでしょうか。