
【新・言語進化論】次にくる!新登場言語
第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日の公開をお楽しみに!
タイトルへ戻る