Lua (Programmiersprache)

Lua (davon, "Mond" zu bedeuten) ist eine Leichtgewichtsmehrparadigma-Programmiersprache entworfen als eine scripting Sprache mit der "ausziehbaren Semantik" als eine primäre Absicht. Lua ist Quer-Plattform, da sie in ISO C. Lua geschrieben wird, hat eine relativ einfache C API im Vergleich zu anderen scripting Sprachen.

Geschichte

Lua wurde 1993 von Roberto Ierusalimschy, Luiz Henrique de Figueiredo, und Waldemar Celes, Mitgliedern von Computer Graphics Technology Group (Tecgraf) an der Bischöflichen katholischen Universität Rio de Janeiros in Brasilien geschaffen.

Von 1977 bis 1992 hatte Brasilien eine Politik von starken Handelshemmnissen (hat eine Marktreserve genannt) für die Computerhardware und Software. In dieser Atmosphäre konnten die Kunden von Tecgraf nicht gewähren entweder politisch oder finanziell, um kundengerecht angefertigte Software aus dem Ausland zu kaufen. Jene Gründe haben Tecgraf dazu gebracht, von Kratzer die grundlegenden Werkzeuge durchzuführen, die es gebraucht hat.

Der historische "Vater und Mutter von Lua" waren data-description/configuration Sprach-SOL (Einfache Gegenstand-Sprache) und DEL (Datenzugang-Sprache).

Sie waren an Tecgraf in 1992-1993 unabhängig entwickelt worden, um etwas Flexibilität in zwei verschiedene Projekte hinzuzufügen (beide waren interaktive grafische Programme für Technikanwendungen an der Gesellschaft von Petrobras). Es gab einen Mangel an irgendwelchen Fluss-Kontrollstrukturen im SOL und DEL, und Petrobras hat ein wachsendes Bedürfnis gefühlt, volle Programmiermacht zu ihnen hinzuzufügen.

Lua 1.0 wurde auf solche Art und Weise entworfen, dass seine Gegenstand-Konstrukteure, vom aktuellen leichten und flexiblen Stil dann ein bisschen verschieden seiend, die Datenbeschreibungssyntax des SOLS vereinigt haben (folglich der Name Lua - ist Sol für die Sonne portugiesisch; lua ist Mond-). Die Syntax von Lua für Kontrollstrukturen wurde größtenteils von Modula (wenn, während, Wiederholung/bis) geliehen, sondern auch hatte Einfluss von CLU (vielfache Anweisungen und vielfacher Umsatz von Funktionsanrufen, als eine einfachere Alternative zu Bezugsrahmen oder ausführlichen Zeigestöcken), C ++ genommen ("ordentliche Idee, einer lokalen zu erklärenden Variable zu erlauben nur dort, wo wir es" brauchen), SNOBOL und AWK (assoziative Reihe). In einem in der Zeitschrift von Dr Dobb veröffentlichten Artikel stellen die Schöpfer von Lua auch fest, dass LISPELN und Schema mit ihrem einzelnen, allgegenwärtigen Datenstruktur-Mechanismus (die Liste) ein Haupteinfluss auf ihre Entscheidung waren, den Tisch als die primäre Datenstruktur von Lua zu entwickeln.

Lua aktuelle Semantik wurde hauptsächlich vom Schema geliehen:

Versionen von Lua vor der Version 5.0 wurden laut einer der BSD-Lizenz ähnlichen Lizenz veröffentlicht. Von der Version 5.0 vorwärts ist Lua laut der MIT-Lizenz lizenziert worden.

Eigenschaften

Lua wird als eine "Mehrparadigma"-Sprache allgemein beschrieben, einen kleinen Satz von allgemeinen Eigenschaften zur Verfügung stellend, die erweitert werden können, um verschiedene Problem-Typen zu passen, anstatt eine kompliziertere und starre Spezifizierung zur Verfügung zu stellen, um ein einzelnes Paradigma zu vergleichen. Lua enthält zum Beispiel ausführliche Unterstützung für das Erbe nicht, aber erlaubt ihm, relativ leicht mit metatables durchgeführt zu werden. Ähnlich erlaubt Lua Programmierern, namespaces, Klassen und andere zusammenhängende Eigenschaften mit seiner einzelnen Tabellendurchführung durchzuführen; erstklassige Funktionen erlauben die Beschäftigung von vielen starken Techniken von der funktionellen Programmierung; und voller lexikalischer scoping erlaubt feinkörniger Informationsverheimlichung, den Grundsatz von kleinstem Vorzug geltend zu machen.

Im Allgemeinen müht sich Lua, flexible Meta-Eigenschaften zur Verfügung zu stellen, die, wie erforderlich, erweitert werden, aber nicht eine zu einem Programmierparadigma spezifische Merkmalsreihe liefern können. Infolgedessen ist die Grundsprache leicht - der volle Bezugsdolmetscher ist nur ungefähr 150 Kilobytes kompiliert - und leicht anpassungsfähig zu einer breiten Reihe von Anwendungen.

Lua ist eine dynamisch getippte Sprache, die für den Gebrauch als eine Erweiterung oder scripting Sprache beabsichtigt ist, und ist kompakt genug, um auf einer Vielfalt von Gastgeber-Plattformen zu passen. Es unterstützt nur eine kleine Zahl von Atomdatenstrukturen wie Boolean-Werte, Zahlen (Schwimmen-Punkt der doppelten Genauigkeit standardmäßig), und Schnuren. Typische Datenstrukturen wie Reihe, Sätze, Listen und Aufzeichnungen können mit der einzelnen heimischen Datenstruktur von Lua, dem Tisch vertreten werden, der im Wesentlichen eine heterogene assoziative Reihe ist.

Lua führt einen kleinen Satz von fortgeschrittenen Eigenschaften wie erstklassige Funktionen, Müll-Sammlung, Verschlüsse, richtige Schwanz-Anrufe, Zwang (automatische Konvertierung zwischen Schnur und Zahl-Werten in der Durchlaufzeit), Koroutinen (Konsumverein stark mehrbeanspruchend) und das dynamische Modul-Laden durch.

Durch das Umfassen nur eines minimalen Satzes von Datentypen versucht Lua, ein Gleichgewicht zwischen Macht und Größe zu schlagen.

Beispiel-Code

Das klassische Werk hallo Weltprogramm kann wie folgt geschrieben werden:

Druck ("Hallo Welt!")

</syntaxhighlight>

Anmerkungen verwenden die folgende Syntax, die dieser von Ada, SQL und VHDL ähnlich ist:

- Eine Anmerkung in Lua fängt mit einem doppelten Bindestrich an und läuft zum Ende der Linie.

- Mehrlinienschnuren & Anmerkungen

werden mit doppelten eckigen Klammern geschmückt.]]

</syntaxhighlight>

Der factorial ist ein Beispiel einer rekursiven Funktion:

fungieren Sie factorial (n)

wenn n == 0 dann

geben Sie 1 zurück

sonst

geben Sie n * factorial (n - 1) zurück

Ende

Ende

</syntaxhighlight>

Schleifen

Lua hat drei Typen von Schleifen: die Schleife, die Schleife und die Schleife.

Die Schleife hat die Syntax:

während (Bedingung) tut

- Behauptungen

Ende</syntaxhighlight>

Die Schleife:

für den Index = 1,5 tun

Druck (Index)

Ende</syntaxhighlight>

würde den Schleife-Körper 5mal, outputting die Nummern 1 bis 5 einschließlich wiederholen.

Eine andere Form der Schleife ist:

lokaler Anfang, Schluss, Delta = 10,1,-1 - Delta können negativ sein, für die Schleife erlaubend, hinzuzählen oder.

für den Index = Anfang, Schluss, tut Delta

Druck (Index)Ende</syntaxhighlight>Die Schleife:

lokaler cond = falscher

wiederholen Sie

- Behauptungen

bis cond

</syntaxhighlight>

führt den Schleife-Körper mindestens einmal durch und würde fortsetzen sich zu schlingen bis wird wahr.

Funktionen

Die Behandlung von Lua von Funktionen als erstklassige Werte wird im folgenden Beispiel gezeigt, wo das Druckfunktionsverhalten modifiziert wird:

tun Sie

lokale oldprint = Druck - Lager-Strom drucken Funktion als oldprint

Funktionsdruck (E) - Definiert Druckfunktion Wieder

wenn s == "foo" dann

oldprint ("Bar")

sonst

oldprint (s)

Ende

EndeEnde</syntaxhighlight>

Irgendwelche zukünftigen Anrufe werden jetzt durch die neue Funktion, und dank des lexikalischen scoping von Lua aufgewühlt, die alte Druckfunktion wird nur durch den neuen, modifizierten Druck zugänglich sein.

Lua unterstützt auch Verschlüsse, wie demonstriert, unten:

fungieren Sie addto (x)

- Geben Sie eine neue Funktion zurück, die x zum Argument hinzufügt

geben Sie Funktion (y) zurück

- Wenn wir uns auf die Variable x beziehen, der außerhalb des Stroms ist

Spielraum, und dessen Lebenszeit länger ist als dieser dieses anonymen

Funktion, Lua schafft einen Verschluss.]]

geben Sie x + y zurück

EndeEnde

fourplus = addto (4)

Druck (fourplus (3)) - Drucke 7

</syntaxhighlight>

Ein neuer Verschluss für die Variable wird geschaffen jedes Mal wird genannt, so dass die anonyme Funktion zurückgekehrt ist, wird immer auf seinen eigenen Parameter zugreifen. Der Verschluss wird vom Müllmann von Lua gerade wie jeder andere Gegenstand geführt.

Tische

Tische sind die wichtigste Datenstruktur (und, durch das Design, den einzigen eingebauten zerlegbaren Datentyp) in Lua, und sind das Fundament aller benutzergeschaffenen Typen.

Ein Tisch ist eine Sammlung des Schlüssels und der Datenpaare, wo in den Daten durch den Schlüssel Verweise angebracht wird; mit anderen Worten ist es eine hashed heterogene assoziative Reihe. Ein Schlüssel (Index) kann jedes Datentyps außer der Null sein. Ein Schlüssel der ganzen Zahl dessen wird verschieden von einem Schnur-Schlüssel dessen betrachtet.

Tische werden mit der Konstrukteur-Syntax geschaffen:

a_table = {} - Schafft einen neuen, leeren Tisch

</syntaxhighlight>

Tische werden immer durch die Verweisung passiert:

a_table = {x = 10} - Schafft einen neuen Tisch mit einem Zugang, der "x" zur Nummer 10 kartografisch darstellt.

Druck (a_table ["x"]) - Drucke der Wert hat mit dem Schnur-Schlüssel, in diesem Fall 10 verkehrt.

b_table = a_table

b_table ["x"] = 20 - Der Wert im Tisch ist zu 20 geändert worden.

Druck (b_table ["x"]) - Drucke 20.

Druck (a_table ["x"]) - druckt Auch 20, weil sich a_table und b_table beide auf denselben Tisch beziehen.

</syntaxhighlight>

Wir können Werte/Indizes von Tischen ebenso einfügen/entfernen.

lokaler myTable = {"a", "b" }\

table.insert (myTable, "c") - Druck (packen (myTable) aus)-> ein b c

table.remove (myTable, 2) - Druck (packen (myTable) aus)-> ein c

</syntaxhighlight>

Metatables

Ausziehbare Semantik ist ein Hauptmerkmal von Lua, und das metatable Konzept erlaubt den Tischen von Lua, auf starke und einzigartige Weisen kundengerecht angefertigt zu werden. Das folgende Beispiel demonstriert einen "unendlichen" Tisch. Für irgendwelchen, wird die Fibonacci-Zahl mit der dynamischen Programmierung und memoization geben.

Flunkereien = {1, 1} - Anfangswerte für Flunkereien [1] und Flunkereien [2].

setmetatable (Flunkereien, {

__ Index = Funktion (Name, n) - Anruf diese Funktion, wenn Flunkereien [n] nicht besteht.

Name [n] = Name [n - 1] + Name [n - 2] - Rechnet und memoize Flunkereien [n].

geben Sie Namen [n] zurück

Ende

})

</syntaxhighlight>

Ein anderes Beispiel, mit __ nennen metamethod, um einen Gegenstand Orientiertes Programmiergefühl zu schaffen:

newPerson = {} - Schafft genannten 'newPerson' eines neuen Tisches.

setmetatable (newPerson, {

__ rufen Sie = Funktion (Tisch, Name, Alter) - Verwandelt den newPerson Tisch in einen functable.

lokale Person = {Name = Name Alter = Schafft Alter} - eine lokale Variable, die alle Eigenschaften der Person hat, die Sie später schaffen.

geben Sie Person - Umsatz die Tabellenperson so zurück, wenn Sie es schaffen, wird es die Variablen in der Tabellenperson setzen.

Ende})

Bill = newPerson ("Bill Raizer", 21) - Schafft eine neue Person.

Druck (Bill. Name, Bill. Alter) - Drucke der Name und das Alter.

</syntaxhighlight>

Als Struktur

Tische werden häufig als Strukturen (oder Gegenstände) durch das Verwenden von Schnuren als Schlüssel verwendet. Weil solcher Gebrauch sehr üblich ist, zeigt Lua eine spezielle Syntax, um auf solche Felder zuzugreifen.

Beispiel:

weisen Sie = {x = 10 hin, y = 20} - Schaffen neuen Tisch

Druck (Punkt ["x"]) - Drucke 10

Druck (point.x) - Hat genau dieselbe Bedeutung wie Linie über

</syntaxhighlight>

Als namespace

Durch das Verwenden eines Tisches, um verwandte Funktionen zu versorgen, kann es als ein namespace handeln.

Punkt = {}\

Point.new = Funktion (x, y)

kehren Sie {x = x, y = y }\zurück

Ende

Punkt set_x = Funktion (Punkt, x)

point.x = x

Ende</syntaxhighlight>

Als Reihe

Durch das Verwenden eines numerischen Schlüssels ähnelt der Tisch einem Reihe-Datentyp. Reihe von Lua ist 1-basiert: Der erste Index ist 1 aber nicht 0, wie es für viele andere Programmiersprachen ist (obwohl einem ausführlichen Index 0 erlaubt wird).

Eine einfache Reihe von Schnuren:

ordnen Sie = {"a", "b", "c", "d"} - Indizes werden automatisch zugeteilt.

Druck (Reihe [2]) - Drucke "b". Das automatische Indexieren in Lua fängt an 1 an.

Druck (#array) - Drucke 4. # ist der Länge-Maschinenbediener für Tische und Schnuren.

Reihe [0] = "z" - Null ist ein gesetzlicher Index.

Druck (#array) - druckt Noch 4, weil Reihe von Lua 1-basiert ist.

</syntaxhighlight>

Eine Reihe von Gegenständen:

fungieren Sie Punkt (x, y) - "Punkt"-Gegenstand-Konstrukteur

kehren Sie {x = x zurück, y = y} - Schafft und gibt einen neuen Gegenstand (Tisch) zurück

Ende

ordnen Sie = {Punkt (10, 20), Punkt (30, 40), Punkt (50, 60)} - Schafft Reihe von Punkten

Druck (Reihe [2].y) - Drucke 40

</syntaxhighlight>

Das Verwenden einer Kuddelmuddel-Karte, um mit einer Reihe wettzueifern, ist normalerweise langsamer als das Verwenden einer wirklichen Reihe; jedoch werden Tische von Lua für den Gebrauch als Reihe optimiert, um zu helfen, dieses Problem zu vermeiden.

Objektorientierte Programmierung

Obwohl Lua kein eingebautes Konzept von Klassen hat, können sie mit zwei Spracheigenschaften durchgeführt werden: erstklassige Funktionen und Tische. Durch das Stellen von Funktionen und verwandten Daten in einen Tisch wird ein Gegenstand gebildet. Erbe (sowohl einzeln als auch vielfach) kann über den metatable Mechanismus durchgeführt werden, den Gegenstand lookup nicht existierenden Methoden und Feldern im Elternteilgegenstand (En) erzählend.

Es gibt kein solches Konzept wie "Klasse" mit diesen Techniken; eher werden Prototypen, als auf den Programmiersprachen Selbst oder JavaScript verwendet. Neue Gegenstände werden irgendein mit einer Fabrikmethode geschaffen (der neue Gegenstände von Kratzer baut), oder durch das Klonen eines vorhandenen Gegenstands.

Lua stellt etwas syntaktischen Zucker zur Verfügung, um Gegenstand-Orientierung zu erleichtern. Um Mitglied-Funktionen innerhalb eines Prototyp-Tisches zu erklären, kann man verwenden, der dazu gleichwertig ist. Das Benennen von Klassenmethoden macht auch vom Doppelpunkt Gebrauch: Ist dazu gleichwertig.

Das Schaffen eines grundlegenden Vektor-Gegenstands:

Vektor = {} - Schafft einen Tisch, um die Klassenmethoden zu halten

fungieren Sie Vector:new (x, y, z) - Der Konstrukteur

lokaler Gegenstand = {x = x, y = y, z = z }\

setmetatable (Gegenstand, {__ Index = Vektor}) - Erbe

geben Sie Gegenstand zurück

Ende

fungieren Sie Vector:magnitude - eine Andere Mitglied-Funktion

- Bringen Sie im impliziten Gegenstand-Verwenden selbst Verweise an

geben Sie math.sqrt (Selbst x^2 + Selbst y^2 + Selbst z^2) zurück

Ende

vec = Vector:new (0, 1, 0) - Schaffen einen Vektoren

Druck (vec:magnitude ) - Anruf ein Mitglied-Funktionsverwenden ":" (Produktion: 1)

Druck (vec.x) - Greift auf eine Mitglied-Variable Zu, die "." verwendet (Produktion: 0)

</syntaxhighlight>

Internals

Programme von Lua werden direkt von der Textdatei von Lua nicht interpretiert, aber werden in bytecode kompiliert, der dann auf Lua virtuelle Maschine geführt wird. Der Kompilationsprozess ist dem Benutzer normalerweise durchsichtig und wird während der Durchlaufzeit durchgeführt, aber es kann offline getan werden, um ladende Leistung zu vergrößern oder den Speicherfußabdruck der Gastgeber-Umgebung zu reduzieren, indem er den Bearbeiter auslässt.

Wie die meisten Zentraleinheiten, und verschieden von den meisten virtuellen Maschinen (die Stapel-basiert sind) ist der Lua VM Register-basiert, und ähnelt deshalb näher einem wirklichen Hardware-Design. Die Register-Architektur sowohl vermeidet das übermäßige Kopieren von Werten als auch reduziert die Gesamtzahl von Instruktionen pro Funktion. Die virtuelle Maschine von Lua 5 ist einer der ersten Register-basierten reinen VMs, um einen breiten Nutzen zu haben. Der von Perl

Papagei und der Dalvik des Androiden sind zwei andere wohl bekannte Register-basierte VMs.

Dieses Beispiel ist die Bytecode-Auflistung der Factorial-Funktion, die oben (wie gezeigt, durch den 5.1 Bearbeiter) definiert ist:

Funktion

1 param, 3 Ablagefächer, 0 upvalues, 1 Vorortszug, 3 Konstanten, 0 Funktionen

1 [2] EQ 0 0 - 1; - 0

2 [2] JMP 2; zu 5

3 [3] LOADK 1 - 2; 1

4 [3] RÜCKKEHR 1 2

5 [5] GETGLOBAL 1 - 3; factorial

6 [5] U-BOOT 2 0 - 2; - 1

7 [5] ANRUF 1 2 2

8 [5] MUL 1 0 1

9 [5] RÜCKKEHR 1 2

10 [6] RÜCKKEHR 0 1

C API

Lua ist beabsichtigt, um in andere Anwendungen eingebettet zu werden, und entsprechend stellt er eine robuste, gebrauchsfreundliche C API zur Verfügung. Die API wird in zwei Teile geteilt: der Kern von Lua und Lua Hilfsbibliothek.

Die Lua API ist ziemlich aufrichtig, weil sein Design das Bedürfnis nach dem manuellen Bezugsmanagement im C-Code verschieden von der API der Pythonschlange beseitigt. Die API, wie die Sprache, ist minimalistic. Fortgeschrittene Funktionalität wird von der Hilfsbibliothek zur Verfügung gestellt, die größtenteils aus Vorverarbeiter-Makros besteht, die komplizierte Tabellenoperationen schmackhafter machen.

Stapel

Der Lua C API ist gestützter Stapel. Lua stellt Funktionen zur Verfügung, einfachste C Datentypen (ganze Zahlen, Hin- und Herbewegungen, usw.) zu und vom Stapel, sowie den Funktionen zu stoßen und knallen zu lassen, um Tische durch den Stapel zu manipulieren. Der Lua-Stapel ist von einem traditionellen Stapel etwas verschieden; der Stapel kann direkt zum Beispiel mit einem Inhaltsverzeichnis versehen werden. Negative Indizes zeigen Ausgleiche von der Spitze des Stapels an (zum Beispiel, &minus;1 ist das letzte Element), während positive Indizes Ausgleiche vom Boden anzeigen.

Das Aufstellen von Daten zwischen Funktionen von C und Lua wird auch mit dem Stapel getan. Um eine Funktion von Lua zu nennen, werden Argumente auf den Stapel gestoßen, und dann zu sein, der verwendet ist, um die wirkliche Funktion zu nennen. Wenn man eine C-Funktion schreibt, von Lua direkt genannt zu werden, werden die Argumente vom Stapel knallen gelassen.

Spezielle Tische

Die C API stellt auch mehrere spezielle Tische zur Verfügung, die an verschiedenen "Pseudoindizes" im Stapel von Lua gelegen sind. Daran ist der globals Tisch aus Lua, der der wichtige namespace ist. Es gibt auch eine Registrierung, die daran gelegen ist, wo C Programme Werte von Lua für die spätere Wiederauffindung versorgen können.

Erweiterung und Schwergängigkeit

Es ist möglich, Erweiterungsmodule mit der Lua API zu schreiben. Erweiterungsmodule werden Gegenstände geteilt, die verwendet werden können, um die Funktionalität des Dolmetschers durch die Versorgung heimischer Möglichkeiten Schriften von Lua zu erweitern. Von der Seite von Lua erscheint solch ein Modul als ein namespace Tisch, der seine Funktionen und Variablen hält. Schriften von Lua können das Erweiterungsmodul-Verwenden laden.

Eine wachsende Sammlung von als Felsen bekannten Modulen ist durch ein Paket-Verwaltungssystem genannt LuaRocks, im Geist von CPAN, RubyGems und Pythonschlange-Eiern verfügbar.

Andere Quellen schließen LuaForge und das Verzeichnis von Lua Addons lua-users.org wiki ein.

Das sind einige der allgemein verwendeten Erweiterungspakete:

  • LuaSocket: TCP/UDP Steckdose, programmierend
  • LuaFileSystem: Der Zugang zu Verzeichnisstrukturen und Datei schreibt zu
  • LuaSQL: Datenbankkonnektivität
  • LuaSec: TLS/SSL Unterstützung
  • LuaSOAP: SEIFE-Protokoll unterstützt
  • CGILua: Werkzeug, um dynamische Webseiten zu schaffen und Eingangsdaten vom Web zu manipulieren, bildet
  • Luaposix: POSIX Bibliothek

Es gibt auch mehrere Pakete, um grafische Benutzerschnittstellen, Perl/POSIX regelmäßige Ausdrücke, Verschlüsselung, Dateikompression und viele andere zu schaffen. Vorschriftliche Lua bindings bestehen für die meisten populären Programmiersprachen einschließlich anderer scripting Sprachen. Für C ++ gibt es mehrere Schablone-basierte Annäherungen und einige automatische verbindliche Generatoren.

Anwendungen

Videospiele

In der Videospiel-Entwicklung wird Lua als eine scripting Sprache von Spielprogrammierern, vielleicht infolge weit verwendet, wie leicht es, seine schnelle Ausführung und seine kurze Lernkurve einbetten soll.

Apfel-EIN/AUSGABE-STEUERSYSTEM

Im Juni 2010 hat Apple Inc. die EIN/AUSGABE-STEUERSYSTEM-Entwickler-Abmachung verändert, den Gebrauch von interpretierten Sprachen wie Lua erlaubend. Die Abmachung hatte früher angegeben, dass "kein interpretierter Code heruntergeladen oder in einer Anwendung abgesehen vom Code verwendet werden darf, der interpretiert und durch den Apfel geführt wird, hat APIs und den eingebauten Dolmetscher Dokumentiert," die zurzeit auf das Ziel-C, C, C ++ und JavaScript beschränkt wurden.

Anderer

Das andere Anwendungsverwenden Lua schließt ein:

  • 3DMLW Steckgebrauch Lua scripting, um 3D verschiedene Ereignisse zu beleben und zu behandeln.
  • Adobe Photoshop Lightroom verwendet Lua für seine Benutzerschnittstelle.
  • HTTP Apachen-Server kann Lua überall im Bitte-Prozess (seit der Version 2.3, über den Kern mod_lua Modul) verwenden.
  • Artweaver verwendet Lua für scripting Filter.
  • Schrecklich, ein Fensterbetriebsleiter, wird teilweise in Lua geschrieben, auch das Verwenden davon als seine Konfigurationsdatei formatiert
  • Der Pfeilhecht-Server des Webs/Anwendung ist ein kleiner schnell, und embeddable C Bibliothek hat vorgehabt, in anderen Computerprogrammen eingebettet zu werden. Webanwendungen der Server-Seite für den Pfeilhecht werden in Lua geschrieben.
  • Canon Hack Development Kit (CHDK), eine offene Quelle firmware für Kanon-Kameras, verwendet Lua als eine von zwei scripting Sprachen.
  • Celestia, das Astronomie-Bildungsprogramm, verwendet Lua als seine scripting Sprache.
  • Cisco verwendet Lua, um Dynamische Zugriffspolicen innerhalb der Anpassungsfähigen Sicherheit Gerät durchzuführen.
  • Kundenspezifische Anwendungen für das Kreative Technologiezen X-Fi2 tragbarer Mediaspieler können in Lua geschaffen werden.
  • Verdammen Sie Kleinen Gebrauch von Linux Lua, um tischfreundliche Schnittstellen für Dienstprogramme der Befehl-Linie zur Verfügung zu stellen, ohne viel Speicherplatz zu opfern.
  • Delfin-Computerzugang verwendet Lua scripting, um unzugängliche Anwendungen zugänglich für visuell verschlechterte Computerbenutzer mit ihrem Schirm-Leser - SuperNova zu machen.
  • Der Fusionsschriftsetzer von Eyeon verwendet hat Lua für innere und äußerliche Schriften und auch Steckprototyping eingebettet.
  • Eine Gabel des NES Emulators, den Extremer FCE FCEUX genannt hat, berücksichtigt Erweiterungen oder Modifizierungen zu Spielen über Schriften von Lua.
  • Foldit, ein wissenschaftsorientiertes Spiel in der Protein-Falte, verwendet Lua für Benutzerschriften. Einige jener Schriften sind das Ziel eines Artikels in PNAS gewesen.
  • FreePOPs, eine ausziehbare Postvertretung, verwendet Lua, um sein Webvorderende anzutreiben.
  • Ginga, der middleware für das brasilianische Digitalfernsehsystem (SBTVD oder ISDB-T), verwendet Lua als eine Schrift-Sprache zu seiner Aussageumgebung, Ginga-NCL. In Ginga-NCL wird Lua als Mediagegenstände integriert (hat gerufen NCLua) innerhalb von NCL (hat Zusammenhang-Sprache Verschachtelt) Dokumente.
  • GrafX2, ein mit dem Pixelkunstredakteur, kann Schriften von Lua für die einfache Bilderverarbeitung oder generative Illustration führen.
  • Der Zeichnungsredakteur Ipe (hauptsächlich verwendet, um Zahlen mit dem LATEX-Beschriften zu erzeugen), verwendet Lua für seine Funktionalität und Schrift-Erweiterungen.
  • Lego Mindstorms NXT und NXT 2.0 können scripted mit Lua mit der Drittsoftware sein.
  • Lighttpd-Webserver verwendet Lua für Haken-Schriften sowie einen modernen Ersatz für das Geheime Lager Meta Language.
  • Die Version 2.01 der Profil-Verwaltungssoftware für den G15 von Logitech, der Tastatur spielt, verwendet Lua als seine scripting Sprache.
  • LuaTeX, der benannte Nachfolger von pdfTeX, erlaubt Erweiterungen, in Lua geschrieben zu werden.
  • MediaWiki (der Mächte) plant, Lua als seine neue Schablone scripting Sprache zu verwenden.
  • MikroTik RouterOS hat Beta-Unterstützung von Lua in 4.x und geplante Unterstützung in 5.x.
  • Multimediafusionsentwickler 2 hat eine Erweiterung von Lua, die Spielen und damit geschaffenen Anwendungen erlaubt, Schriften von Lua zu führen.
  • Arbeitstisch von MySQL verwendet Lua für seine Erweiterungen & Erweiterungen.
  • Nginx hat ein starkes eingebettetes Modul von Lua, das eine API zur Verfügung stellt, für auf Möglichkeiten von Nginx wie das Steckdose-Berühren zum Beispiel zuzugreifen.
  • Nmap-Netzsicherheitsscanner verwendet Lua als die Basis für seine scripting Sprache, genannt nse.
  • Der GSM von Wavecom firmware Offen AN OS erlaubt Benutzeranwendungen, in Lua geschrieben zu werden.
  • Planen Sie, dass sich Dogwaffle Fachmann bietet, sickert Lua scripting, um zu machen, durch den Filter von DogLua durch. Filter von Lua können zwischen Projektdogwaffle, GIMP, Pixarra Twistedbrush und ArtWeaver geteilt werden.
  • Prosodie ist eine Quer-Plattform Jabber/XMPP in Lua geschriebener Server.
  • Schließen Sie Digitalaudioarbeitsplatz, Lua wird verwendet, um Entfernten codecs zu beschreiben.
  • Redis ist eine offene Quellschlüsselwert-Datenbank, in der Lua verwendet werden kann (mit der Version 2.6 anfangend), um komplizierte Funktionen zu schreiben, die im Server selbst laufen, so seine Funktionalität erweiternd.
  • Wiedergeräuschaudiospurenleser, in dem Lua scripting verwendet wird, um Funktionalität zu erweitern.
  • Rockbox, die offene Quelle Digitalaudiospieler firmware, unterstützt in Lua geschriebenen plugins.
  • Neue Versionen des Redakteurs von SciTE können mit Lua erweitert werden.
  • Schnauben-Eindringen-Entdeckungssystem schließt einen Dolmetscher von Lua seit 3.0 Beta-Ausgabe ein.
  • Die Akkordeon-Musik-Spieler von Logitech unterstützen plugins, der in Lua über neue Modelle (Kontrolleur, Radio und Berührung) geschrieben ist.
  • Tarantool/Box Datenbank von NoSQL verwendet Lua als seine versorgte Verfahren-Sprache
  • TI-Nspire Rechenmaschinen enthalten in Lua geschriebene Anwendungen, seitdem TI Lua scripting Unterstützung mit einer mit der Rechenmaschine spezifischen API in OS 3 + hinzugefügt hat.
  • Schwung hat Unterstützung von Lua scripting, die mit der Version 7.3 anfängt.
  • VLC Mediaspieler verwendet Lua, um Scripting-Unterstützung zur Verfügung zu stellen.
  • WeeChat IRC Kunde erlaubt Schriften, in Lua geschrieben zu werden.
  • Proxyserver von WinGate erlaubt Ereignis-Verarbeitung und Politik, lua Schriften mit dem Zugang zu inneren Gegenständen von WinGate durchzuführen.
  • Netzpaket von Wireshark Analysator erlaubt Protokoll-Sezierern und Postsezierer-Klapsen, in Lua geschrieben zu werden.

Weiterführende Literatur

  • (1. Hrsg. ist online verfügbar)
  • - Interview mit Roberto Ierusalimschy
  • - Wie der embeddability von Lua sein Design zusammengepresst
hat

Außenverbindungen


Source is a modification of the Wikipedia article Lua (programming language), licensed under CC-BY-SA. Full list of contributors here.
GLONASS / Die 1480er Jahre v. Chr.
Impressum & Datenschutz