Pourquoi Python et pas Lua? [fermé]


45

Pourquoi Python a-t-il été soutenu par Google et est-il devenu si rapidement populaire, contrairement à Lua?

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


3
Lua aime faire semblant que les tableaux et les dictionnaires sont la même chose et que leur longueur leur permet d'obtenir non seulement des résultats erronés, mais également des résultats non déterministes. Je ne sais pas ce que sont les raisons de googles, mais c'est une raison suffisante pour que je ne l'aime pas.
Steve314

4
Pour moi, Python est plus facile à coder, plus agréable et a plus de fonctionnalités. Quelques exemples tirés de l’esprit: les générateurs sont des citoyens de premier ordre dans Python ( yield), et Lua nécessite une configuration plus lourde. L'indexation des listes de Python [::]est un énorme avantage. Python a des classes légitimes et un héritage. Lua est plus rapide, oui, mais j'aime bien écrire du code Go à utiliser en Python lorsque la vitesse est importante.
Frank Bryce

J'adore LuaJIT, mais une grande partie de mon amour pour ce produit réside dans sa facilité d'intégration, sa vitesse et son faible encombrement. Si je devais programmer quelque chose toute la journée, je pourrais me pencher davantage vers Python.

@ FrankBryce vous l'avez eu à l'envers. Les générateurs Python sont un sous-ensemble des coroutines de Lua. Voir inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Réponses:


37

J'adore vraiment Lua, mais il comporte de réelles limitations et, comme d'autres l'ont mentionné, elles proviennent principalement de l'origine de Lua en tant que langage de fichier de configuration, puis en tant que langage de script intégré.

En raison de l’objectif de maintenir Lua petit, il n’existe qu’une très petite bibliothèque standard , qui n’a que des fonctionnalités simples.

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

Des éléments tels que le multi-threading, 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'à la version 5.2) étaient tous "non inclus" car ils rendraient Lua beaucoup plus grand et plus lent. Bien sûr, vous pouvez obtenir que les bibliothèques fassent de telles choses - mais celles-ci ont des mainteneurs indépendants et des niveaux de qualité.

Ne vous méprenez pas. J'aime Lua pour les mêmes raisons que celles que je viens de citer.


54

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

On pense que Python est utile comme langage de programmation général. Donc, c'est utile dans beaucoup de 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 le but initial, même s'il est utilisé dans d'autres contextes, comme les systèmes de compilation; doit être intégré au logiciel et permettre une implémentation aisée des fonctions et structures de script spécifiques à un domaine. Il est tellement minimaliste qu’il peut même être utilisé sur du matériel très contraint (j’utilisais Lua sur NintendoDS), il est léger, facile à utiliser, rapide, et est un langage tellement minimaliste mais qui a été pensé pour être étendu que beaucoup de dialecte (importateur de paradigmes comme objet-orientation) sont disponibles. Il est tellement portable (ANSI C) que vous pouvez l’utiliser sur n’importe quel matériel embarqué disposant d’une quantité de mémoire suffisante pour les logiciels embarqués modernes (si je me souviens bien, la valeur par défaut de Lua VM est d’environ 400ko et ne grandira presque jamais si vous ne créez pas en boucle d’objets. ...)

Ainsi, 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 un langage plus spécialisé (vous pouvez créer des jeux assez performants avec Python, mais certains types de jeux très performants nécessitent réellement d'éviter un tel système).

C'est simplement que Python est utilisé dans plus de contextes que Lua. Autant que je sache, à part Android (qui offre une prise en charge de Java et des langues natives), Google n'est pas une entreprise de logiciels embarqués. Ils n'ont donc pas besoin de Lua partout, alors que Python est utile pour tout ce qu'ils font (Web, système de construction , 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 reposent beaucoup sur des informations de script dans leur structure de jeu (je ne suis pas sûr que ce soit clair, mais pensez que si vous avez besoin d'un "vrai langage complet" pour les scripts, l'intégration de Python peut être une bonne idée si la performance vous convient). Python n’a pas été conçu pour être intégré, c’est bien. Falcon est un équivalent de Python destiné à être incorporé en C ++.

À titre de comparaison extrême, certaines langues qui ciblent l'intégration et essaient d'avoir une syntaxe plus complète que le minimaliste Lua et rivalisent sur les performances: ChaiScript, AngelScript, Io ...

A propos, j'ai vu de nouveaux systèmes de compilation tels que PreMake ou Bam utiliser Lua comme langage de fichier de compilation. L'idée est qu'il est léger et bien connu des développeurs de jeux (la construction de 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 ....


4
Je pense que la cible de Lua en tant que langue intégrée est probablement un contributeur majeur. Mais même quand même, je crois que la "popularité" d'une langue dépend moins de la conception réelle ou de la capacité de la langue elle-même que du "bon moment, au bon endroit" (voir PHP, par exemple).
Dean Harding

Eh bien, je pense qu’un langage ciblé par un objectif spécifique plaît naturellement à des utilisateurs spécifiques, ce qui le rend plus restreint que tout langage généraliste. Le fait d'avoir moins d'audiance que les langages généraux a un impact direct sur le nombre de personnes qui en parleront jamais. En dehors de cela, des cibles spécifiques signifient des fonctionnalités spécifiques. Par conséquent, ce n'est pas bon pour toutes les situations. Ici, par exemple, Lua seul n’est pas un très bon langage de programmation gui. Cela nécessite quelques ajouts pour être vraiment utile.
Klaim

Cela dit, je suis tout à fait d’accord: si php n’était pas utilisé dans un domaine aussi largement utilisé que le développement de sites Web, il ne serait pas partout maintenant.
Klaim

Lua est principalement utilisé comme langage intégré, mais il s’agit d’un langage de programmation généraliste, par exemple vous pouvez créer un script CGI avec mod_lua. Je pourrais changer ma question pour savoir pourquoi Lua est restée en tant que langue incorporée?
BenjaminB

Parce que c'est son origine. Vous pouvez l’utiliser comme langage généraliste oui, comme vous pouvez aussi utiliser php à des fins générales. Vous pouvez également utiliser Perl pour faire la même chose. Mais leurs origines font leurs orientations. Là encore, leur objectif initial les rend moins utiles que d'autres langues pour les langages à usage général. Lua manque de quelques fonctionnalités pour être facile à utiliser avec le système graphique pour des exemples, comme l'orientation d'objet (que vous pouvez ajouter facilement, mais ce n'est pas natif). Assurez-vous de voir la différence entre une langue à l’origine conçue à des fins spécifiques et une langue générale. Ils ont tous des contraintes quand même.
Klaim

4

Vous pouvez tout faire avec Lua, il est créé comme 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 ++. La raison pour laquelle Python est davantage utilisé à mes yeux n’est que l’âge. Python est utilisé comme première langue dans de nombreux collèges et écoles. Il ya plus de personnes qui connaissent Python que Lua et il est beaucoup plus facile de créer une bonne bibliothèque pour Python. que pour Lua, parce que la langue est plus mature. De plus, je ne connais pas grand-chose à propos de Python, mais autant que je sache, il est facile de cacher votre code à l'utilisateur final. Qu'est-ce qui chez Lua, n'est-ce pas facile, j'ai raison?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.