Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Lua

Lua [1] ist eine eigentlich sehr einfache Skriptsprache, die aber aufgrund einiger weniger "Meta-Mechanismen" [2] dennoch erstaunlich leistungsfähig ist.

Die vorliegenden Seiten geben einen kurzen Überblick über Lua und dokumentieren die Arbeiten des Autors im Rahmen einer Evaluierung im Hinblick auf eine Verwendung für seine Dissertation.

Bitte beachten Sie auch die Betrachtungshinweise sowie die Liste der letzten Änderungen!

Themenübersicht

Die folgende Themenübersicht führt Sie unmittelbar zu der von Ihnen gewünschten Information - klicken Sie dazu einfach auf das Thema Ihrer Wahl:

  • Lua im Überblick - eine kurze Beschreibung der Sprache und wichtiger Erweiterungen
  • Distributionen - vom Autor angepaßte und übersetzte Win32-Distributionen
  • Acquainting - eine systematische Annäherung an Lua
  • Module - grundlegende Funktionalitäten für Lua-Programme
  • Beispiele - einfache und weniger einfache Lua- und TkLua-Beispielprogramme
  • Anwendungen - in Lua/TkLua/LuaSocket geschriebene Anwendungen
  • Sonstiges - verschiedene Beiträge zum Thema Lua

Lua im Überblick

Lua [1] wird seit 1993 von Roberto Ierusalimschy, Waldemar Celes und Luiz Henrique de Figueiredo am TeCGraf, der "Computer Graphics Technology Group" des "Departamento de Informática" (DI) an der "Pontifícia Universidade Católica do Rio de Janeiro" (PUC-Rio) entwickelt [2]. Ursprünglich aus einer Datenbeschreibungssprache hervorgegangen mit dem Ziel, Ingenieuren die Erstellung von Parameter-Dateien für numerische Simulationen zu erleichtern, ist die Sprache inzwischen universell einsetzbar.

Lua besitzt eine prozedurale Syntax mit komfortablen Möglichkeiten zur Beschreibung von Daten auf der Basis assoziativer Datenfelder ("Tabellen"). Die Typen-Bindung der Sprache ist "dynamisch", d.h. "Variablen" sind Typ-frei, Daten-"Werte" sind jedoch Typ-behaftet. Lua-Skripte werden entweder implizit zur Laufzeit oder explizit mithilfe eines separaten Übersetzers in "Byte-Code" übersetzt - dieser wird anschließend von einer "Virtuellen Maschine" (VM) interpretiert. Die Speicherverwaltung erfolgt automatisch, nicht mehr benötigte Werte werden im Rahmen einer "Garbage Collection" ohne Zutun des Programmierers aus dem Speicher entfernt

Einige wenige "Meta-Mechanismen" erlauben die Implementierung von Eigenschaften, die die Sprache selbst bewußt nicht zur Verfügung stellt. So ist die Sprache selbst zwar nicht Objekt-orientiert, grundlegende Mechanismen der Objekt-Orientierung (wie z.B. ein- oder mehrfache Vererbung) lassen sich jedoch relativ einfach mit Lua-eigenen Mitteln einbauen - die Sprach-Entwickler nennen diese Eigenschaft "erweiterbare Semantik".

Lua ist vornehmlich als Erweiterungssprache konzipiert und für die Integration in (in C/C++ geschriebene) Anwendungen gedacht. Sie ist als separat ladbare Bibliothek in ANSI-C implementiert und demzufolge sehr leicht auf neue Plattformen portierbar. Eine Reihe von C-Funktionen gestatten die problemlose Interaktion (von Lua-Anweisungen) mit Daten der umgebenden Anwendung. Mithilfe einer kleinen "Pseudo"-Anwendung kann Lua jedoch auch "eigenständig" eingesetzt werden.

Die Nutzungsbedingungen [3] erlauben eine kostenfreie Nutzung der Sprache selbst für kommerzielle Anwendungen.

Noch eine Anmerkung zum Namen "Lua": "Lua" bedeutet auf Portugiesisch "Mond" - dies ist eine Anspielung darauf, daß die Sprache ein Nachfolger von "Sol" (Simple Object Language) ist, dem portugiesischen Wort für "Sonne".

Wichtige Erweiterungen

Neben der Sprache selbst sind folgende Erweiterungen von besonderer Bedeutung:

  • tolua [12]
    generiert (ausgehend von der "kanonisierten" Form einer C/C++ Header-Datei) automatisch den "Verbindungs-Code", mit dessen Hilfe in C/C++ realisierte Konstanten, Variablen, Funktionen, Klassen und Methoden von Lua aus angesprochen werden können;

  • TkLua [13,14]
    ermöglicht den Einsatz von Tk-Elementen (und allgemein den Aufruf von Tcl-Anweisungen) aus Lua-Programmen heraus. Dabei stehen nahezu alle von Tk bereitgestellten Funktionalitäten zur Verfügung - und zwar in einer im Vergleich zu Tcl z.T. erheblich angenehmeren Form;

  • LuaSocket [15]
    erweitert Lua um grundlegende IPv4-Funktionen (DNS, TCP und UDP) und einige wichtige höhere Protokolle (SMTP, HTTP & FTP).

Literaturhinweise

[1] The Programming Language Lua
(siehe http://www.lua.org)
die genannte Adresse ist der Ausgangspunkt für Recherchen zum Thema Lua: von hier aus gelangt man zu Distributionen, Dokumentationen, zusätzlichen Bibliotheken und kann zu anderen Lua-Benutzern Kontakt aufnehmen;
[2] Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
About
(siehe http://www.lua.org/about.html)
die genannte Web-Seite enthält eine Lua-Kurzbeschreibung;
[3] Lua Copyright notice
(siehe http://www.lua.org/copyright.html)
nicht nur für Firmen von Bedeutung: die Nutzungsbedingungen von Lua;
[4] Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
Reference Manual of the Programming Language Lua 4.0
(siehe http://www.lua.org/manual)
das Referenzhandbuch enthält alle wesentlichen Informationen zur Sprache selbst, den zugehörigen Standardbibliotheken und der Schnittstelle zur Laufzeitumgebung;
[5] Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Filho
Lua - an extensible extension language
Software: Practice & Experience (Ausgabe 6, Jahrgang 26, 1996), Seiten 635-652
(siehe http://www.lua.org/spe.html)
dieser Beitrag beschreibt die Grundzüge von Lua (und seiner Integration in C-Anwendungen), u.a. auch anhand einer Reihe von Programmausschnitten;
[6] Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes
Lua: an Extensible Embedded Language
A few metamechanisms replace a host of features
Dr. Dobb's Journal (Ausgabe 12, Jahrgang 21, Dezember 1996), Seiten 26-33
(siehe http://www.lua.org/ddj.html)
dieser Zeitschriften-Artikel beschreibt die wesentlichen Merkmale von Lua und TkLua. Eine Reihe von Programmausschnitten verdeutlichen die erwähnten Mechanismen;
[7] Reuben Thomas et al.
Technical Notes
(siehe http://www.lua.org/notes)
die (von Benutzern erweiterbare) Reihe der "Technical Notes" beschreibt einzelne sprach- und anwendungsspezifische Problemstellungen und deren Lösung unter Lua;
[8] Lua 4.0 - Quelltexte und Plattform-spezifische Distributionen
(siehe http://www.lua.org/download.html)
die angegebene Seite verweist auf den Quelltext sowie eine Reihe von fertig übersetzten Distributionen für verschiedene Plattformen;
[9] Win32-Portierung von Lua 4.0
(siehe http://www.tecgraf.puc-rio.br/lua/ftp/binaries/Windows/)
das angegebene ftp-Verzeichnis enthält Lua-Bibliotheken zur Verwendung in verschiedenen C-Entwicklungssystemen (Borland, Visual Studio, Watcom) sowie fertig übersetzte Programme zur Ausführung und Übersetzung von Lua-Programmen - alles für Win32-Plattformen;
[10] Philippe Lhoste
Lua Page

(siehe http://jove.prohosting.com/~philho/softwares/PhiLhoSoft/Lua/index.html)
Philippe Lhoste stellt ebenfalls eine Lua-Distribution für Win32-Rechner sowie die dabei verwendeten Projekt-Dateien zur Verfügung;
[11] Lua Addons
(siehe http://lua-users.org/wiki/LuaAddons)
von der genannten Web-Seite aus haben Sie Zugriff auf eine Reihe von zusätzlichen Lua-Distributionen, -Bibliotheken und -Anwendungen;
[12] Waldemar Celes
tolua - accessing C/C++ code from Lua
(siehe http://www.tecgraf.puc-rio.br/~celes/tolua/)
tolua vereinfacht die Verbindung von in C oder C++ geschriebenen Anwendungen und Bibliotheken mit Lua-Programmen. Die angegebene Web-Seite beschreibt die grundlegenden Mechanismen von tolua und den Umgang mit dem System;
[13] Waldemar Celes
tklua - Binding Tk to Lua
(siehe http://www.tecgraf.puc-rio.br/~celes/tklua/)
TkLua ermöglicht die Verwendung von Tk-Komponenten (für grafische Benutzeroberflächen) von Lua-Programmen aus. Die genannte Web-Seite beschreibt wie TkLua funktioniert und wie es in Lua-Programmen eingesetzt werden kann;
[14] Christian Vogler
TkLua (4.0a1)
(siehe http://www.cis.upenn.edu/~cvogler/lua/tklua.html)
während die unter [13] genannte TkLua-Distribution nur für Lua-Versionen < 4.0 gedacht ist, eignet sich die hier erwähnte Fassung für Lua-Versionen mit dem neuen Lua 4.0 API;
[15] Diego Nehab
LuaSocket - IPv4 Sockets support for the Lua language
(siehe http://www.tecgraf.puc-rio.br/~diego/luasocket)
LuaSocket erweitert Lua um wichtige IPv4-Funktionen. Unter der genannten Adresse finden Sie eine Beschreibung des Paketes und können sich eine Distribution herunterladen;
[16] Tcl Developer Site
(siehe http://www.scriptics.com)
wer TkLua nutzen möchte, muß dazu Tcl/Tk installiert haben. Die genannte Web-Seite ist der Ausgangspunkt für Recherchen zum Thema Tcl/Tk;
[17] Download Tcl/Tk 8.3.4
(siehe http://www.scriptics.com/software/tcltk/downloadnow83.tml)
von der genannten Seite aus können Sie sich die für TkLua benötigte Version 8.3.4 von Tcl/Tk herunterladen;

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Lua/index.html    (letzter Stand: 12.06.2002)