Lua: Die Programmiersprache vorgestellt

„Lua“ ist Portugiesisch und bedeutet „Mond“. Lua ist aber auch eine Programmiersprache, die plattformunabhängig erweiterbar ist. Weitere Besonderheiten sind ihre geringe Größe von gerade einmal 120 Kilobyte sowie ihre hohe Geschwindigkeit. Grund genug, den Mond unter den Skriptsprachen etwas genauer unter die Lupe zu nehmen.

Dieser Artikel bietet eine allgemeine Einführung in die Skriptsprache Lua. Ein ausführliches Lua-Tutorial für den Einstieg in die Programmierung mit Lua finden Sie ebenfalls im Digital Guide.

Was ist Lua?

Der Kosmos der Internet-Programmiersprachen ist nahezu endlos. Lua schafft es aus der breiten Masse herauszustechen, führt aber trotzdem im Bekanntheitsgrad neben Python oder Perl eher ein Schattendasein. Dabei kommt Lua seit weit über zwei Dekaden zum Einsatz. Als eigenständige Programmiersprache wird Lua allerdings eher selten genutzt: Stattdessen verwenden Entwickler sie in der Regel als eingebettete Skriptsprache für einzelne Programme. Haupteinsatzgebiete sind dabei seit jeher Videospiele und Gaming-Engines, aber auch in einer Vielzahl von Netzwerk- und Systemprogrammen findet man Lua als Programmiersprache.

Der portugiesische Name kommt nicht von ungefähr. Lua wurde an der Katholischen Universität von Rio de Janeiro von Roberto Ierusalimschy, Luiz Henrique de Figueiredo und Waldemar Celes entwickelt. Brasilien unterlag bis 1992 strengen Importbeschränkungen für Hard- und Software; aus dieser Not heraus haben die drei Programmierer eine eigene Skriptsprache Namens Lua entwickelt. Heute zählt sie in vielen Bereichen zu den wichtigsten und beliebtesten Programmiersprachen.

Was also ist Lua genau? Im Wesentlichen ist Lua eine Bibliothek, die Programmierer in ihre Software integrieren können, um sie skriptingfähig zu machen. Lua ist dabei für jedes gängige Betriebssystem verfügbar. Sie enthält einen sehr kompakten Interpreter, der mit wenigen hundert Zeilen Code auskommt und zusätzlich auf die Bibliothek zurückgreifen kann. Trotz Minimalprinzip bietet der Interpreter nützliche Features wie die automatische Bereinigung von nicht mehr verwendeten Datenstrukturen, wodurch wichtiger Speicher frei bleibt. Die wichtigsten Eigenschaften von Lua in der Zusammenfassung:

  • kompakt
  • schnell in der Ausführung
  • hervorragend erweiterbar
  • leicht erlernbar
  • frei verfügbar

Wie ist die Programmiersprache Lua aufgebaut und wofür wird sie verwendet?

Die Skriptsprache Lua wird für allgemeine prozedurale Programmierungen verwendet. Damit fällt sie bei den Programmierparadigmen in die Rubrik der imperativen Skriptsprachen. Sie ist als Bibliothek in C implementiert und bietet Funktionen wie den Lua-Code sowie ein Muster-Hostprogramm (namens lua), das einen eigenständigen Lua-Interpreter zur Verfügung stellt.

Als Skriptsprache besitzt Lua kein eigenes Hauptprogramm. Sie arbeitet ausschließlich eingebettet in einer Host-Anwendung. Diese kann dann über den Lua-Code die oben genannten Funktionen aufrufen. Dank der C-Funktion lässt sich Lua um zahlreiche Funktionen erweitern, um die ebenso zahlreichen Anforderungen in der Programmierung abzudecken. Die Programmiersprache lässt sich sehr leicht anpassen, sodass ein gemeinsames syntaktisches Framework gewährleistet ist.

Wer bereits Kenntnisse in Pascal besitzt, hat auch keine Probleme mit der Syntax von Lua, denn die Programmiersprachen sind in diesem Punkt sehr ähnlich gehalten: Mehrere Befehle lassen sich in einer Skriptzeile mit Semikolon trennen. Insgesamt hat Lua 20 definierte Keywords, die einfach erlernbar sind. Ein kurzer Einblick: Allgemein wird in Lua mit Funktionsblöcken gearbeitet, die mit Keywords wie goto starten und mit end, elseif oder else enden. local kennzeichnet lokale Variablen, die nur für den Funktionsblock gültig sind, in dem das Schlüsselwort vorkommt. Funktionsblöcke können auch ineinander verschachtelt werden.

Lua kann mit den Datentypen table, userdata, function, thread, nil, boolean, string und number arbeiten. Ersterer (table = Tabelle) ist auch der einzige strukturierte Datentyp. Die Variablentypen werden beim Skriptablauf bestimmt, lassen sich aber bei Bedarf jederzeit umwandeln.

Wo kommt Lua zum Einsatz?

Mit den Anwendungsmöglichkeiten der Skriptsprache Lua kann man wirklich zu den Sternen greifen, denn hier sind den Programmieren kaum Grenzen gesetzt. Lua lässt sich mit benutzerdefinierten Modulen nahezu endlos erweitern. Anwendungsbeispiele reichen hier von in Lua geschriebenen Webservern über die Programmierung einer eigenen App bis zur Videogame-Entwicklung.

Gerade in der Gaming-Welt ist Lua die Programmiersprache, die mit am häufigsten genutzt wird. Diverse Spiele nutzen als Skriptsprache Lua. Häufig wird Lua dabei in den Engines eingesetzt, um diese von Konfigurationen oder Spielcharakteren zu trennen. Das macht eine Spiel-Engine flexibler, wodurch verschiedene Spiele ein und dieselbe Engine nutzen können. Populäre Beispiele sind hier das Online-Multiplayer-Rollenspiel-Urgestein World of Warcraft oder das ebenfalls sehr erfolgreiche Rätselspiel Enigma.

Ein weiterer großer Anwendungsbereich von Lua ist die Netzwerk- und Systemprogrammierung. Bei Programmen wird Lua für Konfigurations- und Automatisierungszwecke eingesetzt, prominente Beispiele sind der VLC Media Player oder Adobe Photoshop Lightroom. Im Netzwerkbereich sind es Netzwerk-Analysatoren wie Wireshark, die die Lua-Funktionen nutzen. Darüber hinaus setzen beispielsweise auch der MySQL-Proxy, die Redis-NoSQL-Datenbank oder die Webserver Apache und Nginx auf die Skriptsprache.

Lua – Programmiersprache mit großen Stärken und kleinen Schwächen

Konzeptuell bietet Lua als Programmiersprache nur wenig bahnbrechende Features. Ihre Syntax ist recht konventionell und mit den bereits erwähnten 20 reservierten Schlüsselwörtern auch recht einfach.

Die Typisierung 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 umgewandelt werde. Das ist eine große Stärke von Lua, besonders im Vergleich zu CSS oder PHP, wo etwa die Zuweisung beliebiger Typen zu „boolean“, also den Wahrheitswerten, keiner bestimmten Methode folgt.

Der größte Vorteil von Lua: Alle anzupassenden Texte oder Zahlen werden direkt in Variablen geschrieben. Die Zuweisung erfolgt in einem geschlossenen Block zu Beginn des Moduls. Die daran anschließenden Funktionen greifen nur noch auf die Variablen zu. Ändert sich die Umgebung, müssen nur die Werte im Block entsprechend angepasst werden. Das ist einfachste Programmierungsarbeit bei der ersten Erstellung.

Die Nachteile dabei: Wird eine Funktion durch eine Aktualisierung verändert, bedarf es einer Neukomposition des Quellcodes in jedem Projekt. Das macht in allen eingebundenen Seiten eine Aktualisierung erforderlich.

Fazit

Die Skriptsprache Lua kann zum Verfassen eigenständiger Programme verwendet werden, aber genauso gut auch als eingebettete Sprache dienen. Lua fehlt es vielleicht an der Popularität, die andere Programmiersprachen genießen, aber längst nicht an Tools zur Programmierung.

Kurzer Einblick in die Skriptsprache Lua (mit Code-Snippets)

Abschließend geben wir einen kurzen Einblick in die Skriptsprache Lua mit zwei simplen Beispielen. Diese sollen einen groben Überblick über die Funktionsweise von Lua geben.

Beispiel 1: Zeilenumbrüche in Lua

Bei Lua werden Zeilenumbrüche mit „\“ oder „\n“ und einem echten Zeilenumbruch eingefügt:

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

Das Ausgabeergebnis sieht in diesem Fall wie folgt aus:

1: Hello
World
2: Hello
World

Beispiel 2: Variablen in Lua

Variablen müssen in der Programmiersprache Lua nicht deklariert werden, sie werden bei Bedarf erzeugt. Zur Erinnerung – Werte können folgende Typen annehmen: Nil (zugleich der Wert von nicht angelegten Variablen), Zahlen, Literale (Zeichen, Buchstaben, Wörter usw.), Boolean (wahr/falsch bzw. true/false), Tabellen und Funktionen. Ein einfaches Coding-Beispiel:

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

Da undefinierte Variablen „nil“ ergeben, lautet das Ergebnis:

nil
Hello World