it-swarm-eu.dev

Warum Python und nicht Lua?

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

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

47
BenjaminB

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 Standard Bibliothek, die nur Bare-Bones-Funktionalität bietet.

Dies hat zu einer unglücklichen Kultur in Lua-Kreisen geführt, in der Lua-Entwickler die Funktionen vieler Standardbibliotheken anderer Sprachen 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) waren alle "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.

40
sylvanaar

Einfach: Lua hat mehr "Nischen" -Ziele als Python.

Python wird als allgemeine Programmiersprache angesehen. In vielen Fällen ist es also nützlich. Es deckt viele bekannte Anwendungstypen ab, tritt jedoch nicht direkt in Konkurrenz zu anderen Sprachen, die möglicherweise auf bestimmte Einschränkungen abzielen, sondern auf die Einfachheit der Syntax.

Lua ist ganz darauf ausgerichtet, eine eingebettete Skriptsprache zu sein. Es ist der ursprüngliche Zweck, auch wenn es derzeit in anderen Kontexten wie Build-Systemen verwendet wird. soll in Software eingebettet werden und eine einfache Implementierung domänenspezifischer Skriptfunktionen und -strukturen ermöglichen. Es ist so minimalistisch, dass es sogar auf wirklich eingeschränkter Hardware verwendet werden kann (ich habe Lua auf NintendoDS verwendet), es ist leicht, einfach zu bedienen, SCHNELL und eine so minimalistische Sprache, aber es wird angenommen, dass es viel Dialekt enthält (Paradigmen importieren wie Objektorientierung) sind verfügbar. Es ist so portabel (ANSI C), dass Sie es auf jeder eingebetteten Hardware mit ausreichend Speicher für moderne eingebettete Software verwenden können (wenn ich mich gut erinnere, liegt die Standard-lua vm bei 400 kO und wächst fast nie, wenn Sie keine Schleifen erstellen ...).

Also, Lua wird anfänglich 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 (Sie können mit Python ziemlich performante Spiele erstellen, aber für einige leistungsintensive Spiele ist es wirklich erforderlich, ein solches System zu vermeiden).

Es ist einfach so, dass Python wird in mehr Kontexten als Lua verwendet. Soweit ich weiß, außer Android (das bietet =) Java und Unterstützung für Muttersprachen), Google ist kein Unternehmen für eingebettete Software, daher benötigen sie Lua nicht wirklich ü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 Scripting verwendet, ist aber schwer und langsamer als Lua. Die Syntax von Python macht es besser für große Spiele geeignet, die in ihrer Spielstruktur stark auf Skriptinformationen angewiesen sind (ich bin mir nicht sicher, ob ich dort klar bin, aber denke nur, wenn du ein "echtes Komplett" brauchst Sprache "für Skripte, Einbetten Python könnte eine gute Idee sein, wenn die Leistung für Sie in Ordnung ist). Python wurde nicht zum Einbetten gemacht, das ist es also gut. Ein Äquivalent von Python, das in C++ eingebettet werden soll, ist Falcon.

Für extreme Vergleiche sind einige Sprachen, die auf das Einbetten abzielen und versuchen, eine vollständigere Syntax als die minimalistische Lua zu haben, und konkurrieren um die Leistung: ChaiScript, AngelScript, Io ...

Ich habe übrigens gesehen, dass neue Build-Systeme wie PreMake oder Bam Lua als Build-Dateisprache verwenden. Die Idee ist, dass es leichtgewichtig und bei Spieleentwicklern 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 ....

56
Klaim

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 viele Bibliotheken für Lua, und mit den richtigen Tools (LuaJITs FFI oder Tolua) können Sie sogar eine C/C++ - Bibliothek darauf verwenden. Der Grund, warum Python aus meiner Sicht häufiger verwendet wird, ist nur das Alter, Python wird in vielen Colleges und Schulen als Muttersprache verwendet, es gibt mehr Menschen das weiß Python als Lua, und es ist viel einfacher, eine gute Bibliothek für Python als für Lua zu finden, weil die Sprache reifer ist. Auch ich Ich weiß nicht viel über Python, aber so viel ich weiß, ist es einfach, Ihren Code vor dem Endbenutzer zu verbergen. Was in Lua ist nicht so einfach, ich habe Recht?

4
Gustavo