2010-01-20 5 views
61

Lua nimmt einen guten Platz im Bereich der Sprachen, die eingebettet werden können. Sind die primären Ideen, die hinter Lua stehen, neue Ideen von den Machern, oder ist Lua in erster Linie eine gut durchdachte Kombination von gut eingeführten Ideen?Basiert Lua hauptsächlich auf gut eingeführten Programmiersprachen?

Der Vergleich der Eigenschaften und Merkmale von Lua mit anderen PLs ist besonders geeignet.

Antwort

129

Dies ist eine sehr interessante Frage. Mein Job ist es, Programmiersprachen zu lernen, und Lua wird sorgfältiges Studium zurückzahlen. Ich würde das über sehr wenige andere Sprachen sagen (vielleicht Icon und CLU). Bitte beachten Sie, dass es die Sprache als Ganzes ist, nicht die einzelnen Funktionen, die Lua so würdig zu studieren macht.

Ist dies ein Ergebnis von interessanten neuen Ideen, die die Implementierer hatten, oder ist es das Ergebnis einer guten Umsetzung von gut eingeführten Ideen?

Beide. Für die Details ist Ihre beste Quelle für eine Antwort auf diese Frage das Papier The Evolution of Lua, das auf dem Dritten ACM-Symposium über die Geschichte der Programmiersprachen erschienen ist. Aber ich werde ein paar Kommentare hinzufügen.

  • Die Verwendung von Lua Tabellen als nur wandelbar, nicht-atomare Art von Daten wurde von dem Lua Team erfunden. Sie wurden von Entwicklungen in CLU inspiriert, und ich glaube, sie waren sich einer ähnlichen Arbeit in Awk und Icon bewusst, aber die Verfeinerung in diesem Ausmaß ist ein wichtiger Beitrag des Lua-Teams.

    Tabellen haben auch eine sehr effiziente Implementierung, die vom Lua-Team erfunden wurde.

  • Die funktionellen Eigenschaften von Lua haben die gleiche Semantik wie Schema, aber Lua eine einzigartige Implementierung von erstklassigen Funktionen, die ich denke, sie sollten zur Veröffentlichung im Journal of Functional Programming einzureichen.

  • Die API zum Einbetten wurde im Laufe der Jahre stark verfeinert. Das Hauptunterscheidungsmerkmal ist, dass benutzerdefinierte abstrakte Typen vollständig an der Einbettung teilnehmen können. Dies ist die Eigenschaft, die die Lua-API beispielsweise der Tcl-API überlegen macht. Die Lua-API hat im Laufe der Jahre eine große Verfeinerung erfahren, einschließlich seit ihrer ersten Veröffentlichung in der Version 2.5. Die Lua-Designer verdienen hier viel Anerkennung.

  • Die Müllsammeltechnologie ist Standard.

  • Lua Korotinen repräsentieren eine neue Sicht auf einige sehr alte Ideen. Die neue Take wurde in ACM Transaktionen auf Programmiersprachen und Systeme veröffentlicht, so wieder denke ich, dass das Lua-Team Anerkennung für Originalität erhalten.

  • Lua-Metatabellen sind mit dem Common-Lisp-Metaobjekt-Protokoll verwandt.

Ich denke, dass Lua Erfolg resultiert aus einer einzigartigen Kombination von Stärken des Lua-Teams:

  • Wenn Sie die HOPL paper lesen, werden Sie sehen, dass das Lua-Team waren uns bewusst von vielen Entwicklungen in Programmiersprachen und konnten aus den besten Ideen auswählen. Die meisten Designer populärer Skriptsprachen waren Amateure und waren nicht annähernd so gut informiert.

  • Lua ist hervorragend entworfen so dass die Stücke sehr gut zusammenpassen, mit einem ausgezeichneten Leistungsgewicht. Dies ist das Ergebnis von vielen Verfeinerungen im Laufe der Zeit, und PUC-Rio war bereit für das Lua-Team, um das Sprachen-Design und die Implementierung zu entwickeln, anstatt eine große Anzahl von Papieren auszuarbeiten. Diese Arbeit hätte nicht an einer nordamerikanischen Universität gemacht werden können.

  • Lua ist hervorragend entwickelt. Die Implementierung ist einfach atemberaubend gut. Das ist zum Teil eine großartige Arbeit von großartigen Ingenieuren und zum Teil die Möglichkeit, das Design über einen Zeitraum von 15 Jahren ständig zu überarbeiten.

Ich werde mit der Frage Leser schließen nicht die Schwierigkeit Wahl und Raffinierung gut etablierte Ideen zu unterschätzen ein kohärentes Ganzes zu bilden. Dies ist eine äußerst schwierige Arbeit und wird selten so wahrgenommen, wie es sein sollte.

+9

+1: sehr gute Antwort –

+5

Zur Zeit, siehe "Die Implementierung von Lua 5.0" unter http://www.lua.org/doc/jucs05.pdf Wir arbeiten an diesem Papier, Norman, aber Lua 5.2 erregt gerade unsere Aufmerksamkeit ... – lhf

+1

Das TOPLAS-Papier, Revisiting Coroutines, wurde auf LtU diskutiert, das ich aus irgendeinem Grund nicht beachtet habe: http://lambda-the-ultimate.org/node/ 2868 –

4

Lua ist klein, der gesamte Code ist nur Zehntausende Zeilen in ANSI C. (Python hat zehn Mal mehr Zeilen Code).

Lua ist sehr stabil, oder sagen wir, die Sprache ist jetzt behoben.

Lua hat gute Technik. Sein Code ist einfach zu lesen und zu hacken. (auch weil klein)

Seine Lizenz erlaubt Ihnen zu tun, was immer Sie wollen.

Schreiben C-Erweiterungen in Lua ist einfacher als andere Sprachen, sagen Python.

+4

Also das alles zählt als gute Technik, anstatt irgendetwas mit Sprachdesign zu tun? –

+2

Nein, es gibt viel Technik, aber es gibt innovative Designentscheidungen, wie Norman bemerkte. Lesen Sie das HOPL-Papier. – lhf

0

Ich denke, das ist, weil Lua relativ einfach und pragmatisch ist. Es versucht nicht, die Sprache zu sein, um das nächste Betriebssystem Crysis 3 oder einen SAP-Klon zu bauen, aber was es tut, tut es gut, d. H. Es dient als eine Skriptsprache.

7

Lua unterstützt funktionale Programmierung und es basiert auf Prototype-based Programmierstil, der flexibel und leistungsstark ist.

IMO ist eine interessante Sprache.

Wenn Sie einige Gedanken über Prototypvererbung lesen wollen, empfehle ich Ihnen zu
Steve Yegge der Post The Universal Design Pattern Blog lesen.

+0

Danke: Der Link ist interessant. Die Arbeit an Lua begann 1993, 3 Jahre nach der Veröffentlichung von Self, und 7 Jahre nach Bornings "Klassen versus Prototypen in objektorientierten Sprachen". Hat Lua eine neue prototypbasierte Programmierung eingeführt? –

+0

@Charles, Ich habe nur mit Prototypen in Lua experimentiert und ich weiß nicht wirklich die Antwort auf Ihre Frage. Vielleicht kann jemand anderes etwas Licht darauf werfen. –

+0

Sicher. Es interessiert mich sicherlich, dass ich nicht an eine frühere prototypbasierte Sprache denken kann, die eine breite Verwendung gefunden hat. –

2

Es gibt eine Lambda the Ultimate Geschichte, Small is Beautiful: the design of Lua, diskutieren Robert Ierusalimschy's jüngsten Vortrag an der Stanford mit dem gleichen Namen. Die Diskussion konzentriert sich derzeit auf die Vorteile von Tabellen als einzige Containerdatenstruktur; Bis jetzt wurde wenig über den anderen Teil des Vortrags gesprochen, der sich mit Lua's C-Interface beschäftigt.