Suchen

Definition Was ist Lua?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Lua ist eine frei verfügbare Skriptsprache, die für die allgemeine prozedurale Programmierung einsetzbar ist. Zu den besonderen Eigenschaften der Skriptsprache gehören die gute Erweiterbarkeit, die leichte Erlernbarkeit und die geringe Größe des kompilierten Skript-Interpreters.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Das Wort Lua kommt aus dem Portugiesischen und bedeutet Mond. Lua bezeichnet eine frei verfügbare Skriptsprache, die 1993 in Brasilien an der Päpstlichen Katholischen Universität von Rio de Janeiro von der Computer Graphics Technology Group entwickelt wurde. Bis zur Version 4 stand die Software unter BSD-Lizenz. Seit der Version 5 ist sie unter MIT-Lizenz erhältlich.

Die Skriptsprache gestattet die allgemeine prozedurale Programmierung. Sie ist flexibel erweiterbar, leicht zu erlernen und bietet eine gute Unterstützung bei der objektorientierten und datengestützten Programmierung. Implementiert ist Lua als Bibliothek in C. Zu den besonderen Eigenschaften zählen die geringe Größe des kompilierten Skript-Interpreters und die in Host-Anwendungen eingebettete Arbeitsweise. Durch die Verwendung von C-Funktionen ist Lua erweiterbar und deckt verschiedenste Anforderungen ab. Zur Distribution von Lua gehören ein Beispiel-Hostprogramm, die Lua-Bibliothek und der Lua-Interpreter.

Der Interpreter selbst umfasst nur wenige hundert Zeilen und greift im Wesentlichen auf die Funktionen der Bibliothek zu. Im Interpreter sind Funktionen wie Garbage Collection integriert. Er bietet eine im Vergleich zu anderen Skriptsprachen hohe Ausführungsgeschwindigkeit. Da Lua plattformunabhängig konzipiert ist, lässt es sich auf verschiedenen Betriebssystemen einsetzen. Vor der Ausführung erfolgt die Übersetzung in den systemspezifischen Bytecode. Die offizielle Webpräsenz ist auf lua.org zu finden.

Die zentralen Merkmale der Skriptsprache Lua

Zentrale Merkmale der Skriptsprache Lua sind:

  • freie Verfügbarkeit
  • für die allgemeine prozedurale Programmierung geeignet
  • gute Erweiterbarkeit
  • schlanke Skriptsprache mit geringer Interpretergröße
  • plattformunabhängige Arbeitsweise
  • gute Unterstützung der objektorientierten und datengestützten Programmierung
  • hohe Ausführungsgeschwindigkeit im Vergleich zu anderen Skriptsprachen
  • einfach erlernbare Syntax

Die Syntax von Lua und die Erweiterbarkeit mit Modulen

Konzeptionell ist Lua einfach gehalten. Die Syntax folgt üblichen Konventionen und ist in Teilen an Pascal angelehnt. Mehrere Befehle in einer Skriptzeile lassen sich für eine bessere Lesbarkeit per Semikolon trennen. Funktionsblöcke sind mit Schlüsselwörtern wie "goto" oder "end" markiert. In einem Block sind eine oder mehrere Lua-Anweisungen enthalten. Die Schlüsselwörter "end", "elseif" oder "else" weisen auf das Ende eines Funktionsblocks hin. Mehrere Funktionsblöcke lassen sich ineinander verschachteln. Mit dem Schlüsselwort "local" gekennzeichnete lokale Variablen sind jeweils nur für den Funktionsblock gültig, für den sie definiert sind.

Die insgesamt etwa 20 definierten Schlüsselwörter sind einfach und ohne großen Aufwand erlernbar. Als Datentypen kennt Lua number, nil, boolean, string, userdata, function oder thread. Einziger strukturierter Datentyp ist die Tabelle (table). Der jeweilige Variablentyp wird beim Skriptablauf bestimmt und lässt sich bei Bedarf umwandeln.

Eine weitere Eigenschaft von Lua ist die Erweiterbarkeit der Skriptsprache mit benutzerdefinierten Modulen. Für die Verwaltung von Modulen ist ein in Lua realisierter Paketmanager verfügbar.

Anwendungsbereiche der Skriptsprache Lua

Den Anwendungsmöglichkeiten der Skriptsprache Lua sind kaum Grenzen gesetzt. Sie reichen von Konfigurationsdateien mit erweiterten Möglichkeiten über in Lua geschriebene Webserver und Editoren bis zur Spieleentwicklung. Besonders im Spieleumfeld und im Bereich der Game Engines zählt Lua zu den beliebtesten und meistgenutzten Skriptsprachen. Hunderte Spiele nutzen die Möglichkeiten von Lua. Oft kommt Lua zur Trennung von Game Engine und Konfigurationen oder Spielcharakteren zum Einsatz. Dadurch wird die Game Engine flexibler und ist für andere Spiele wiederverwendbar. Weitere Anwendungsbereiche sind die Netzwerk- und Systemprogrammierung.

Anwendungsbeispiele für die Verwendung von Lua

Im Netzwerkbereich kommt Lua beispielsweise für den Netzwerk-Analysator Wireshark oder den Scanner Nmap zum Einsatz. So verwendet Nmap Lua für die Automatisierung verschiedener Netzwerkfunktionen. Weitere Beispielprogramme aus dem Netzumfeld, die bestimmte Lua-Funktionen nutzen oder für die Erweiterung einsetzen, sind der MySQL-Proxy, die VoIP-Software FreeSwitch, die Redis-NoSQL-Datenbank oder die Webserver Apache und Nginx.

Im Spieleumfeld findet sich Lua in dem Java-basierten Spiel ComputerCraft, im Rätselspiel Enigma und im sehr bekannten Multi-User-Online-Rollenspiel World of Warcraft. World of Warcraft lässt sich mit in Lua programmierten Skripten erweitern. Sie verändern die Benutzerschnittstelle und fügen dem Spiel neue Funktionen hinzu. Auch das auf Source Engine basierende Spiel Garry's Mod lässt sich mit in Lua geschriebenen Add-ons vielfältig erweitern.

Weitere Programme, in denen Lua für Konfigurations- und Automatisierungszwecke von sich wiederholenden Aufgaben Anwendung findet, sind Adobe Photoshop Lightroom oder der VLC Media Player. Die XMPP-Server-Software Prosody ist mit Lua implementiert.

(ID:45627531)

Über den Autor