(openPR) Lua (portugiesisch für Mond) ist eine Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können.
Eine der besonderen Eigenschaften von Lua ist die geringe Größe des kompilierten Skript-Interpreters. Lua Programme werden vor der Ausführung in Bytecode übersetzt.
Obwohl man mit Lua auch eigenständige Programme schreiben kann, ist Lua vorrangig als Skriptsprache von C-Programmen konzipiert. Der Lua Interpreter kann über eine C-Bibliothek angesprochen werden, die auch ein API für die Laufzeitumgebung des Interpreters für Aufrufe vom C-Programm aus beinhaltet. Mittels des API können verschiedene Teile des Programms in C und Lua geschrieben werden, während Variablen und Funktionen in beiden Richtungen erreichbar bleiben (d.h. eine Funktion in Lua kann eine Funktion in C aufrufen und umgekehrt).
Lua ist in ANSI-C implementiert und unterstützt sowohl funktionale als auch objektorientierte Programmierung. Da der Lua Interpreter extrem schnell und hochgradig portabel ist und sich leicht in C-Programme einbetten lässt, ist er gerade für Embedded Systems eine attraktive Alternative zu anderen Skript Interpretern. Obwohl er nur wenige Kilobyte umfasst, passt noch eine vollständige Garbage Collection hinein, die anfallenden Datenmüll automatisch aus dem Speicher wirft.
Mit dieser Broschüre wollen die Autoren an Hand ihrer Erfahrungen die Leistungsmerkmale von Lua verdeutlichen und die Erweiterungsfähigkeit mit zwei Beispielen demonstrieren.
Im ersten Beispiel wird der Lua Interpreter auf einem PC mit einer DLL erweitert, die die Ansteuerung eines über USB angeschlossenen AD-DA-Subsystems ermöglicht.
Im zweiten Beispiel wird Lua in eine Anwendung auf einem Embedded System auf Basis eines Intel386™ EX Prozessors mit ROMDOS (kompatibel zu MS-DOS 6.22) eingebettet und gezeigt, dass Lua auch in Systemen mit knappen Ressourcen eingesetzt werden kann.
Eine begleitende Webseite stellt Links zu den verwendeten Tools, Quelltexte u.a.m. zur Verfügung.
ISBN 978-3-907857-12-0, Preis EUR 10,80












