
			【新・言語進化論】次にくる!新登場言語
			第2回:言語開発者が目標にするパフォーマンス「Lua」
			著者: ether
			公開日:2007/11/12(月)
			 
			
		Luaと他言語
		最後にLuaと他の言語との関係について触れる。
		まずCとLuaについて考えてみよう。CとLuaは文法も意味論もまったく異なるが、Luaにとって最重要な言語だ。前述のようにLuaは組み込み用途に優れており、Cに組み込んで使うことによって、アプリケーションに対してC言語にはない柔軟性と拡張性をもたらすことが可能だ。また、逆にLuaの機能を拡張するためにCを使うこともできる。
		続いてJavaScriptとの関係だ。「Luaに一番よく似ている言語をあげよ」といわれたら、筆者はきっとJavaScriptをあげるだろう。この2つの言語は出自も使用される領域も違うのだが、まるで兄弟のように似ている。
		一番の類似点はJavaScriptでいうオブジェクトとLuaでいうテーブルはほぼ同じもので、両者のオブジェクト指向のアプローチも同じもの(プロトタイプベース)だ。言語としてのJavaScriptを本格的に学んだ人ならば、Luaをすんなり理解できるだろう。
		そして最後はSchemeとの関連だ。Luaの作者らは「Luaが進化するにつれ、SchemeはLuaへのインスピレーションの源泉としての重要度を増していった」と述べている。
		この2つの言語は見かけこそまったく違うものの、意味的には高い類似を示している。Luaはある意味では「リストの代わりにテーブル、括弧の代わりにキーワードを使ったScheme」ともいえるほどだ(そこが違ったら全然違う!とSchemeファンに怒られるかもしれないが)。
		しかしLuaとSchemeの最も重要な類似点は「言語仕様としては最小限のものだけを提供し、その組み合わせで高いレベルの機能を実現する」という設計思想にあると筆者は考えている。
		
		
		|  | Lua | C | JavaScript | Scheme | 
		
		| 文法 | Pascal風 | C風 | C風 | 括弧 | 
		
		| 型付け | 動的 | 静的 | 動的 | 動的 | 
		
		| クロージャ | ○ | × | ○ | ○ | 
		
		| テーブル(連想配列) | ○ | × | ○ | △(大抵実装) | 
		
		| 配列 | △(テーブルを使う) | ○ | ○ | ○ | 
		
		| 末尾呼出最適化 | ○ | × | × | ○ | 
		
		| 多値 | ○ | × | × | ○ | 
		
		| コルーチン | ○ | × | ×(使える処理系もある) | △(継続を使う) | 
		
		| インタラクティブシェル | ○ | × | △(実装による) | ○ | 
		
		まとめ
		本記事では近年注目度を増しているプログラミング言語Luaについてごく簡単に紹介した。Luaはアプリケーションに簡単に組み込める軽量なスクリプト言語であり、言語仕様が極めてクリーンなミニマリズムに貫かれている。
		本記事を読んでLuaに興味をもたれた方は、次のステップとして1ページ目で紹介したProgramming in Luaを読み、Luaのさらなる興味深さに触れてもらいたい。ただしWebページで公開されているのはLua 5.0の仕様を基にした第1版のため、最新の仕様に追従した書籍版(Luaの作者らが自費出版している)を入手することをお勧めする。Luaの思想を体現するかのようなミニマルで美しい装丁の本だ。
		次回は
		次回は、型推論と並列支援機能を持つJVM上の関数型言語「Scala」を取り上げる。11月19日の公開をお楽しみに!  タイトルへ戻る
 タイトルへ戻る