Est-ce que Lua est basé principalement sur des idées de langage de programmation bien établies?

Lua occupe une bonne place dans l’espace des langues pouvant être intégrées. Les idées principales derrière le design de Lua sont-elles de nouvelles idées des réalisateurs, ou Lua est-il avant tout une combinaison bien exécutée d’idées bien établies?

La comparaison des propriétés et caractéristiques de Lua avec d’autres PL est particulièrement appropriée.

C’est une question très intéressante. Mon travail quotidien est d’étudier les langages de programmation, et Lua remboursera soigneusement les études. Je dirais que très peu d’autres langues (peut-être Icon et CLU). S’il vous plaît noter que c’est la langue dans son ensemble , pas les caractéristiques individuelles, ce qui rend Lua digne d’être étudié.

Est-ce le résultat de nouvelles idées intéressantes de la part des développeurs, ou est-ce le résultat d’une bonne exécution d’idées bien établies?

Tous les deux. Pour les détails, votre meilleure source de réponse à cette question est l’étude sur l’évolution de Lua , qui a été présentée au troisième symposium de l’ACM sur l’histoire des langages de programmation. Mais j’appendai quelques commentaires.

  • L’utilisation des tables Lua comme le seul type de données non atomique mutable a été inventée par l’équipe Lua. Ils ont été inspirés par les développements de CLU et je pense qu’ils étaient au courant de travaux similaires dans Awk et Icon, mais le raffinement à ce niveau est une consortingbution importante de l’équipe Lua.

    Les tables ont également une implémentation très efficace, qui a été inventée par l’équipe Lua.

  • Les caractéristiques fonctionnelles de Lua ont la même sémantique que Scheme, mais Lua a une implémentation unique de fonctions de première classe, que je pense qu’elles devraient soumettre pour publication dans le Journal of Functional Programming .

  • L’API pour l’intégration a été grandement affinée au fil des ans. Sa principale caractéristique est que les types abstraits définis par l’utilisateur peuvent participer pleinement à l’incorporation. C’est la propriété qui rend l’API Lua supérieure à l’API Tcl, par exemple. Au fil des ans, l’API de Lua a subi de nombreuses améliorations, notamment depuis sa première publication à la version 2.5. Les concepteurs de Lua méritent beaucoup de crédit ici.

  • La technologie de collecte des ordures est standard.

  • Les coruilles Lua représentent une nouvelle approche de certaines idées très anciennes. La nouvelle prise a été jugée digne d’être publiée dans ACM Transactions sur les langages et systèmes de programmation , alors encore une fois, je pense que l’équipe Lua est récompensée pour son originalité.

  • Les métatables Lua sont liées au protocole du métaobject Common Lisp.

Je pense que le succès de Lua résulte d’une combinaison unique de forces de l’équipe Lua:

  • Si vous lisez l’ article de HOPL , vous verrez que l’équipe de Lua était bien au courant de nombreux développements dans les langages de programmation et qu’elle a pu choisir parmi les meilleures idées. La plupart des concepteurs de langages de script populaires ont été des amateurs et n’ont pas été si bien informés.

  • Lua est superbement conçu pour que les pièces s’emboîtent très bien, avec un excellent rapport poids / puissance. C’est le résultat de beaucoup de raffinement au fil du temps, et PUC-Rio était prête à ce que l’équipe Lua travaille sur la conception et la mise en œuvre de la langue au lieu de rédiger un grand nombre d’articles. Ce travail n’aurait pas pu être fait dans une université nord-américaine.

  • Lua est superbement conçu . La mise en œuvre est incroyablement bonne. C’est en grande partie le travail accompli par de grands ingénieurs et en partie la possibilité de continuer à revoir le design sur une période de 15 ans.

Je terminerai en demandant aux lecteurs de ne pas sous-estimer la difficulté de choisir et d’ affiner des idées bien établies pour former un tout cohérent. C’est un travail extrêmement difficile et rarement reconnu comme il se doit.

Lua prend en charge la functional programming et repose sur un style de programmation basé sur Prototype , qui est flexible et puissant.

IMO c’est une langue intéressante.

Si vous voulez lire quelques reflections sur l’inheritance des prototypes, je vous suggère de
Lisez l’article de Steve Yegge sur The Universal Design Pattern .

Lua est petit, le code total ne représente que des dizaines de milliers de lignes dans ANSI C. (Python a dix fois plus de lignes de code).

Lua est très stable, ou dit, la langue est maintenant fixée.

Lua a une bonne ingénierie. Son code est facile à lire et à pirater. (aussi parce que petit)

Sa licence vous permet de faire ce que vous voulez.

L’écriture d’extensions C dans Lua est plus facile que d’autres langages, par exemple Python.

Il y a une histoire Lambda the Ultimate, Small is Beautiful: le design de Lua , qui parle de la récente conférence de Robert Ierusalimschy à Stanford du même nom. La discussion porte actuellement sur les avantages de disposer de tables comme unique structure de données de conteneur; Jusqu’à présent, peu de choses ont été dites sur l’autre partie de la conférence, traitant de l’interface C de Lua.

Je pense que c’est parce que Lua est relativement simple et pragmatique. Il n’essaye pas d’être le langage pour construire le prochain système d’exploitation, Crysis 3 ou un clone SAP, mais ce qu’il fait, il le fait bien, c’est-à-dire qu’il sert de langage de script.