TOPシステム開発> 【新・言語進化論】次にくる!新登場言語> 第2回:言語開発者が目標にするパフォーマンス「Lua」 (3/3)

【新・言語進化論】次にくる!新登場言語

【新・言語進化論】次にくる!新登場言語

第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日の公開をお楽しみに! タイトルへ戻る




ether
著者プロフィール
著者: ether
プログラミングを嗜む普通の社会人。はじめてのプログラミングは「Hello World」ではなく、N88-BASICで画面上に円を描いたこと。「外国語のよいところはそれをいくつ学ぼうと構わないことだ」という或る言語学者の言葉はプログラミング言語にも当てはまると最近感じ始めている。
http://blog.so-net.ne.jp/rainyday/


INDEX
第2回:言語開発者が目標にするパフォーマンス「Lua」
  Luaについて
  Luaの基本構文でFizzBuzz
Luaと他言語