Lua
Lua (portugiesisch für Mond) ist eine imperative und erweiterbare Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können. Eine der besonderen Eigenschaften von Lua ist die geringe Größe des kompilierten Skript-Interpreters.
Lua | |
---|---|
Lua-Logo | |
Basisdaten | |
Paradigmen: | Skriptsprache, imperativ, funktional |
Erscheinungsjahr: | 1993 |
Designer: | Roberto Ierusalimschy |
Entwickler: | Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredo |
Aktuelle Version | 5.4.6 (14. Mai 2023) |
Typisierung: | dynamisch, schwach (weak typing) |
Wichtige Implementierungen: | Lua, LuaJIT, LLVM-Lua, LuaCLR |
Dialekte: | Metalua, Idle, GSL Shell |
Beeinflusst von: | C++, CLU, Modula, Scheme, SNOBOL |
Beeinflusste: | Falcon, GameMonkey, Io, JavaScript, Julia, MiniD, MoonScript, Red, Ruby, Squirrel |
Betriebssystem: | plattformunabhängig |
Lizenz: | MIT-Lizenz |
www.lua.org |
Lua-Programme sind meist plattformunabhängig und werden vor der Ausführung in Bytecode übersetzt. Obwohl man mit Lua auch eigenständige Programme schreiben kann, ist sie vorrangig als eingebettete Skriptsprache für andere Programme konzipiert. In dieser Hinsicht ist sie mit Tcl vergleichbar. Vorteile von Lua sind die geringe Größe von 120 kB, die Erweiterbarkeit und die hohe Geschwindigkeit, verglichen mit anderen Skriptsprachen.
Der Lua-Interpreter kann über eine C-Bibliothek angesprochen werden, die auch ein API für die Laufzeitumgebung des Interpreters für Aufrufe vom C-Programm aus enthält. Mittels des API können verschiedene Teile des Programmes in C (oder C++) und Lua geschrieben werden, während Variablen und Funktionen in beiden Richtungen erreichbar bleiben (d. h. eine Funktion in Lua kann eine Funktion in C/C++ aufrufen und umgekehrt).
Es gibt auch einen freien JIT-Compiler namens LuaJIT, der die Revision 5.1 der Sprache unterstützt.
Lua ist in ANSI-C implementiert und unterstützt imperative und funktionale Programmierung. Implementiert man jedoch selbst Objekte mittels Metatables, wird auch objektorientierte Programmierung möglich.