LuaはJavaScriptに似ている?

{The Programming Language Lua}
と、第1印象に過ぎないので鵜呑みにしないように。

LLSpritでも名前が挙がってはいたけど、
LuaというのはC言語などに組み込む為の「組み込み用」言語です。


言語仕様は見る限りとってもシンプル。
Cに組み込めるだけあってとても高速に動作します。
Xtalがライバル視するだけの事はある。

が、オブジェクト指向的な書き方に向いていません。
要するにクラスという機構がないためですが、

「通常の配列が存在せず、連想配列である」
ということを利用してJavaScript的にオブジェクトをつくることができます。
(個人的にはクラスが無いのはそういう意図だと思うので、あえて駆使するのはトリッキーな感じがしてあまり好きではないけどね……)

これJavaScriptのようにクロージャを持っている事で実現できるわけです。


で、なぜJavaScriptに似ているのか?

  • スコープはローカルとグローバルしかありません。(レキシカルスコープです)
  • 配列は連想配列です。そして、hoge.propertyはhoge["property"]と等価です。
  • 関数もファーストクラスオブジェクトで、関数定義はf=function(arg)のように変数が関数の実体を指します。(function f(arg)とも書けます)
  • クロージャを持っており、関数がファーストクラスオブジェクトであることを利用してオブジェクトのように扱うことができます。

とか、そんな感じ。
恐らくあえて(?)Cとは違った構文を目指したのか

   --ラインコメント
   --[[
       ブロックコメント
   ]]

    a = 1 --グローバル変数宣言
    local b = 2 --ローカル変数宣言

    do    --{ に相当
        ...
    end   --}

    if y == z then
        ...
    end

    while z > 0 do
        ...
    end

    repeat
        ...
    until y < 0

    for i = 0, 10, 1 do
        ...
    end

とシンプルな感じ。
まだ少ししか触ってないけれど、面白い言語の予感。