Frage

Wenn ich Lua sehen, das einzige, was ich je gelesen ist „großartig für das Einbetten“, „schnell“, „leichte“ und häufiger als alles andere. „World of Warcraft“ oder kurz „WoW“

Warum ist es begrenzt die ganze Sache in einer anderen Anwendung einbetten? Warum nicht schreiben Allzweck-Skripte wie Sie mit Python oder Perl tun?

Lua scheint in Aspekten wie Geschwindigkeit und Speicher-Nutzung (das schnellste Skriptsprache afaik) dabei groß zu sein, so, warum es ist, dass ich nie als „Desktop-Scripting-Sprache“ verwendet wird Lua siehe Aufgaben zu automatisieren? Zum Beispiel:

  • Umbenennen einer Reihe von Dateien
  • Laden Sie einige Dateien aus dem Internet
  • Screen Scraping

Ist es das Fehlen der Standardbibliothek?

War es hilfreich?

Lösung

Nur weil es „vermarktet“ (in einigen allgemeinen Sinn) als Spezial-Sprache für eingebettete Skriptmodule, bedeutet nicht, dass es auf das begrenzt ist. In der Tat hat WoW wahrscheinlich nur könnte auch Python als eingebettete Skriptsprache gewählt.

Andere Tipps

Lua ist eine coole Sprache, leicht und extrem schnell!

Aber der Punkt ist: Ist die Leistung so wichtig für diejenigen, Aufgaben, die Sie erwähnt haben?

  • Umbenennen einer Reihe von Dateien
  • Laden Sie einige Dateien aus dem Internet
  • Screen Scraping

Sie schreiben, sobald diese Programme, und sie einmal laufen, auch vielleicht. Warum interessieren Sie sich über die Leistung so viel für eine einmalige Ausführung Programm?

Zum Beispiel:

  1. Kosten 3 Stunden eine C / C ++ Programm zu schreiben, Daten einmal zu verarbeiten, dauert das Programm 1 Stunde ausgeführt werden.
  2. Kosten 30 Minuten ein Python-Programm zu schreiben, Daten einmal zu handhaben, nimmt das Programm 10 Stunden ausgeführt werden.

Wenn Sie die ersten wählen, können Sie die Zeit sparen, um das Programm auszuführen, aber sie kosten Zeit, das Programm zu entwickeln.

Auf der anderen Seite, wenn Sie den zweiter wählen Sie Zeit verschwenden laufen das Programm, aber Sie können andere Dinge tun, wenn das Programm ist Laufen. Wie wäre es Spiel World of Warcraft, Monster töten mit Warlock? Eat my D.O.T ! : P

Das ist es! Obwohl Lua nicht so schwer zu schreiben, ist alles über Lua entwickelt, um efficient.And was mehr ist, gibt es kleine Module für Lua, aber es gibt so viele Module für Python. Sie wollen nicht, eine C-Bibliothek für Lua-Port nur für eine einmalige Ausführung Programm, nicht wahr? Stattdessen Python wählen und diese Modul verwenden, um Ihre Aufgabe zu erfüllen leicht könnte eine bessere Idee sein.

Zur Info: Eigentlich habe ich versucht, Lua zu verwenden Screen Scraping zu tun, aber schließlich, erkannte ich, ich weiß nicht so viel über die Sprache Leistung zu kümmern. Der Engpass von Screen Scraping ist nicht auf der Leistung der Sprache . Der Engpass ist auf Netzwerk-I / O, HTML-Analyse und Multitasking. Alles, was ich zu tun haben, ist das Programm funktioniert und stellen Sie sicher, um den Engpass zu finden. Schließlich entschied ich mich für Python statt Lua. Es gibt so viele ausgezeichnete Python-Modulen; Ich habe keinen Grund zu bauen meine eigen.

Nach meiner Erfahrung über Screen Scraping, wählte ich Verdrehte für Netzwerk-I / O und lxml für HTML-Analyse als Backend meines Screen Scraping-Programm. Ich habe einen Artikel für eine Einführung dieser Technologie geschrieben.

Die beste Wahl zu greifen Daten von Websites: Python + Verdrehte + lxml

Hope dies hilfreich ist.

Lua hat weniger Bibliotheken als Python. Aber achten Sie darauf, einen Blick haben unter LuaForge . Es hat eine Menge interessanter Libs, wie LuaCURL , wxLua oder getopt .

Dann besuchen Sie LuaRocks , das Paketverwaltungssystem für Lua. Mit ihm können Sie reifste Lua-Module mit Abhängigkeiten suchen und installieren. Es fühlt sich an wie RubyGems oder aptitude .

Die Website lua-users.org hat viele interessante Ressourcen zu, wie Tutorials oder die Lua Wiki .

Was ich über Lua mag, ist nicht seine Geschwindigkeit, es ist seine minimale Kernsprache, Flexibilität und Erweiterbarkeit.

Das heißt, ich wahrscheinlich Python verwenden würde für die Aufgaben, die Sie wegen der größeren Gemeinschaft erwähnt tun solche Dinge in Python.

Es ist wahrscheinlich, weil Lua wurde als Skript- und Erweiterungssprache entwickelt. Auf der es als ein leistungsfähiges, schnell, leicht, integrierbare Skriptsprache beschrieben wird. Es gibt nichts, was man vom Schreiben Allzweck-Programme für sie zu stoppen (wenn ich mich richtig es wird mit einem Interpreter und Compiler erinnern), aber die Sprache Designer bestimmt es hauptsächlich als eingebettete Sprache verwendet werden (daher leicht und alles ist)

Dies ist eine soziologische Frage, keine Programmiersprache Frage.

Ich verwende Lua für allgemeine Zwecke Scripting fast ausschließlich. Aber ich hatte ein paar hundert Zeilen Code zu schreiben, so dass Lua wäre besser mit der Schale spielen. Dazu gehörten solche Tricks wie

  • einen String Quoting, so dass es als ein Wort durch die Schale zu sehen ist
  • eine Funktion Schreiben der Ausgabe eines Befehls wie in Shell $ (Befehl)
  • erfassen
  • eine Funktion Schreiben Sie das Dateisystem mit der Lua Posix-Bibliothek und erweitern Shell Globbing Muster zu kriechen

(Für diejenigen, die interessiert sein könnten, habe ich den Code in meinem links Lua Drop Box , die auch einige andere Sachen enthalten die interessanten Sachen wahrscheinlich in osutil in os.quote ist, os.runf, os.capture, und vielleicht os.execve Der Globbing ist in posixutil.lua beide benutzen Luiz Henrique de Figuereido der Lua Posix Bibliothek .)

Für mich ist der zusätzliche Aufwand ist es wert, weil ich mit einem einfachen Syntax und großen Datenstrukturen umgehen kann. Für andere eine direkte Verbindung mit der Schale könnte bevorzugt werden.

Auf jeden Fall einen Mangel an Standardbibliotheken. Es ist auch weniger bekannte als Python, Perl oder Ruby.

Es hat ein neuerlicher Vorstoß eine Batterie Installation für Lua unter Windows zu erstellen. Das Ergebnis kann auf der Lua für Windows Projekt bei LuaForge finden. Es umfasst den Dolmetscher und eine große Sammlung von zusätzlichen Modulen nützliche Skripte und Anwendungen ermöglichen geschrieben und aus der Box verwendet werden.

Ich weiß, dass verschiedene Linux-Distributionen sind inklusive Lua und einige Module jetzt, und mehr kommen wird.

Es gibt auch ein paar vorgeschlagenen Modulbibliotheken in der Diskussion in der Mailing-Liste, aber die Gemeinschaft noch nicht auf einem als „offiziellen“ Mechanismus abgewickelt.

I Lua verwenden sowohl als Skriptsprache und als „main“ Schleife meiner typischen Anwendung, unterstützt durch eine oder mehrere DLLs Code enthält, der besser wurde in C implementiert, oder Umwickeln vorhandenen Bibliotheken oder API-Funktionen, die durch ein benötigt werden bestimmte Projekt. Wird mit einem GUI-Toolkit wie IUP oder wxLua (a Lua für wxWindows Bindung), macht Lua kleine bis mittelgroße Anwendungen mit grafischer Benutzeroberfläche sehr angenehm zu schreiben.

Ich denke, die Antwort über sie ein „Marketing“ Ding ist wahrscheinlich richtig ist, zusammen mit dem Mangel an einem großen Satz von Bibliotheken zur Auswahl. Ich möchte noch einen weiteren Fall dieser hinweisen: Rubin. Ruby ist gemeint, eine Allzweck-Skriptsprache sein. Das Problem ist, dass seit Ruby on Rails ist mittlerweile so beliebt gestiegen zu sein, es ist immer etwas schwer zu finden, die Rails ohne Beziehung ist. Ich habe Angst, Lua wird dies auch leiden, beliebt wegen eines paar wichtigen Dinge, die es verwenden, aber nie in der Lage frei von diesem Stigma zu brechen.

Der Mangel an Standard-Bibliothek. Zeitraum. Auch alle in einem Verzeichnis der Dateien Auflistung erfordert einen Nicht-Standard-Modul .

Es gibt gute Gründe dafür (strikte Einhaltung der ANSI Portabilität, POSIX nicht erforderlich ist), aber das Ergebnis ist, dass für die allgemeine Programmierung, ich Python bevorzugen.

Lua ist in LuaTeX , eine TeX-Erweiterung, als eingebettete Sprache und an Popularität gewonnen hat sich schnell unter TeX-Entwickler aus diesem Grund. Es wird als Skriptsprache für einige Dienstprogramme in der TeX Live-Distribution verwendet, wäre es nur, weil jetzt ein luatex binär ist, auf allen Plattformen zur Verfügung, die auch als Lua-Interpreter verwendet werden kann (mit einigen lebenswichtigen Module hinzugefügt - slnunicode, luafilesystem, etc.) Das ist sehr wichtig für die Windows-Installationen, die stützte sich auf zusätzliche Unix-Scripting-Tools früher (ActivePerl, etc.) Die ConTeXt Makrosprache verwendet Skripte Lua ausgiebig heute.

Das ist zwar ein ganz besonderes Feld :-) Aber völlig unabhängig von Spielen!

Um Lua, um einfach einbinden, um sie wenige Abhängigkeiten haben muss und klein sein. Das macht es schlecht geeignet als Allzweck-Skriptsprache. Weil es als Allzweck-Skriptsprache würde eine Menge Standardbibliotheken erfordern. Aber wenn Lua viele Standardbibliotheken hätte es schwieriger sein einzubetten (aufgrund von Abhängigkeiten und Speicherbedarf).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top