2018年01月26日に初出の投稿

Last modified: 2018-01-28

Ranking Programming Languages by GitHub Users

あくまでも GitHub での統計だが、PHP よりも更に Ruby の落ち込みが酷いのは、著者も書いているように意外だ。

思えば、あれだけ PHP を越える良質な OOP のプログラムを組めると豪語している人も多かったのに、いまでは "Ruby on Rails" という名前の道具としてしか知られていない場合すらある(書店でも棚にそう書いてるところがあった)。また、国内では山口の刑務所でシステム開発の言語として Ruby を受刑者に教えているという話が10年ほど前に報じられたが、こういう施策がどうなったのかは誰も知らない。当社でも、10年くらい前にプロデューサーが東京で幾つかのガキの制作会社から「いまどき Ruby を使ってないの?」などと鼻で笑われたらしいが、それらの会社は改めて調べてみても、買収されたり社名を変更した跡形もなく、ひっそりと倒産しているようだ。もちろん、ベンダーの価値は言語やパラダイムで決まるものではないので、Ruby を書けることしか取り柄がない(コーダとしてはともかく開発者としては)無能の集まりなら当然の結果なのだが、そういうことに左右される人々も多かったわけだ。もちろん、そういう傾向は海外でも同じだ。ともあれ、プログラミング言語というものは、専門のシステム開発者に対する普及の仕方と、デザイナーやカジュアルユーザに対する普及の仕方では基準も目的も異なるので、GitHub のような開発者のサイトで(しかも GitHub だって Ruby で開発されている筈)Ruby の普及率が落ちてくるのは致命的と言える。それに、なまじっか既に Ruby で書かれた資産があるため、実際に使っている会社は特定の言語に自らロックインされてしまうので(その下請けも同じ)、こういう傾向が続くと小さなベンダーにとっては上記で述べたように命取りとなる。

どういうわけかあまり指摘されないことだが、PHP がカジュアルユーザに受け入れられやすい一つのはっきりした理由は、JavaScript にも言えることだが、ビルトイン関数を何の準備もなく呼び出せるという点にある。Perl や Python では名前空間を宣言したり、使う関数に応じたパッケージやモジュールをロードしなくてはいけないが、どういうパッケージにどういう関数がかかわるかを全て記憶しておかないとプログラムが動かないなら、単にビルトイン関数を覚えるよりも学習効率が落ちるのは自明だ。なんで文字列を出力するだけのために、その動作環境をいちいちお膳立てしてやらないといけないのか(しかもインタープリター型の処理系で)。或る関数を呼び出すということは、それに関するパッケージやモジュールをロードすることを不可避的に要求するので、これは要するにコードを実行可能な中間コードへ変換する際の手間を省くための(つまり関数が初めてコードの中に登場するのを見つけてから、あらためて必要なモジュールに結びつけるという行きつ戻りつをコンパイラーにさせたくないという)仕様だが、そういう効率的な仕様である筈の言語で書かれたコードの実行速度が、PHP よりも劇的に速いなどという結果が出た試しは一度もないのである。Ruby も同様に、コードの冒頭でモジュールやパッケージをロードしなくても書けるようになっている。そういう点ではカジュアルユーザにも受け入れられやすい条件を満たしているのだが、気の毒なことに日本ではいまだに舶来品指向が色々なものにあって、プログラミング言語やアプリケーションのプロジェクトや Linux のディストリビューションなども例外ではない。同じ日本人が開発したものだからこそ「癪に障る」という連中がいて、嗜好が海外のプロジェクトに偏向する場合があるのだ。それに加えて、Python, Perl, Ruby は 0644 で動かない CGI というのがダサい。

では、どうして海外の開発者も含む GitHub でシェアが劇的に落ちてきているのか。いま述べたような、開発の要件などとは殆ど関係のない理由で忌避するなら、シェアを最初から獲得できていたわけがない。

僕が思うに、これは GitHub だからこそのバイアスだと思っている。つまり、GitHub には公式にプロダクション用途として登録されているプロジェクトばかりではなく、昔ならアマチュアが自宅で適当に書いていたようなレベルのコードやプロジェクトも数多く登録されており、言ってみればプログラミング言語の(プロダクト用途における)シェアは大して変動がないにもかかわらず、アマチュアや学生それからプロでも自宅で気軽に手を付ける流行り廃りに左右されやすいプロジェクトや言語がたくさん GitHub には含まれているためだと思う。つまり、爆発的に Ruby のシェアが上昇したとしても、それはもちろんアマチュアや暇なプロが一斉に使い出したからであって、そういうプロジェクトが継続する保証など殆どない。したがって、Ruby で別のプロジェクトを作成するほどの熱の入れようでもなければ、だいたいどういう言語なのか理解すればプロジェクトは放棄される(そして、「誰かの役にたてば幸いです」などと置手紙のような文句を残して、どうでもいいレベルのコードが放置される)。対して、プロダクション用途としての実績がたくさんあって GitHub でのプロジェクト登録も真面目に仕事としてやっているような言語においては、そのシェアが低かろうと件数そのものが大きく変動するわけではない(プロジェクトの継続率も高いのだと思う)ので、下がり方は鈍いということになる。それに、プログラマの心理として、ただの流行だと知っている言語で低レベルなコードを書いても気にならないが、既に多くの理論的・技術的なノウハウが蓄積されている Java や C++ でレベルの低いコードを登録するのは、周りからバカにされる見込みが高いので気が引けるという事情もあろう。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Google+ Twitter Facebook