2012-05-12

TIOBE indexをみて考えた

TIOBE Software: Tiobe Index

IIOBE indexは、毎月、有名な検索機能を提供しているサイトからプログラミング言語を検索して、結果に基づき、言語のランク付けをしているサイトである。もちろん、そのランクが実情と合っている保証はないが、なかなか面白い。詳しい集計方法は、TIOBE Software: Tiobe Index Definitionを参照。あくまで、プログラミング言語のランキングなので、HTMLのような言語は含まない。SQLもプログラミング言語ではないので含まれないが、PL/SQLはプログラミング言語なので含まれる。

さて、今月興味深いこととして、Objective-CがC#を抜いて4位になったのだ。やはり最近のAppleの影響力は強いのだろう。

先月から、CがJavaを追い抜いて第一位に返り咲いた。もっとも2004年のJavaの一時的な下落は、Googleの検索アルゴリズムの変更によるものなので、過去10年で初めて一位になったというべきか。TIOBEは2004年の一件以来、複数の検索エンジンを含めるようになっている。

ではCのランクが上がったのかというと、そういう訳でもない。ここ数年はやや上昇しているように見えるが、10年でみると、2.5%下がっている。とはいえ、まだCの地位は安泰だ。このペースで下がり続けるとしても、あと70年は持ちこたえることができる。この業界で70年と言えば、永遠だ。もっとも、下がるとなれば急激に下がるだろう。ただし、すでにCで書かれたソフトウェア資産や、いまだに活発に開発が続いているCで書かれたソフトウェアをみると、Cの地位はまず安泰だろう。

Cのさしあたっての問題は2038年問題だろう。おそらく、Cは今後も22年以上使われることは疑いようがない。また、多くの言語の実装はCに依存している。そのため、ほとんどの言語は2038年問題の影響を受ける。たとえ標準ライブラリによらない日付管理を実装しているとしても、やはり怖いことは怖い。一体どうやって解決するつもりなのだろうか。多くの不自由なソフトウェアは、すでにソースコードが失われている。修正しようがない。SF小説的な考え方をすれば、2030年代後半に、既存の多くのソフトウェアの日付がUNIX時の起点時間まで逆転し、正しく動作しなくなる。コンピューターに頼り切っていた社会は混乱し、未曾有の人災が引き起こされるとなるだろう。

Cで気にかかるのは、どうも世代交代がうまく行っていないという事だ。相変わらず昔のC、つまりC89が使われている。C99やC11はなかなか受け入れられていない。

第二位はJavaだ。ただし、Javaは死につつある言語だ。もはや未来はない。まだJavaを使っているとしたら危機感を持つべきである。

第三位のC++も安定している言語だ。ただ、やはりどうも下がりつつあるような気がする。

第四位はObjective-C。ただし、この言語は専らAppleの不自由なデバイスのためのソフトウェアを書くのにしか使われていない。Appleの興隆に伴い、仕方なく使われている。個人的には嫌いな言語である。

第五位はC#。出た当初は、第二のVBとして、MS専用言語に成り下がるかと思っていたら、どうも最近調子に乗っている。monoのおかげでマルチプラットフォーム化したので、かなり広く使われている。今月のランクは下がっているが、かなり上昇傾向にある。

第六位はPHPだが、ここ数年、ランクが下がりつつある。PHPについては、プログラミング言語として、いい噂を全然聞かないのだが、Webサイトには非常に広く使われている。言語としてかっこいいかどうかというより、泥臭くとも動くほうがいいのだろう。

第七位はVisual Basic。ただし、Basic系言語をすべて含むらしい。とはいえ、もはや今使われているBasicはVBやVBAぐらいなものであろうから、実質VBといってもいいだろう。まあこれは・・・未だに過去の栄光は強いと言ったところか。

第八位はPythonだ。Pythonは個人的に気に入っている言語であり、将来はスクリプト言語として標準の地位を占めるのではないかと思うのだが、今の所、爆発的にランクが上がる傾向にはない。

第九位はPerl。未だに根強い信者のいる言語だ。個人的には、文法が汚くて好きになれないのだが。

第十位はJavaScript。これはやや不思議だ。JavaScriptはもっとランクが高くてもいいはずなのだが、なぜか下にとどまっている。個人的には、C#とObjective-Cの上に位置すべきだと思うのだが、何故か低い。今や、ほぼすべてのWebサイトがJavaScriptに頼っていることを考えると、このランクは非常に意外だ。思うに、JavaScriptは本物のプログラミング言語としては、いまいち意識されていないのか、あるいはあまり表に出てこないのか、それともTIOBEの集計方法に問題があるのか。

No comments: