プログラミング言語のトレンド
ネットサーフィンしていたら、ソフトウェア関連の面白いサイト(http://www.tiobe.com/tiobe_index/)を見つけた。プログラミング言語の利用状況を月毎にまとめたトレンドレポートである。これをそのまま全世界的な統計として解釈するわけにはいかないが、なかなか興味深い。1位から50位とそれ以下の言語リストを見みると、汎用機向け、一般アプリケーション向けのものから、スクリプトやライトウェイトランゲージ、専門分野で使われるもの、古典言語まで、よくここまで調べたなぁと感心してしまうようなラインナップである。(中には、現在も本当に使用されているのか疑問に思う言語もあるのだが…。)さすがに、トップ20にはメジャーな言語が並んでいるのであるが、C言語とJavaScriptとPL/SQLはそれぞれ分野がまったく違う門外漢同士なので、集計したシステムの開発分野と実行環境が「完全にゴチャ混ぜ」であることは否めない。組み込みシステムでPHPを使ったり、データベース系アプリケーションを全部C言語で書く、っていう訳にはいかないから。
この記事の作成時点である2007年7月のチャートを見てみて驚いた。1位がなんとJavaである。2位がC言語、3位と4位がC++とVB、5位と6位がPHPとPerl、7位にやっとC#である。この結果からある傾向が見て取れるため、それぞれについてちょっとだけ考察してみたい。

【http://www.tiobe.com/ の最新トレンド】
1位に輝くJavaはなんと利用率21%である。昨今オブジェクト指向言語が軽量言語にまで波及して、プログラミング言語でクラスが使えるのは当然のような雰囲気がある。オブジェクト指向言語において、Javaは比較的古い言語だが、今もバージョンアップを続けている“現役選手”であることは知っているつもりだ。しかしながら、WEB業界ではAJAXが声高に騒がれるようになって、クライアントサイドにおけるJavaの影が薄くなったという話を何かで読んだ記憶があった。AJAXのバックエンドでJavaが動いているということは考えられるが、クライアントサイドでのインタラクティブ性を論点に据えると、一昔前のJavaアプレットにAJAXが一歩先んじた観は否めない。
しかしそれはWEBだけに限定した話だ。パソコン用の中大規模アプリケーションになると、JREをシステムに組み込むことで開発の効率化と柔軟性・移植性を高めているのが見てとれる。たとえばXilinxのISEというEDAツールでも、フォルダを覗くとJREが入っていたりする。これは、スクリプト実行で済む“小さな処理”をJavaで作ることで、いろんな意味で開発効率の向上に役立っている、と考えることができる。そうは言っても、JITのスピードや国際化などの面で、Javaによる開発を足止めしているのではないか?という(ちょっと古臭い)印象があったので、1位というのは自分にとって、とても意外な結果なのだ。パッケージソフトだけではなく、WEB系バックエンドやデータベース系システムのフロントエンドなど、予想以上にJavaアプリは多いということなんだろう。
AJAXといえばJavaScriptは9位に入っている。現在のところクライアントサイドで実行できる言語はJavaScriptとFlash(ActionScript)が中心だとおもわれるので、是非、JavaアプレットとしてのAJAXを見てみたい。
2位のC言語はちょっと困り者だと思うのだ。現在のパソコンアプリケーションやシステム開発で、C言語を利用する企業はさすがに少ないだろう。というよりも、メジャーOS上で動かすソフトを作るためには、最低でもC++クラス(洒落じゃないよ)でないと無理な様な気もする。しかしながら、組み込み系開発では、C言語がまだまだ現役なのだ。使いこなせばアセンブラさながらに自由にハードウェアにアクセスできる言語は、もうC言語しか生き残っていないだろう。これから先、まだ数年はC言語が廃れることはないように思う。
3位と4位のC++とVBについては、マイクロソフトの牙城を見せ付けられた、といったところだろう。堅実にMFCを使ってVCで、RADツールで素早くVBで、という開発スタイルはここ数年続いてきているトレンドだ。なぜか、VCよりVBの方が簡単だとか、実行速度が遅いとか言われながらも、どちらも劣らずパソコンアプリケーション開発の主力言語になっている。DelphiはVCとVBの中間、“いいとこ取り”の言語だと思うのだが、ボーランド製品でPascalだということもあり、(老舗にもかかわらず)ちょっと避けられているような気もする。Delphiについては自分も最初の敷居が高かったが、使い慣れるとそれなりに使いやすいものであった。(※正確にはObjectPascalである。Delphiは「神の信託を受ける巫女がいた神殿」の名前なのだ!)そのDelphiは13位に入っている。利用率は1.5%と見る影もないが。Pascalはまた別の分類とされていて、23位となっている。
5位と6位にはPHPとPerlという軽量言語(ライトウェイトランゲージ)が構えている。どちらも主にCGIスクリプトとして、一般的な言語である。一昔前までCGIといえばPerlだけであったが、PHPやPython、RubyといったWEB開発にも焦点を合わせることができる便利な言語が次々と現れている中で、Perl奮闘しているのが素晴らしいと思う。なんとなく、C言語全盛期のFORTRANとかCOBOLを髣髴とさせる。(なんというか、過去の蓄積があって、その資産にすがり付いているっていうか、あんまり共通点はないが…。)Perlは昔少しだけかじったことがあるが、そもそも自分は『AWK派』である。(AWKは25位だ。)Perlが出てきた時には、そちらに乗り換えることも考えたのだが、あまりに文法が自由すぎて困惑した記憶がある。ちなみに、PythonとRubyもすぐ下に控えている。PHPにはPEAR、RubyにはRails、Pythonもしかり。これらは今後、是非勉強してみたい言語である。
実は一番注目しているC#が、7位と出遅れている。Windowsが普及して.NET3.0 がVistaに合わせて発表されたにもかかわらず、そもそも.NETを使ったアプリケーションが全然目立っていないのは何故だろう? C#言語の出現は、なんとなくキリストの再来みたいな印象がある。それはJavaと同様にその時代のプログラミング言語のいい所を取り込んで、ネイティブを極限まで排除し、仮想化と豊富な標準クラスを備えることで、CPUやOS依存しないにもかかわらず安全性が高いという点で、今後のアプリケーション開発の中心言語になると思っている。そう言ってしまうと、マイクロソフトの宣伝にも聞こえてしまうが、JSPとASP,そしてASP.NETへの流れと、ランタイムの安全性という点では、Javaに替わる言語にふさわしいだろう。もちろん、Railsなどといったサーバサイドのフレームワークには競合相手も多いので、競争は激化しそうだが…。

【History of Programming Languages Wiki(O'Reilly)より抜粋】
上位の言語について、自分の思うところを書いてみた。2007年時点の自分がよく使う(本当は「使っていた」が適当なのだが…)言語としては、C、C#、Delphi、AWK、VHDL、SQL、そしてアセンブラ(CPUは様々)といったところだ。Cはアセンブラと共に組み込み系(マイコン制御)の仕事や趣味に使用している。(VHDLはもちろん、CPLDやFPGA開発用である。) DelphiとC#は仕事用であるが、どちらの言語も一番「にらめっこ」している時間が長いため、趣味でもそのまま使うことが多い。AWKは、ちょっとしたテキスト処理や、プログラムの自動生成やフォーマッタとして頻繁に使っている。本当のところ、AWKを使うことが一番多いかもしれない。
AWKもさすがに歳を取り過ぎた。C言語と歩みは同じだが、現在のメジャー軽量言語に比べてその応用範囲は狭い。ということで、そろそろAWKを卒業してPHPかPythonに移行しようと思っている今日この頃である。
| 固定リンク
「ソフトウェア」カテゴリの記事
- 知っておきたいJTAGの基礎知識(2009.07.10)
- Arduino、いいです。(2009.06.19)
- 最近の計算機言語を思ふ(2009.06.13)
- PHPでXMLを解析する(2009.05.23)
- ESECに行ってきた(2009.05.18)


![: トランジスタ技術 SPECIAL (スペシャル) 2009年 07月号 [雑誌]](http://ecx.images-amazon.com/images/I/51-5GhecyZL._SL75_.jpg)





















コメント
私が料理教室でヘルシー料理を習っているときにあなたはカフェでこんなことを考えて、記述していたんですね。私には訳が分からずちんぷんかんぷんです(当たり前ですが)。
ふと思ったことは、来月の料理教室は一緒に二人ででかけるのかなあ、それとも私一人で行くことになるのかなあ…?
投稿: めぐみ | 2007/07/26 19:54
今回の外出リハビリは、最初からスターバックスでコーヒー飲みながらブログを書こうと思っていたのです。(前日に記事で紹介したサイトを見つけて面白かったので。)探していた水木しげるの本とJava魂の本が無かったので、早々にジュンヌに向かいました。
かなり回復してきているとはいえ、まだ薬に頼っていたり、長時間やストレスフルな環境には耐えられないなぁ。多分、来月も一緒に出掛けて「外出リハビリ」となることでしょう。
本当は早く会社に戻りたいという気持ちもありますが、今までもそうであったように、焦ったり逸る気持ちが高まると、またノックダウンしてしまうでしょう…。だから、この機会を大事にして、きちんと職場復帰しようと思います。
今後とも、よろしくお願いします。
投稿: Daisukeh | 2007/07/27 16:42
あぁ、ちなみに後になってこの記事を読み返してみると、内容に少し矛盾や紛らわしい言い換えが多いことに気が付きました。同業のソフト屋さんが読んだら「ぷっ!」と噴き出してしまう記述かもしれません。もし、おかしな点があったら、指摘してください。
ちなみに、RubyOnRailsやPEARなどをみると、軽量言語と呼ばれていても、かなり重量級でJavaや.NETを凌ぐフレームワークが、しかもオープンソースでいろいろなサイトで公開されていますね。もう、『軽量』という言葉は適さないんじゃないでしょうか?
インタプリタではありますが、Javaや.NETがVMで動作するように、マシンパワーが向上しているおかげで、あまり実行形態に束縛されなくなったということですね。昔の『高速処理=アセンブラ・ネイティブ』が懐かしいです。だから、未だにCとアセンブラの組み込み分野が、自分にはとても魅力的に思えるのかもしれません。これって、懐古趣味ですかね?単なる“オヤジ化”でしょうか…?
投稿: Daisukeh | 2007/07/27 16:52