35 votes

Lua en tant que langage de script à usage général?

Quand je vois Lua, la seule chose que j'ai jamais lu est "idéal pour l'intégration", "rapide", "léger" et plus souvent qu'autre chose: "World of Warcraft" ou en abrégé "WoW".

Pourquoi est-il limité à l'intégration de la chose entière dans une autre application? Pourquoi ne pas écrire à usage général scripts comme vous le faites avec Python ou Perl?

Lua semble faire très bien, dans des domaines comme la vitesse et de la mémoire d'utilisation (Le plus rapide, langage de script autant que je sache), alors pourquoi est-ce que je ne vois jamais Lua être utilisé comme un "Bureau de script-langue" pour automatiser des tâches? Par exemple:

  • Renommer un groupe de fichiers
  • Télécharger des fichiers à partir du web
  • Webscraping

Est-ce le manque de la bibliothèque standard?

38voto

Victor Lin Points 3276

Lua est une belle langue, léger et extrêmement rapide!

Mais le point est: la performance Est si important pour ceux les tâches que vous avez mentionné?

  • Renommer un groupe de fichiers
  • Télécharger des fichiers à partir du web
  • Webscraping

Vous écrivez ces programmes une fois, et de les exécuter une fois, trop peut-être. Pourquoi se soucier de la performance tant pour l'exécution d'un programme?

Par exemple:

  1. D'un coût de 3 heures pour écrire un programme C/C++, pour gérer les données une fois, le programme prendra 1 heure à courir.
  2. Coût de 30 Minutes pour écrire un programme en Python pour gérer les données une fois, le programme tiendra de 10 heures à courir.

Si vous choisissez la première, vous économisez le temps d'exécuter le programme, mais vous le coût de votre temps pour développer le programme.

D'autre part, si vous choisissez la seconde, vous perdez du temps à s'exécuter le programme, mais vous pouvez faire d'autres choses lorsque le programme est en cours d'exécution. Comment jouer à World of Warcraft, tuer des monstres avec votre démoniste? Manger mon D. O. T! :P

Ça y est! Bien que Lua n'est pas si difficile à écrire, tout à propos de Lua est conçu pour être efficace.Et en plus, il y a peu de modules pour Lua, mais il ya tellement de nombreux modules pour Python. Vous ne voulez pas le port d'une bibliothèque C pour Lua juste pour une exécution d'un programme, avez-vous? Au lieu de cela, choisir de Python et de l'utilisation de ces module pour réaliser votre tâche facilement pourrait être une meilleure idée.

Pour info: en Fait, j'ai essayé d'utiliser Lua pour faire webscraping, mais finalement, j'ai réalisé que je n'ai pas pour autant la langue de la performance. Le goulot d'étranglement de webscraping est pas sur les performances de la langue. Le goulot d'étranglement est sur réseau I/O, analyse HTML et le multitâche. Tout ce que j'ai à faire est assurez-vous que le programme fonctionne et trouver le goulot d'étranglement. Enfin, j'ai choisi Python plutôt que de Lua. Il ya tellement de beaucoup d'excellents modules Python; je n'ai aucune raison de construire mon propre.

D'après mon expérience sur webscraping, j'ai choisi Tordu pour le réseau I/O et lxml pour l'analyse html comme le backend de mon webscraping programme. J'ai écrit un article pour une présentation de cette technologie.

Le meilleur choix à saisir des données à partir de sites web: Python + Torsadée + lxml

Espérons que cela est utile.

23voto

Lua a moins de bibliothèques que Python. Mais assurez-vous d'avoir un coup d'oeil à LuaForge. Il a beaucoup de intéressant libs, comme LuaCURL, wxLua ou getopt.

Ensuite, visite LuaRocks, le système de gestion des paquets pour Lua. Avec elle, vous pouvez rechercher et installer la plus mature Lua modules avec des dépendances. Il se sent comme RubyGems ou d'aptitude.

Le site lua-users.org a beaucoup de ressources intéressantes, comme des tutoriels ou le Lua Wiki.

Ce que j'aime à propos de Lua n'est pas sa vitesse, c'est son socle minimal de la langue, de flexibilité et d'extensibilité.

Cela dit, je serais probablement utiliser Python pour les tâches que vous avez mentionné en raison de la plus grande communauté de faire de telles choses en Python.

12voto

JesperE Points 34356

Ce n'est pas parce qu'il est commercialisé (dans un sens général) comme un langage spécifique pour les moteurs de script incorporés que cela se limite à cela. En fait, WoW aurait probablement tout aussi bien pu choisir Python comme langage de script intégré.

10voto

Firas Assaad Points 10339

C'est probablement parce que Lua a été conçu comme un langage de script et d'extension. Sur le site officiel, il est décrit comme un langage de script puissant, rapide, léger et intégrable. Rien ne vous empêche d'écrire des programmes d'usage général (si je me souviens bien, il est livré avec un interprète et un compilateur), mais les concepteurs de langages voulaient qu'il soit principalement utilisé comme langage intégré (donc léger et tout).

9voto

Norman Ramsey Points 115730

C'est une question sociologique, pas une question de programmation.

J'utilise Lua pour le script d'usage général presque exclusivement. Mais j'ai dû écrire une centaine de lignes de code, de sorte que Lua serait mieux jouer avec le shell. Il s'agissait par exemple des trucs comme

  • Citant une chaîne de sorte qu'il est considéré comme un mot par le shell
  • Écrire une fonction pour récupérer la sortie d'une commande dans un shell $(commande)
  • Écrire une fonction pour analyser le système de fichiers à l'aide de la Lua posix bibliothèque et d'élargir la coquille d'expansion modèles

(Pour ceux qui seraient intéressés, j'ai laissé le code dans mon Lua boîte de dépôt, qui contient aussi quelques autres trucs. Les choses intéressantes est sans doute en osutil en os.quote, os.runf, os.capture, et peut-être os.execve. L'expansion est en posixutil.lua. Ils utilisent tous les deux Luiz Henrique de Figuereido du Lua bibliothèque Posix.)

Pour moi, l'effort supplémentaire en vaut la peine parce que je peux traiter avec une syntaxe simple et grandes structures de données. Pour d'autres, un lien plus direct avec le shell peut être préféré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X