Lua (portugiesisch für Mond) ist eine 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 Pontifikalen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt. Lua ist freie Software, und wurde bis zur Version 5 unter einer BSD-Lizenz, ab Version 5 unter der MIT-Lizenz veröffentlicht.
Um einzelne Komponenten eines Computerspiels, wie z. B. Konfigurationsdateien, von der Spiel-Engine zu trennen, kommt Lua auch oft in dieser Branche 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 kommerzieller Spiele beispielsweise in Heroes of Might and Magic V, Monkey Island 4, Spellforce, Far Cry, World of Warcraft, Microsoft Freelancer, Die Siedler V, Parkan 2, Star Wars Battlefront II und Company of Heroes eingesetzt, im Bereich freier Software zum Beispiel in Angband 3 (und dessen Varianten, wie ZAngband und ToME).
Lua-Programme werden vor der Ausführung in Bytecode übersetzt, wodurch Lua-Code plattformunabhängig einsetzbar ist. Obwohl man mit Lua auch eigenständige Programme schreiben kann, ist sie vorrangig als Skriptsprache von C-Programmen konzipiert. In dieser Hinsicht ist sie mit Tcl vergleichbar. Insbesondere die geringe Größe von 120 KB und die hohe Geschwindigkeit[1] verglichen mit anderen Skriptsprachen überzeigen 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 (luajit.luaforge.net).
Lua ist in ANSI-C implementiert und unterstützt eigentlich nur Funktionale Programmierung. Implementiert man jedoch selbst Objekte mittels Metatables, was auf verschiedenster Art und Weise realisierbar ist, wird auch objektorientierte Programmierung ermöglicht.
Grafische Oberflächen lassen sich mit Bibliotheken, wie Qt, FLTK, IUP und wxWidgets, verglichen mit C++ relativ einfach erstellen.
Hallo-Welt-Programm in Lua
print "Hello World"
Befehle in Lua können - müssen aber nicht - am Ende einer Zeile mit einem Semikolon abgeschlossen werden.
Fakultät in Lua
function factorial(n)
if n == 0 or n == 1 then
return 1
else
return n*factorial(n-1)
end
end
Die Syntax lehnt sich an die von Pascal an, was besonders Anfängern den Einstieg in Lua erleichtert. Trotzdem nutzt Lua den Vergleichoperator "==", und kein einfaches Gleichheitszeichen "=", wie es in pascaliden Sprachen üblich ist.
Quellen
Literatur
- Roberto Ierusalimschy: Programmieren mit Lua, September 2006, ISBN 3937514228
- Roberto Ierusalimschy: Lua 5.1 Reference Manual, August 2006, ISBN 8590379833
- Kurt Jung, Aaron Brown: Beginning Lua Programming, 2007, ISBN 0470069171
- Paul Schuytema, Mark Manyen: Game Development with Lua, 2005, ISBN 1584504048
Weblinks
- http://www.lua.org - Offizielle Homepage (auf Englisch und Portugiesisch)
- http://lua-users.org
- http://luaforge.net
- Lua für Anfänger - Deutsch
- Projekte, die Lua benutzen
- Linkkatalog zum Thema Lua bei curlie.org (ehemals DMOZ)