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; |
|