Was ist Lua?
Lua ist die schlanke, einbettbare Scriptsprache hinter Roblox, Neovim und unzaehligen Games. Erfahre, warum diese winzige Sprache so maechtig ist.
Inhaltsverzeichnis
Was ist Lua?
Lua (portugiesisch fuer โMondโ) ist eine kleine, extrem schnelle Scriptsprache, die 1993 an der PUC-Rio in Brasilien entwickelt wurde. Der Clou: Lua ist als einbettbare Sprache konzipiert - sie lebt oft innerhalb groesserer Anwendungen.
Die komplette Laufzeit passt in weniger als 300 KB. Mit LuaJIT erreicht sie Geschwindigkeiten, die mit C mithalten koennen.
Wofuer wird Lua genutzt?
Scripting in Games
- Roblox - die grosse Ausnahme: Roblox-Scripting ist Luau (Lua-Variante), nicht Lua pur. Hunderte Millionen Spieler erstellen Games in Luau.
- World of Warcraft - Addon-System
- Garryโs Mod - Das gesamte Gameplay-Scripting
- Factorio, Donโt Starve, Defold - Lua als Scripting-Ebene
- CryEngine, LรVE, PICO-8 - weitere Engines
Neovim - moderne Editor-Konfiguration
Die neue Neovim-Welt ist in Lua:
vim.keymap.set("n", "<leader>f", ":Telescope find_files<cr>")
require("lazy").setup(plugins)
Wer Neovim mag, lernt automatisch Lua.
Netzwerk-Infrastruktur
- NGINX mit
lua-nginx-module - OpenResty - Web-Plattform basierend auf NGINX + Lua
- Wireshark - Paket-Dissektoren in Lua
Embedded & IoT
In Firmware und Hardware-Projekten: Lua laeuft auf Systemen mit wenig RAM wunderbar.
Was macht Lua besonders?
Tiny und blitzschnell
Der Interpreter ist winzig. Mit LuaJIT lande Lua regelmaessig in Benchmarks knapp hinter C - und oft vor anderen dynamischen Sprachen.
Nur ein Datentyp: Tables
Der wohl ungewoehnlichste Aspekt: Lua hat eine einzige Datenstruktur - die Table. Sie ist gleichzeitig:
- Array
- Dictionary / Hash
- Objekt / Struct
- Namespace / Modul
-- Als Array
local arr = {"Max", "Anna", "Leo"}
-- Als Dictionary
local person = {name = "Anna", alter = 28}
-- Gemischt
local bunt = {"erstes", name = "Anna", 42}
Das klingt verrueckt - funktioniert aber erstaunlich gut.
Erste-Klasse Funktionen
local addieren = function(a, b) return a + b end
print(addieren(3, 4)) -- 7
Funktionen sind Werte, die du in Variablen speichern, als Argument uebergeben oder zurueckgeben kannst.
OOP ueber Metatables
Lua hat keine Klassen eingebaut - aber Metatables erlauben es, Klassen selbst zu bauen. Robloxโ Luau hat OOP via __index-Metatable als Standard-Muster etabliert.
Lesbare Syntax
for i, name in ipairs({"Max", "Anna", "Leo"}) do
if #name > 3 then
print("Hallo, " .. name .. "!")
end
end
Keine Klammern um Bedingungen, do ... end statt { ... }, Punkt-Punkt .. fuer String-Konkatenation.
Lua vs. Luau
- Lua (Referenz) ist die Original-Sprache von PUC-Rio. Aktuell ist Lua 5.4.
- Luau ist Robloxโs Fork mit Typen, Updates und Roblox-spezifischen Features.
- Beides ist grossteils kompatibel; Roblox-Devs sollten Luau-Docs nutzen.
Dieser Kurs fokussiert auf Lua 5.4 - die Kenntnisse transferieren sich leicht auf Luau.
Wie fuehlt sich Lua-Code an?
-- Eine kleine Demo
local Person = {}
Person.__index = Person
function Person.new(name, alter)
local self = setmetatable({}, Person)
self.name = name
self.alter = alter
return self
end
function Person:gruessen()
print("Hallo, ich bin " .. self.name .. "!")
end
local anna = Person.new("Anna", 28)
anna:gruessen()
Klein und funktional. Keine Schluesselwoerter wie class - Klassen werden selbst gebaut.
Schattenseiten
- Indizes beginnen bei 1 statt 0 (wie Mathematik, aber ungewohnt)
- Nur
nilundfalsesind falsy (wie Ruby) - Fehler zur Laufzeit - kein Typsystem (in Luau etwas anders)
- Fuer grosse Codebasen faehlt Infrastruktur (Tooling ist schlanker als bei Python/JS)
Lohnt sich Lua 2026?
Ja, wenn du:
- Roblox-Spiele bauen willst (unausweichlich)
- Neovim als Editor anpassen willst
- Game-Scripting in Engines betreibst
- NGINX/OpenResty im Backend einsetzt
- einfach eine kompakte, elegante Sprache lernen willst
Lua macht dich zu einer Art Spezialisten - eine wertvolle Nische. Der Hauptmarkt ist Gaming und Infrastruktur, nicht der allgemeine App-Bau.
Als Naechstes: Im naechsten Kapitel installieren wir Lua.