web-dev-qa-db-fra.com

Pourquoi Python et pas Lua?

Pourquoi Python a-t-il été soutenu par Google et est-il devenu si rapidement populaire et Lua ne l'a pas fait?

Savez-vous pourquoi Lua est resté en arrière-plan?

47
BenjaminB

J'aime vraiment Lua, mais il a de réelles limites, et comme d'autres l'ont mentionné, ils dérivent principalement des origines de Lua en tant que langage de fichier de configuration, puis plus tard en tant que langage de script intégré.

En raison de l'objectif de garder Lua petit, il n'existe qu'une très petite bibliothèque standard, qui n'a que la fonctionnalité de base.

Cela a conduit à une culture malheureuse dans les cercles Lua où les développeurs Lua aiment réimplémenter eux-mêmes les fonctionnalités offertes par de nombreuses bibliothèques standard d'autres langages plutôt que de travailler collectivement sur un ensemble universellement accepté de bibliothèques de base.

Des choses comme le multithread, les expressions régulières, les méthodes d'accès aux fichiers indépendantes de la plate-forme et même les opérations sur les bits (jusqu'à 5.2) n'étaient pas toutes incluses car elles rendraient Lua beaucoup plus grande et plus lente. Bien sûr, vous pouvez demander aux bibliothèques de faire ces choses - mais celles-ci ont des mainteneurs indépendants et des niveaux de qualité.

Ne vous méprenez pas. J'adore Lua pour les mêmes raisons que je viens d'énumérer.

40
sylvanaar

Simple: Lua a plus d'objectifs "de niche" que Python.

Python est considéré comme utile en tant que langage de programmation général. Donc, il est utile dans de nombreux cas. Il couvre de nombreux types d'applications bien connus mais n'entre pas directement en concurrence avec d'autres langages qui pourraient être ciblés sur des contraintes spécifiques, mais sur la simplicité de sa syntaxe.

Lua est totalement destiné à être un langage de script intégré. C'est son objectif initial, même s'il est utilisé dans d'autres contextes actuellement, comme les systèmes de construction; doit être intégré dans le logiciel et permettre une mise en œuvre facile des fonctions et des structures de script spécifiques au domaine. Il est tellement minimaliste qu'il peut même être utilisé sur du matériel vraiment contraint (j'ai utilisé Lua sur NintendoDS), il est léger, facile à utiliser, RAPIDE, et est un langage tellement minimaliste mais pensé pour être étendu que beaucoup de dialecte (importation de paradigmes comme orientation objet) sont disponibles. Il est si portable (ANSI C) que vous pouvez l'utiliser sur n'importe quel matériel embarqué avec une quantité décente de mémoire pour les logiciels embarqués modernes (si je me souviens bien, la lua vm par défaut est d'environ 400ko et ne grandira presque jamais si vous ne bouclez pas la création d'objets ...).

Donc, Lua est initialement utilisé dans un contexte où vous devez intégrer un langage de script pour votre application.

Python est utilisé pour ... presque tout ce qui ne nécessite pas de langage plus spécialisé (vous pouvez créer des jeux assez performants en utilisant Python, mais certains types de jeux exigeants en performances nécessitent vraiment d'éviter un tel système).

C'est simplement que Python est utilisé dans plus de contextes que Lua. Pour autant que je sache, autre que Android (qui fournit = Java et prise en charge des langues natives), Google n'est pas une société de logiciels intégrés, ils n'ont donc pas vraiment besoin de Lua partout, tandis que Python est utile pour tout ce qu'ils font) (web, build system, communication, web et web).

Python est également utilisé dans de nombreux jeux pour les scripts intégrés, mais il est lourd et plus lent que Lua. La syntaxe de Python le rend plus approprié pour les grands jeux qui s'appuient beaucoup sur des informations scriptées dans leur structure de jeu (je ne suis pas sûr que je sois clair là-bas, mais pensez simplement que si vous avez besoin d'un "vrai complet") langage "pour les scripts, l'intégration Python peut être une bonne idée, si les performances vous conviennent). Python n'a pas été conçu pour être incorporé, c'est donc Un équivalent de Python destiné à être intégré dans C++ est Falcon.

Pour une comparaison extrême, certains langages qui ciblent l'intégration et tentent d'avoir une syntaxe plus complète que le Lua minimaliste, et rivalisent de performances: ChaiScript, AngelScript, Io ...

Au fait, j'ai vu de nouveaux systèmes de construction comme PreMake ou Bam utiliser Lua comme langage de fichier de construction. L'idée est qu'il est léger et bien connu des développeurs de jeux (construire des systèmes dans le développement de jeux est un problème majeur). Alors peut-être que c'est un autre domaine où Lua pourrait être plus apprécié. C'est certainement plus convivial que la syntaxe CMake ....

56
Klaim

Vous pouvez tout faire avec Lua, il est créé comme un langage de script pour étendre les programmes? Oui, mais c'est loin d'être limité, il y a beaucoup de bibliothèques pour Lua, et avec les bons outils (FFI ou tolua de LuaJIT), vous pouvez même utiliser une bibliothèque C/C++ dessus. La raison pour laquelle Python plus utilisé à mon point de vue n'est que l'âge, Python est utilisé comme première langue dans de nombreux collèges et écoles, il y a plus de gens qui savent Python que Lua, et il est beaucoup plus facile de trouver une bonne bibliothèque pour Python que pour Lua, parce que le langage est plus mature. De plus, je Je ne sais pas grand-chose sur Python, mais autant que je sache, il est facile de cacher votre code à l'utilisateur final, qu'est-ce que dans Lua, n'est-ce pas facile, j'ai raison?

4
Gustavo