„Lua“ ist Por­tu­gie­sisch und bedeutet „Mond“. Lua ist aber auch eine Pro­gram­mier­spra­che, die platt­form­un­ab­hän­gig er­wei­ter­bar ist. Weitere Be­son­der­hei­ten sind ihre geringe Größe von gerade einmal 120 Kilobyte sowie ihre hohe Ge­schwin­dig­keit. Grund genug, den Mond unter den Skript­spra­chen etwas genauer unter die Lupe zu nehmen.

Dieser Artikel bietet eine all­ge­mei­ne Ein­füh­rung in die Skript­spra­che Lua. Ein aus­führ­li­ches Lua-Tutorial für den Einstieg in die Pro­gram­mie­rung mit Lua finden Sie ebenfalls im Digital Guide.

Was ist Lua?

Der Kosmos der Internet-Pro­gram­mier­spra­chen ist nahezu endlos. Lua schafft es aus der breiten Masse her­aus­zu­ste­chen, führt aber trotzdem im Be­kannt­heits­grad neben Python oder Perl eher ein Schat­ten­da­sein. Dabei kommt Lua seit weit über zwei Dekaden zum Einsatz. Als ei­gen­stän­di­ge Pro­gram­mier­spra­che wird Lua al­ler­dings eher selten genutzt: Statt­des­sen verwenden Ent­wick­ler sie in der Regel als ein­ge­bet­te­te Skript­spra­che für einzelne Programme. Haupt­ein­satz­ge­bie­te sind dabei seit jeher Vi­deo­spie­le und Gaming-Engines, aber auch in einer Vielzahl von Netzwerk- und Sys­tem­pro­gram­men findet man Lua als Pro­gram­mier­spra­che.

Der por­tu­gie­si­sche Name kommt nicht von ungefähr. Lua wurde an der Ka­tho­li­schen Uni­ver­si­tät von Rio de Janeiro von Roberto Ie­ru­sa­lim­schy, Luiz Henrique de Fi­guei­re­do und Waldemar Celes ent­wi­ckelt. Brasilien unterlag bis 1992 strengen Im­port­be­schrän­kun­gen für Hard- und Software; aus dieser Not heraus haben die drei Pro­gram­mie­rer eine eigene Skript­spra­che Namens Lua ent­wi­ckelt. Heute zählt sie in vielen Bereichen zu den wich­tigs­ten und be­lieb­tes­ten Pro­gram­mier­spra­chen.

Was also ist Lua genau? Im We­sent­li­chen ist Lua eine Bi­blio­thek, die Pro­gram­mie­rer in ihre Software in­te­grie­ren können, um sie skrip­tin­g­fä­hig zu machen. Lua ist dabei für jedes gängige Be­triebs­sys­tem verfügbar. Sie enthält einen sehr kompakten In­ter­pre­ter, der mit wenigen hundert Zeilen Code auskommt und zu­sätz­lich auf die Bi­blio­thek zu­rück­grei­fen kann. Trotz Mi­ni­mal­prin­zip bietet der In­ter­pre­ter nützliche Features wie die au­to­ma­ti­sche Be­rei­ni­gung von nicht mehr ver­wen­de­ten Da­ten­struk­tu­ren, wodurch wichtiger Speicher frei bleibt. Die wich­tigs­ten Ei­gen­schaf­ten von Lua in der Zu­sam­men­fas­sung:

  • kompakt
  • schnell in der Aus­füh­rung
  • her­vor­ra­gend er­wei­ter­bar
  • leicht erlernbar
  • frei verfügbar

Wie ist die Pro­gram­mier­spra­che Lua aufgebaut und wofür wird sie verwendet?

Die Skript­spra­che Lua wird für all­ge­mei­ne pro­ze­du­ra­le Pro­gram­mie­run­gen verwendet. Damit fällt sie bei den Pro­gram­mier­pa­ra­dig­men in die Rubrik der im­pe­ra­ti­ven Skript­spra­chen. Sie ist als Bi­blio­thek in C im­ple­men­tiert und bietet Funk­tio­nen wie den Lua-Code sowie ein Muster-Host­pro­gramm (namens lua), das einen ei­gen­stän­di­gen Lua-In­ter­pre­ter zur Verfügung stellt.

Als Skript­spra­che besitzt Lua kein eigenes Haupt­pro­gramm. Sie arbeitet aus­schließ­lich ein­ge­bet­tet in einer Host-Anwendung. Diese kann dann über den Lua-Code die oben genannten Funk­tio­nen aufrufen. Dank der C-Funktion lässt sich Lua um zahl­rei­che Funk­tio­nen erweitern, um die ebenso zahl­rei­chen An­for­de­run­gen in der Pro­gram­mie­rung ab­zu­de­cken. Die Pro­gram­mier­spra­che lässt sich sehr leicht anpassen, sodass ein ge­mein­sa­mes syn­tak­ti­sches Framework ge­währ­leis­tet ist.

Wer bereits Kennt­nis­se in Pascal besitzt, hat auch keine Probleme mit der Syntax von Lua, denn die Pro­gram­mier­spra­chen sind in diesem Punkt sehr ähnlich gehalten: Mehrere Befehle lassen sich in einer Skript­zei­le mit Semikolon trennen. Insgesamt hat Lua 20 de­fi­nier­te Keywords, die einfach erlernbar sind. Ein kurzer Einblick: Allgemein wird in Lua mit Funk­ti­ons­blö­cken ge­ar­bei­tet, die mit Keywords wie goto starten und mit end, elseif oder else enden. local kenn­zeich­net lokale Variablen, die nur für den Funk­ti­ons­block gültig sind, in dem das Schlüs­sel­wort vorkommt. Funk­ti­ons­blö­cke können auch in­ein­an­der ver­schach­telt werden.

Lua kann mit den Da­ten­ty­pen table, userdata, function, thread, nil, boolean, string und number arbeiten. Ersterer (table = Tabelle) ist auch der einzige struk­tu­rier­te Datentyp. Die Va­ria­blen­ty­pen werden beim Skript­ab­lauf bestimmt, lassen sich aber bei Bedarf jederzeit umwandeln.

Wo kommt Lua zum Einsatz?

Mit den An­wen­dungs­mög­lich­kei­ten der Skript­spra­che Lua kann man wirklich zu den Sternen greifen, denn hier sind den Pro­gram­mie­ren kaum Grenzen gesetzt. Lua lässt sich mit be­nut­zer­de­fi­nier­ten Modulen nahezu endlos erweitern. An­wen­dungs­bei­spie­le reichen hier von in Lua ge­schrie­be­nen Web­ser­vern über die Pro­gram­mie­rung einer eigenen App bis zur Videogame-Ent­wick­lung.

Gerade in der Gaming-Welt ist Lua die Pro­gram­mier­spra­che, die mit am häu­figs­ten genutzt wird. Diverse Spiele nutzen als Skript­spra­che Lua. Häufig wird Lua dabei in den Engines ein­ge­setzt, um diese von Kon­fi­gu­ra­tio­nen oder Spiel­cha­rak­te­ren zu trennen. Das macht eine Spiel-Engine flexibler, wodurch ver­schie­de­ne Spiele ein und dieselbe Engine nutzen können. Populäre Beispiele sind hier das Online-Mul­ti­play­er-Rol­len­spiel-Urgestein World of Warcraft oder das ebenfalls sehr er­folg­rei­che Rät­sel­spiel Enigma.

Ein weiterer großer An­wen­dungs­be­reich von Lua ist die Netzwerk- und Sys­tem­pro­gram­mie­rung. Bei Pro­gram­men wird Lua für Kon­fi­gu­ra­ti­ons- und Au­to­ma­ti­sie­rungs­zwe­cke ein­ge­setzt, pro­mi­nen­te Beispiele sind der VLC Media Player oder Adobe Photoshop Lightroom. Im Netz­werk­be­reich sind es Netzwerk-Ana­ly­sa­to­ren wie Wireshark, die die Lua-Funk­tio­nen nutzen. Darüber hinaus setzen bei­spiels­wei­se auch der MySQL-Proxy, die Redis-NoSQL-Datenbank oder die Webserver Apache und Nginx auf die Skript­spra­che.

Lua – Pro­gram­mier­spra­che mit großen Stärken und kleinen Schwächen

Kon­zep­tu­ell bietet Lua als Pro­gram­mier­spra­che nur wenig bahn­bre­chen­de Features. Ihre Syntax ist recht kon­ven­tio­nell und mit den bereits erwähnten 20 re­ser­vier­ten Schlüs­sel­wör­tern auch recht einfach.

Die Ty­pi­sie­rung läuft bei Lua dynamisch ab. Der Typ einer Variablen wird bestimmt, wenn ein Skript abläuft, kann aber wie erwähnt in einen anderen Typen um­ge­wan­delt werde. Das ist eine große Stärke von Lua, besonders im Vergleich zu CSS oder PHP, wo etwa die Zuweisung be­lie­bi­ger Typen zu „boolean“, also den Wahr­heits­wer­ten, keiner be­stimm­ten Methode folgt.

Der größte Vorteil von Lua: Alle an­zu­pas­sen­den Texte oder Zahlen werden direkt in Variablen ge­schrie­ben. Die Zuweisung erfolgt in einem ge­schlos­se­nen Block zu Beginn des Moduls. Die daran an­schlie­ßen­den Funk­tio­nen greifen nur noch auf die Variablen zu. Ändert sich die Umgebung, müssen nur die Werte im Block ent­spre­chend angepasst werden. Das ist ein­fachs­te Pro­gram­mie­rungs­ar­beit bei der ersten Er­stel­lung.

Die Nachteile dabei: Wird eine Funktion durch eine Ak­tua­li­sie­rung verändert, bedarf es einer Neu­kom­po­si­ti­on des Quell­codes in jedem Projekt. Das macht in allen ein­ge­bun­de­nen Seiten eine Ak­tua­li­sie­rung er­for­der­lich.

Fazit

Die Skript­spra­che Lua kann zum Verfassen ei­gen­stän­di­ger Programme verwendet werden, aber genauso gut auch als ein­ge­bet­te­te Sprache dienen. Lua fehlt es viel­leicht an der Po­pu­la­ri­tät, die andere Pro­gram­mier­spra­chen genießen, aber längst nicht an Tools zur Pro­gram­mie­rung.

Kurzer Einblick in die Skript­spra­che Lua (mit Code-Snippets)

Ab­schlie­ßend geben wir einen kurzen Einblick in die Skript­spra­che Lua mit zwei simplen Bei­spie­len. Diese sollen einen groben Überblick über die Funk­ti­ons­wei­se von Lua geben.

Beispiel 1: Zei­len­um­brü­che in Lua

Bei Lua werden Zei­len­um­brü­che mit „\“ oder „\n“ und einem echten Zei­len­um­bruch eingefügt:

print ('1 : Hello\
	World')
print ("2: Hello\
	World")

Das Aus­ga­be­er­geb­nis sieht in diesem Fall wie folgt aus:

1: Hello
World
2: Hello
World

Beispiel 2: Variablen in Lua

Variablen müssen in der Pro­gram­mier­spra­che Lua nicht de­kla­riert werden, sie werden bei Bedarf erzeugt. Zur Er­in­ne­rung – Werte können folgende Typen annehmen: Nil (zugleich der Wert von nicht an­ge­leg­ten Variablen), Zahlen, Literale (Zeichen, Buch­sta­ben, Wörter usw.), Boolean (wahr/falsch bzw. true/false), Tabellen und Funk­tio­nen. Ein einfaches Coding-Beispiel:

print ( var )
var = "Hello World"
print ( var )

Da un­de­fi­nier­te Variablen „nil“ ergeben, lautet das Ergebnis:

nil
Hello World
Zum Hauptmenü