軽量プログラミング言語

軽量プログラミング言語（）は、2001年にMITで開催されたワークショップ「」のCFPによればLL1 Call For Participation、何らかの実際の機能によるカテゴライズではなく、習得・学習・使用が容易なプログラミング言語を指し、当時におけるそのような言語としてPerl・Python・Ruby・Scheme・Curlを例として挙げている。

軽量プログラミング言語の歴史
「LL」という語が初めて使われたのは「LL1: 軽量言語ワークショップ」である。「LL1: 軽量言語ワークショップ」は、米国MITで開催される革新的なプログラミング言語について語り合うイベントであるが、2001年「スクリプト言語」でも「動的型付け」でも外れてしまう言語を対象に包含する概念として「Lightweight Language」とい う言葉が作られた。翌年の2002年、「LL２：軽量言語ワークショップ」にてRubyの開発者まつもとゆきひろが「より少ない労力で開発が行えるプログラミング言語 」という軽量プログラミング言語の定義を提案。

2002年のIBMディベロッパー・ワークスの記事『IBM 軽量サービス、パート1: サーバー・サイド スクリプティング』に、本文に説明付で「」という表記があった。

日本では2004年に「」が発売された。2004年にマイコミジャーナル、2007年にソフトウェア開発者向けのウェブサイト「」や同「」に軽量プログラミング言語という表現が現われている。

軽量プログラミング言語の例
現在、日本で一般に軽量プログラミング言語と言った場合、おおむね以下のようなスクリプト言語を指す。

 と、その応用 、、

また、以下の言語なども挙げられる。一部、事前にコンパイルが必要な言語も含まれる。

軽量プログラミング言語のリソース消費量
日本における軽量プログラミング言語の「軽さ」は、英語における  の意味とは大きく異なり、プログラマの負担の軽重を指し、実行速度やメモリ消費量に優れているという意味ではない。この独特の文脈に基づき、軽量プログラミング言語の提案者であるまつもとゆきひろは、
事前にコンパイルが不要なインタプリタ
動的型
関数オブジェクト
などの特色を備えるものを軽量プログラミング言語と分類しているが、スクリプト言語の特色を完全に逸脱するものではない。

2022年5月現在、英語版ウィキペディアでは「Light weight programing language are designed to have small memory footprint, are easy to implement (important when porting a language to different systems), and/or have minimalist syntax and features.（軽量プログラミング言語はメモリー・フットプリントが小さくなるように、また簡単に使用できるようになっている。異なるシステムに移す時に重要である。また、最小限のシンタックスを持つように設計されている。」とされており、例として Forth, Io, JavaScript, Lua, newLISP, Squirrel が挙げられている。

また、1997年に書かれた「エンジニアリング・ツールとしての軽量言語」では、プログラミング言語内で補助的に使われる、正規表現やSQL、GLSLを「」と呼んでおり、これはどちらかというとドメイン固有言語を指している。

英語で や  を指し示す場合は「script laungage(スクリプト・ラングエッジ)」と表現するのが妥当である。

ただし、「LL1: 軽量言語ワークショップ」の参加者募集からは、『学術的研究から出てきた技術を取り込みつつ、職業プログラマーの手によって画期的なアイディアも組み込まれている言語。軽量は、実際の機能性ではなく、簡単に入手できて、覚えることができ、使う事ができることを意味する。このカテゴリーに分類される例としては、、、、（とscsh）、 を含む。』と理解することができる。よって、主催者であるドブスの定義は日本語における意味と近いと思われる。もっとも、非日本ドメインのウェブページにおける「」の語を含むページ数は、「」の語を含むページ数の1%に満たない（2008年8月5日現在）ため、ドブスの定義が英語圏で定着しているとは言えない。

日本独自の用語・分類への批判
英語版ウィキペディアから冒頭に挙げたMITでのLLワークショップや日本における用語や分類を「日本独自の用語・分類」であると主張し批判するような意見が存在する。日本における軽量プログラミング言語という用語と言語の分類は、多分に主観的なものであり、軽量プログラミング言語という言葉は不適切だという批判も多い。

比較対象がないことへの批判
「重い」「軽い」という言葉は相対的な表現であり、比較対象となるものを明示せずに分類することはできない。

誤解を招く用語であるという批判
スクリプト言語は、動的型付けのものが多く、静的型付けで利用できるような型に依存した最適化が行えないため、速度の面では不利である。軽量プログラミング言語という用語は「実行速度が速い言語」と誤解される可能性が極めて高く、その意味でもこの用語の使用は不適切である。

脚注

外部リンク
 Learn Languages 2021 — 軽量言語を始めとする多様な言語に関する日本のイベント

Category:プログラミング言語の分類
Category:プログラミング