Warum Python und nicht Lua? [geschlossen]

45

Warum wurde Python von Google unterstützt und wurde so schnell populär und Lua nicht?

Weißt du, warum Lua im Hintergrund geblieben ist?

BenjaminB
quelle
3
Lua täuscht gerne vor, dass Arrays und Wörterbücher dasselbe sind, und hat einen Längen-Getter, der nicht nur falsche, sondern auch nicht deterministische Ergebnisse liefern kann. Ich weiß nicht, was Googles Gründe sind, aber das ist Grund genug für mich, es nicht zu mögen.
Steve314
4
Für mich ist Python einfacher zu programmieren, macht mehr Spaß und bietet mehr Funktionen. Einige Beispiele aus meinem Kopf: Generatoren sind in Python ( yield) ein erstklassiger Bürger , und Lua erfordert eine umständlichere Einrichtung. Pythons Listenindizierung [::]ist ein riesiges Plus. Python hat legitime Klassen und Vererbung. Lua ist zwar schneller, aber ich schreibe eigentlich gerne Go-Code für die Verwendung in Python, wenn es auf Geschwindigkeit ankommt.
Frank Bryce
Ich liebe LuaJIT, aber ein großer Teil meiner Liebe dazu ist die Leichtigkeit des Einbindens, der Geschwindigkeit und des jugendlichen Fußabdrucks. Wenn ich den ganzen Tag etwas einprogrammieren müsste, würde ich mich vielleicht mehr an Python orientieren.
@FrankBryce hast du es rückwärts. Pythons Generatoren sind eine Teilmenge von Luas Coroutinen. Siehe inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Antworten:

37

Ich liebe Lua wirklich, aber es gibt einige echte Einschränkungen, und wie andere bereits erwähnt haben, stammen sie hauptsächlich aus Luas Ursprüngen als Konfigurationsdateisprache und später als eingebettete Skriptsprache.

Aufgrund des Ziels, Lua klein zu halten, gibt es nur eine sehr kleine Standardbibliothek , die nur Bare-Bones-Funktionalität bietet.

Dies hat zu einer unglücklichen Kultur in Lua-Kreisen geführt, in der Lua-Entwickler die von vielen Standardbibliotheken anderer Sprachen angebotenen Funktionen gerne selbst neu implementieren, anstatt gemeinsam an einem allgemein akzeptierten Satz von Kernbibliotheken zu arbeiten.

Dinge wie Multithreading, reguläre Ausdrücke, plattformunabhängige Dateizugriffsmethoden und sogar Bitoperationen (bis 5.2) sind "nicht enthalten", da sie Lua viel größer und langsamer machen würden. Sicher, Sie können Bibliotheken dazu bringen, diese Dinge zu tun - aber dann haben diese unabhängige Betreuer und Qualitätsstufen.

Versteh mich nicht falsch. Ich liebe Lua aus den gleichen Gründen, die ich gerade aufgelistet habe.

Sylvanaar
quelle
54

Einfach: Lua hat mehr "Nischenziele" als Python .

Python wird als allgemeine Programmiersprache für nützlich gehalten. Daher ist es in vielen Fällen nützlich. Es deckt viele bekannte Arten von Anwendungen ab, konkurriert jedoch nicht direkt mit anderen Sprachen, die möglicherweise auf bestimmte Einschränkungen abzielen, sondern mit der Einfachheit der Syntax.

Lua ist ganz darauf ausgerichtet, eine eingebettete Skriptsprache zu sein. Dies ist der ursprüngliche Zweck, auch wenn er derzeit in anderen Kontexten verwendet wird, z. B. in Build-Systemen. soll in Software eingebettet sein und die einfache Implementierung domänenspezifischer Skriptfunktionen und -strukturen ermöglichen. Es ist so minimalistisch, dass es sogar für sehr eingeschränkte Hardware verwendet werden kann (ich habe Lua unter NintendoDS verwendet), es ist leichtgewichtig, einfach zu bedienen, SCHNELL und ist eine so minimalistische Sprache, dass viele Dialekte (wie das Importieren von Paradigmen) erweitert werden Objektorientierung) zur Verfügung. Es ist so portabel (ANSI C), dass Sie es auf jeder Embedded-Hardware mit ausreichend Speicher für moderne Embedded-Software verwenden können (wenn ich mich recht erinnere, liegt die Standard-Lua vm bei ca. 400 KB und wird fast nie größer, wenn Sie keine Schleife zum Erstellen von Objekten ausführen ...).

Daher wird Lua zunächst in einem Kontext verwendet, in dem Sie eine Skriptsprache für Ihre Anwendung einbetten müssen .

Python wird für ... fast alles verwendet, was keine Nischensprache erfordert (mit Python können Sie recht performante Spiele erstellen, aber einige leistungsintensive Spiele müssen wirklich ein solches System umgehen).

Es ist einfach so, dass Python in mehr Kontexten als in Lua verwendet wird. Soweit ich weiß, ist Google, abgesehen von Android (das Java- und Muttersprachenunterstützung bietet), kein Embedded-Software-Unternehmen. Daher benötigen sie Lua nicht überall, während Python für alles, was sie tun, nützlich ist (Web, Build-System) , Kommunikation, Web und Web).

Python wird in vielen Spielen auch für Embedded-Skripte verwendet, ist aber schwerer und langsamer als Lua. Die Syntax von Python eignet sich besser für große Spiele, die sich in ihrer Spielstruktur stark auf Skriptinformationen stützen (ich bin mir nicht sicher, ob ich das auch kann, aber wenn Sie eine "echte vollständige Sprache" für das Skripting benötigen, ist die Einbettung von Python möglicherweise sinnvoll eine gute Idee, wenn die Leistung für Sie in Ordnung ist). Python sollte nicht eingebettet werden, das ist also in Ordnung. Ein Äquivalent zu Python, das darauf abzielt, in C ++ eingebettet zu werden, ist Falcon.

Zum Vergleich: Einige Sprachen, die auf Einbettung abzielen und versuchen, eine vollständigere Syntax als die minimalistische Lua zu haben, und konkurrieren mit der Leistung: ChaiScript, AngelScript, Io ...

Übrigens habe ich gesehen, dass neue Build-Systeme wie PreMake oder Bam Lua als Build-Dateisprache verwenden. Die Idee ist, dass es leicht und von Spieleentwicklern gut bekannt ist (das Erstellen von Systemen in der Spieleentwicklung ist ein großes Problem). Vielleicht ist das eine andere Domäne, in der Lua mehr geschätzt wird. Es ist sicherlich benutzerfreundlicher als die CMake-Syntax ....

Klaim
quelle
4
Ich denke, Luas Ziel als eingebettete Sprache ist wahrscheinlich ein Hauptfaktor. Trotzdem glaube ich, dass die "Beliebtheit" einer Sprache weniger mit dem tatsächlichen Design oder den Fähigkeiten der Sprache selbst zu tun hat als vielmehr mit der Frage "zur richtigen Zeit am richtigen Ort" (siehe beispielsweise PHP).
Dean Harding
Nun, ich denke, dass eine Sprache, die auf einen bestimmten Zweck ausgerichtet ist, auf natürliche Weise bestimmte Benutzer anspricht, was das Publikum zurückhaltender macht als jede andere Allzwecksprache. Ein geringeres Publikum als Mehrzwecksprachen wirkt sich direkt auf die Anzahl der Personen aus, die jemals darüber sprechen werden. Ansonsten bedeuten bestimmte Ziele bestimmte Merkmale. Daher ist es nicht für jede Situation gut. Hier ist zum Beispiel lua alleine keine sehr gute GUI-Programmiersprache. Es sind einige Ergänzungen erforderlich, um wirklich nützlich zu sein.
Klaim
Trotzdem stimme ich voll und ganz zu: Wenn PHP nicht für ein so weit verbreitetes Gebiet wie die Entwicklung von Websites verwendet würde, wäre es jetzt nicht überall.
Klaim
Lua wird hauptsächlich als eingebettete Sprache verwendet, ist jedoch eine universelle Programmiersprache. Sie können beispielsweise CGI-Skripte mit mod_lua erstellen. Ich könnte meine Frage dahingehend ändern, warum lua als eingebettete Sprache bleibt.
BenjaminB
Weil es der Ursprung ist. Sie können es als Allzwecksprache verwenden, ja, da Sie PHP auch für allgemeine Zwecke verwenden können. Sie können auch Perl verwenden, um dasselbe zu tun. Aber ihre Herkunft gibt ihre Orientierung vor. Wiederum macht ihr ursprünglicher Zweck sie für allgemeine Sprachen weniger nützlich als andere Sprachen. Lua fehlt eine Feature-Sprache, um mit dem GUI-System einfach zu verwenden zu sein, zum Beispiel die Objektorientierung (die Sie leicht hinzufügen können, aber sie ist nicht nativ). Stellen Sie sicher, dass Sie den Unterschied zwischen einer Sprache, die ursprünglich für einen bestimmten Zweck erstellt wurde, und einer allgemeinen Sprache erkennen. Sie haben sowieso alle Einschränkungen.
Fordern Sie den
4

Sie können alles mit Lua machen, es wurde als Skriptsprache erstellt, um Programme zu erweitern? Ja, aber es ist keineswegs darauf beschränkt, es gibt eine Menge Bibliotheken für Lua, und mit den richtigen Werkzeugen (LuaJITs FFI oder Tolua) können Sie sogar eine C / C ++ - Bibliothek darauf verwenden. Der Grund, warum Python in meinen Augen häufiger verwendet wird, ist nur das Alter. Python wird in vielen Hochschulen und Schulen als Muttersprache verwendet, es gibt mehr Leute, die Python kennen als Lua, und es ist viel einfacher, eine gute Bibliothek für Python zu finden als für Lua, weil die Sprache reifer ist. Außerdem weiß ich nicht viel über Python, aber so gut ich weiß, ist es einfach, den Code vor dem Endbenutzer zu verbergen. Was in Lua ist das nicht einfach?

Gustavo
quelle