Lua

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索
Lua
[1]
拡張子 lua
パラダイム マルチパラダイム
設計者 TeCGraf
最新リリース 5.2.0(2011年12月16日(2か月前) (2011-12-16)
評価版リリース 5.2.0 beta(2011年7月8日(7か月前) (2011-07-08)
型付け ダック・タイピング
主な処理系 Lua, LuaJIT, LLVM-Lua, Lua Alchemy
プラットフォーム クロスプラットフォーム
ライセンス MIT license
ウェブサイト www.lua.org
テンプレートを表示
LuaJIT
作者 Mike Pall
最新版 1.1.7(2011年5月5日(9か月前) (2011-05-05
最新評価版 2.0.0 beta 8(2011年6月23日(8か月前) (2011-06-23
プログラミング言語 C言語
対応OS LinuxWindowsMac OS X、*BSDなど
対応言語 Lua
サポート状況 開発中
ライセンス MIT License
公式サイト LuaJIT
テンプレートを表示

Lua(ルア)は、リオデジャネイロカトリカ大学の情報工学科コンピュータグラフィックステクノロジーグループ TeCGraf によって設計開発されたスクリプト言語である。

手続き型言語として、また、プロトタイプベースオブジェクト指向言語としても利用する事が出来、関数型言語、データ駆動型としての要素も併せ持っている。

Luaという名前は、ポルトガル語に由来する。

目次

[編集] 概要

Luaは、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。いったんバイトコードにコンパイルされ、Lua VM で実行される。LuaJITThe Computer Language Benchmarks Game によると、変数に型のないスクリプト言語では最速の言語・処理系である[1]

TIOBE Programming Community Index の2011年6月版では10番目に人気なプログラミング言語である[2]2007年に人気が急上昇した[3]。2009年2月の調査で、ゲーム開発者がイベントスクリプト等の内部処理に利用する言語として、最も利用例が多いと報告されるなど、近年はゲーム産業での利用が広がっている。[4]

MIT Licenseのもと配布されているため商用プロダクトにも組み込みやすい点も高く評価されている。

[編集] 特徴

Luaの特徴としては、汎用性が高いが比較的容易に実装が可能である、というものである。実際のところLuaは、オブジェクト指向などといった他の要素としての働きを明白にはサポートしていないが、サポートしていない範囲においても容易に拡張が可能である。また前述のような、動作の高速性や優れた移植性なども大きな特徴である。

文法的な特徴としては、Pascalによく似た構文を採用していること、コルーチン協調的マルチタスク)のサポート、関数を変数として扱えることなどが挙げられる。

Luaはいわゆる汎用スクリプト言語であり、特定の用途に限定されない性質を持つが、同じく汎用スクリプト言語であるPythonRubyと比較して高速に動作する。これはLuaの理念である、簡素、高効率、高移植性を目指した実装の産物である。また、Luaにおけるテーブル(連想配列)の実装はかなり最適化されており、特にキーに数値のみを使用した場合は、単純な配列としてさらに高速に動作するようになる。

Lua 5.0 以前はメモリ管理にマーク&スイープ方式のガベージコレクションが使用されていたが、Lua 5.1 ではメモリ管理にインクリメンタル・ガベージコレクションが採用され、リアルタイム用途における性能の改善が図られている。 なお、Pythonは参照カウント方式、Rubyは主にマーク&スイープ方式のガベージコレクションを採用しているが、ガベージコレクションの実装形態もLuaの高速動作および高リアルタイム性能に一役買っている。

また、LuaをC++言語で記述されたホストプログラムへ組み込むための省力化ツールとして、 tolua++Luabind(ともにライセンス形態は MIT License)などが開発されている。

また、Luaj というJava仮想マシン向けの実装もある。これは、Lua5.1相当の仕様をJavaで実装しなおしたものであり、Javaのクラスからバインダ無しでインスタンスを生成したりメソッドを呼び出したりすることが可能である。

[編集] LuaJIT

LuaのJITコンパイラである LuaJIT が Mike Pall により開発されている。変数に型がないにもかかわらず、Javaよりも少し遅くなる程度の速度で動いている[1]静的単一代入などをつかった高度な最適化が行われている。

Lua言語自体は、変数が型がなかったり、連想配列と配列が同じ表記法・オブジェクトだったり、プロトタイプベースオブジェクト指向言語である点などが、JavaScriptと似ているが、2009年頃からJITコンパイラを搭載して高速化したJavaScriptの処理系と比べても大きく速い[要出典][5]

[編集] Lua の歴史

[編集] Lua

[編集] LuaJIT

[編集] コード例

[編集] 挿入ソート

a = {5, 3, 1, 4, 2}
for i = 2, #a do
    for j = i, 2, -1 do
        if a[j - 1] <= a[j] then break end
        a[j], a[j - 1] = a[j - 1], a[j]
    end
end

[編集] Luaを採用しているプロダクト

[編集] ゲーム

[編集] ゲーム以外

[編集] 参照

[ヘルプ]
  1. ^ a b x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
  2. ^ TIOBE Programming Community Index
  3. ^ The Lua Programming Language - TIOBE Software: The Coding Standards Company
  4. ^ Satori » The Engine Survey: General results
  5. ^ Lua LuaJIT ÷ JavaScript V8 − x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
  6. ^ ボーカロイドストアでAPIリファレンスを配布している。

[編集] 関連項目

[編集] 関連書籍

  • 『入門Luaプログラミング』 ISBN 978-4797342727
  • 『スプリプト言語による効率的ゲーム開発 C/C++へのLua組込み実践』ISBN 978-4797348552
    • 『スクリプト言語による効率的ゲーム開発-新訂版-LuaとC-C++連携プログラミング』ISBN 978-4797361667
  • Programming in Lua プログラミング言語Lua公式解説書』 ISBN 978-4048677974
  • 『はじめてのLuaプログラミング―人気の軽量スクリプトでアプリケーション開発!』ISBN 978-4777514137

[編集] 外部リンク

個人用ツール
名前空間

変種
操作
案内
ヘルプ
ツールボックス
他の言語