2011年3月20日日曜日

LLではなくEasygoing Languages

このエントリーをはてなブックマークに追加
Pocket

ジャングリッシュは多数あるが、その中でも異質なものが軽量プログラミング言語(Lightweight Language)だ。どこが異質かと言うと、既に定着していたスクリプト言語(Scripting Language)を押しのける形で普及したと言う事と、それが示すものが名称とかけ離れているためだ。近年は下火になりつつあるようだが、一時でもこの呼び方が市民権を得たのが不思議でならない。

1. スクリプト言語の歴史

スクリプト言語に明確な定義は無いが、比較的単純なプログラムを記述するための、簡易的なプログラミング言語全般をいう。多種多様なスクリプト言語がこの世に存在するが、原点は1977年のAWKだと思われる。1987年にPerl、1988年にTcl、Ghostscript、1990年にPython、1995年にJavaScript、Ruby、PHPがリリースされており、90年代にスクリプト言語は多様化を遂げた。近年のスクリプト言語はモジュール化が進み、CやC++に匹敵するライブラリが整備されているため、「簡易的」とは言えないレベルに進化している。

2. Lightweight Languageという単語の出現と消滅

近年のスクリプト言語に相応しい名称をと考えたのか、21世紀になってLLという単語を使う人々が現われた。

LLの初出は2001年のLL1: Lightweight Languages Workshopだと思われる。2002年にIBM developersWorksの記事『IBM Lightweight Services, Part 1: Server-side scripting』に、本文に説明付でa lightweight languageという表記がある。だが、欧米ではLLという表現は定着しなかった。

"scripting language"と"lightweight language"でそれぞれ検索してみれば分かるが、検索ヒット数に圧倒的な差がある。また、両者のwikipediaの記述量には大きな差がある。さらに、2008年のカンファレンスLL Futureに招待されたPerlの作者Larry Wallは、動画で確認する限り、PerlがLightweight Languageだとは一言も言っていない。取扱説明書(man)を見ても、LuaとRubyはスクリプト言語と明記してあり、PerlとPythonはスクリプトを実行すると書いてある。

3. 日本だけで「軽量プログラミング言語」という単語が定着

日本では2004年にLightweight language magazineが発売され、マイコミジャーナルに軽量プログラミング言語という表現が現われ、2007年に@ITCodeZineに軽量プログラミング言語という表現が現われている。興味深いことに、2003年以前はほとんど使われていない。

LLは、2004年以降は日本だけで使われている単語と言っていいだろう。このあたりの日本でも普及経緯は不明なのだが、雑誌や執筆業者にとってはアイキャッチが重要なので、古臭いスクリプト言語よりも、新しいLightweight Languageの方がマーケティング的に都合が良かったのだと想像できる。

フリーライターの山田祥寛氏が著作内でLLは定着したと主張していたが、LLという単語を声高に布教してきた著作家は後に引けない状況になっているのかも知れない。

4. 少ないプログラマ負担と、重量級のリソース消費

あまりに膨大な種類のスクリプト言語があるため当てはまらないものもあると思うが、スクリプト言語/軽量プログラミング言語と呼ばれる言語には、次のような特色がある。

1. インタープリッタとして動作する
実行時に中間コードやネイティブ・コードに変換を行うものもあるが、原則としてインタープリッタとして動作する。台本(Script)の解釈・実行エンジンと言っても良いかも知れない。コンパイルやリンクと言う操作がないため、プログラマ負担が少ない。
2. 文法的にコード記述量が少ない
連想配列や正規表現などのライブラリ的な機能が、文法自体や標準クラスや関数に組み込まれており、コードの記述量が少なくなっている。覚えるべき文法は多くなるが、簡潔に処理を記述する事ができ、プログラマ負担が少ない。
3. メモリ管理機能が備わっている
Javaで有名になったGCは、スクリプト言語には標準的に備わっている。プログラマはメモリ管理に関して基本的に心配する必要が無い。処理の記述に集中できるため、プログラマ負担が少ない。
4. メモリ利用量が多い
実行するアプリケーションによるが、C/C++と比較すると数倍は余分にメモリーを消費すると思っていて良いだろう。
5. 実行速度は遅い
実行するアプリケーションによるが、外部ライブラリを呼ばない部分では、C/C++と比較すると10倍遅いと思っていて良い。
6. 他のプログラミング言語との連係が前提
多くのスクリプト言語は自己完結的ではない。追加的なモジュールはCで書かれる事が多く、JavaScriptはHTMLやPDF内などの、LuaはC/C++のアプリケーション内での動作を前提としている。shに至っては比較演算子も外部コマンドだ。

スクリプト言語の利点は(1)~(3)、欠点は(5)~(6)、欠点をカバーしつつ利点を得る現実的な方法が(6)である。これらの特色を一言でまとめれば、「お気楽に使えるプログラミング言語」と言う事ができるであろう。

5. Lightweight Languageは妥当ではない名称

スクリプト言語には、CやC++等のネイティブ・コードを生成するプログラミング言語と比較すれば、リソース消費の多い重量級アプリケーションを作る傾向がある。Lightweightは、軽量で動作速度が速いイメージのある形容詞だ。そして、誰かの負担が軽いという辞書上の用例も無い(OED)。実行速度が遅く、メモリ利用量が多いプログラミング言語の形容としては、Lightweightは不適当すぎる。

6. Easygoing Languages

PerlはPerl、RubyはRuby、PHPはPHP、PythonはPythonだ。それぞれ多くの利用者がいるのに、スクリプト言語を名乗っているこれらの言語を、LLとひとくくりにまとめる必要は無い。

あえてスクリプト言語以外の命名したいのであれば、Easygoing Languagesとでも呼べばいいと思う。学習が容易で、簡単に成果をあげられるプログラミング言語なのだから、お気楽と形容するのが一番妥当だと思う。お気楽なので、プログラミング言語の記述ではなく、アプリケーションの実装に注意を払えるわけだ。

この名称に賛同してくれる人が多いとは思えないが、スクリプト言語の特徴と第一目標は、プログラマ負担の削減を目指しているものが多い。Lightweightなんて虚構で装飾するより、Easygoingと言った方が、ずっとましなはずだ。

0 コメント:

コメントを投稿