Lua
| Lua | |
|---|---|
| [1] | |
| 拡張子 | lua |
| パラダイム | マルチパラダイム |
| 設計者 | TeCGraf |
| 最新リリース | 5.2.0(2011年12月16日) |
| 評価版リリース | 5.2.0 beta(2011年7月8日) |
| 型付け | ダック・タイピング |
| 主な処理系 | Lua, LuaJIT, LLVM-Lua, Lua Alchemy |
| プラットフォーム | クロスプラットフォーム |
| ライセンス | MIT license |
| ウェブサイト | www.lua.org |
| 作者 | Mike Pall |
|---|---|
| 最新版 | 1.1.7(2011年5月5日) |
| 最新評価版 | 2.0.0 beta 8(2011年6月23日) |
| プログラミング言語 | C言語 |
| 対応OS | Linux、Windows、Mac OS X、*BSDなど |
| 対応言語 | Lua |
| サポート状況 | 開発中 |
| ライセンス | MIT License |
| 公式サイト | LuaJIT |
Lua(ルア)は、リオデジャネイロ・カトリカ大学の情報工学科コンピュータグラフィックステクノロジーグループ TeCGraf によって設計開発されたスクリプト言語である。
手続き型言語として、また、プロトタイプベースのオブジェクト指向言語としても利用する事が出来、関数型言語、データ駆動型としての要素も併せ持っている。
目次 |
[編集] 概要
Luaは、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作と、高い移植性、組み込みの容易さが特徴である。いったんバイトコードにコンパイルされ、Lua VM で実行される。LuaJIT は The Computer Language Benchmarks Game によると、変数に型のないスクリプト言語では最速の言語・処理系である[1]。
TIOBE Programming Community Index の2011年6月版では10番目に人気なプログラミング言語である[2]。2007年に人気が急上昇した[3]。2009年2月の調査で、ゲーム開発者がイベントスクリプト等の内部処理に利用する言語として、最も利用例が多いと報告されるなど、近年はゲーム産業での利用が広がっている。[4]
MIT Licenseのもと配布されているため商用プロダクトにも組み込みやすい点も高く評価されている。
[編集] 特徴
Luaの特徴としては、汎用性が高いが比較的容易に実装が可能である、というものである。実際のところLuaは、オブジェクト指向などといった他の要素としての働きを明白にはサポートしていないが、サポートしていない範囲においても容易に拡張が可能である。また前述のような、動作の高速性や優れた移植性なども大きな特徴である。
文法的な特徴としては、Pascalによく似た構文を採用していること、コルーチン(協調的マルチタスク)のサポート、関数を変数として扱えることなどが挙げられる。
Luaはいわゆる汎用スクリプト言語であり、特定の用途に限定されない性質を持つが、同じく汎用スクリプト言語であるPythonやRubyと比較して高速に動作する。これは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
- 1993年7月28日 - Lua 1.0 リリース。
- 1995年2月7日 - Lua 2.1 リリース。
- 1997年7月1日 - Lua 3.0 リリース。
- 2000年11月6日 - Lua 4.0 リリース。
- 2003年4月11日 - Lua 5.0 リリース。
- 2006年2月21日 - Lua 5.1 リリース。
- 2008年8月22日 - Lua 5.1.4 リリース。
- 2010年5月14日 - Lua 5.1.4-2 リリース。
- 2011年12月16日 - Lua 5.2.0 リリース。
[編集] 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を採用しているプロダクト
[編集] ゲーム
- Blue Mars
- CRYSIS
- Far Cry
- Garry's MOD
- Lost Wind
- RagnarokOnline
- Roblox
- Xenepic Online Revo
- ソニック・ザ・ヘッジホッグ (2006年のゲーム)
- ソニック ワールドアドベンチャー(北米版のタイトルはSonic Unleashed)
- ティアーズ・トゥ・ティアラ 花冠の大地
- アイドルマスター2
- Warhammer® Online: Age of Reckoning
- World of Warcraft
- カンパニー・オブ・ヒーローズ
[編集] ゲーム以外
- 3DMLWプラグイン
- Adobe Photoshop Lightroom
- Aegisub
- Anime Studio
- MySQL Proxy
- nmap
- OpenWrt
- RigidChips
- Renoise
- Strata 3D
- Tachyon
- ヤマハのルータ (RTX1200, RTX810, SRT100, NVR500)
- LuaTeX
- VOCALOID3 - ユーザー側で歌唱合成用データを加工するエフェクタを自作できる[6]
[編集] 参照
- ^ a b x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
- ^ TIOBE Programming Community Index
- ^ The Lua Programming Language - TIOBE Software: The Coding Standards Company
- ^ Satori » The Engine Survey: General results
- ^ Lua LuaJIT ÷ JavaScript V8 − x64 Ubuntu : Intel® Q6600® one core Computer Language Benchmarks Game
- ^ ボーカロイドストアで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
[編集] 外部リンク
|
|||||||||||||||||||||||||||||||||