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 wurde 1993 von der Computer Graphics Technology Group der Päpstlichen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt. Lua ist freie Software, und wurde bis zur Version 4 unter einer eigenen BSD-Lizenz, ab Version 5 unter der MIT-Lizenz veröffentlicht.
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 Skriptsprache für andere Programme, wie z. B. für C-Programme, konzipiert. In dieser Hinsicht ist sie mit Tcl vergleichbar. Insbesondere die geringe Größe von 120 KB, die Erweiterbarkeit und die hohe Geschwindigkeit verglichen mit anderen Skriptsprachen überzeugen viele Entwickler davon, Lua einzusetzen.
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 beinhaltet. Mittels des API können verschiedene Teile des Programmes in 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 aufrufen, und umgekehrt).
Es gibt auch einen freien JIT-Compiler für die neueste Version (5.1) von Lua namens LuaJIT.
Lua ist in ANSI-C implementiert und unterstützt imperative und funktionale Programmierung. Implementiert[1] man jedoch selbst Objekte mittels Metatables, wird auch objektorientierte Programmierung ermöglicht.
Beispielprogramme in Lua
print "Hello World"
Beispiel für eine Rekursion:
function factorial(n)
if n == 0 then
return 1
else
return n * factorial(n - 1)
end
end
Befehle in Lua können – müssen aber nicht – am Ende einer Zeile mit einem Semikolon abgeschlossen werden.
Die Syntax lehnt sich an die von Pascal an, was besonders Anfängern den Einstieg in Lua erleichtert. Im Gegensatz zu von Pascal abgeleiteten Sprachen nutzt Lua jedoch „==“ und nicht „=“ als Vergleichsoperator.
Verwendung
Lua kann sowohl zur Erstellung eigenständiger Programme verwendet werden als auch als eingebettete Sprache dienen.
Es erfreut sich besonderer Beliebtheit bei Computerspielprogrammierern: Um einzelne Komponenten eines Computerspiels, wie z. B. Konfigurationsdateien oder die KI von computergesteuerten Charaktern oder Gegnern, von der Spiel-Engine zu trennen, kommt Lua in dieser Branche oft zum Einsatz. Dies macht die meist teuer entwickelte Spiel-Engine flexibler und ermöglicht eine mit geringerem Aufwand verbundene Wiederverwendbarkeit. Daher wird Lua im Bereich proprietärer Spiele verwendet, beispielsweise in:
- Far Cry, Far Cry 2, Crysis, Crysis Warhead, Operation Flashpoint Dragon Rising
- World of Warcraft,
- Empire: Total War,
- Dawn of War
- Freelancer
- Garrys Mod
- Blitzkrieg
Anwendung findet Lua ebenfalls in Desktopanwendungen, wie etwa Adobe Photoshop Lightroom[2] oder Anime Studio. Auch das freie Textsatzprogramm TeX integriert im neuen Ableger LuaTeX Lua als Skriptsprache. Der Boot-Manager GRUB2 bietet Lua als Ergänzung zu dessen Shell-ähnlicher Skriptsprache. Die Apache-Application-Firewall unterstützt mit dem Modul Mod Security ebenfalls Lua. Wireshark Packet Sniffer erlaubt dissector plugins in Lua zu schreiben. Die Firmware-Erweiterung CHDK erlaubt den Einsatz von Lua-Skripten auf Canon Digitalkameras. Außerdem findet Lua Verwendung als Konfigurationssprache für die Windowmanager Awesome und Ion.
Quellen
- ↑ Ein Beispiel für die Definition einer Klasse und die Ableitung von Objekten daraus ist inequality-1.4.0 (Anwendung: Berechnung von Ungleichverteilungsmaßen für die Wirtschafts- und Sozialwissenschaften). Das Programm ist sowohl in Lua wie auch in Python implementiert und ermöglicht dadurch einen Vergleich.
- ↑ Einsatz von Lua in Lightroom: [1]
Literatur
- Roberto Ierusalimschy: Programmieren mit Lua, September 2006, ISBN 3-937514-22-8
- Roberto Ierusalimschy: Lua 5.1 Reference Manual, August 2006, ISBN 85-903798-3-3
- Kurt Jung, Aaron Brown: Beginning Lua Programming, 2007, ISBN 0-470-06917-1
- Paul Schuytema, Mark Manyen: Game Development with Lua, 2005, ISBN 1-58450-404-8
Weblinks
- http://www.lua.org - Offizielle Homepage (auf Englisch und Portugiesisch)
- Linkkatalog zum Thema Lua bei curlie.org (ehemals DMOZ)