Pourquoi vous devriez essayer de programmer en Lua

illustrations illustrations illustrations illustrations illustrations illustrations illustrations
post-thumb

Publié le 21 décembre 2023 par Andrew Owen (5 minutes)

Permettez-moi de commencer par dire que je n’ai rien contre Python. Ce n’est pas pour rien que c’est le langage de programmation numéro un. Mais j’ai appris Perl avant que Python ne soit inventé, et je n’ai jamais eu de raison impérieuse de l’apprendre. D’un autre côté, lorsque je travaillais dans les jeux vidéo, j’ai dû me familiariser avec Lua et je l’ai trouvé tout à fait à mon goût.

Lua (qui signifie lune en portugais) a 30 ans cette année. Il a été créé par Waldemar Celes, Luiz Henrique de Figueiredo et Roberto Ierusalimschy au sein du Computer Graphics Technology Group de l’Université catholique pontificale de Rio de Janeiro. Les barrières commerciales du Brésil en matière de logiciels et de matériel informatique ont incité le département à créer son propre langage de script, efficace, léger et intégrable.

Étant donné que de nombreux utilisateurs potentiels du langage n’étaient pas des programmeurs professionnels, le langage devait éviter une syntaxe et une sémantique cryptiques. La mise en œuvre du nouveau langage devait être hautement portable, car les clients de Tecgraf disposaient d’un ensemble très diversifié de plates-formes informatiques. Enfin, comme nous nous attendions à ce que d’autres produits Tecgraf aient besoin d’intégrer un langage de script, le nouveau langage devait suivre l’exemple de SOL et être fourni sous forme de bibliothèque avec une API C. - “The Evolutino of Lua” (L’évolution de Lua)

Dans sa version actuelle, Lua prend en charge la programmation axée sur les données, fonctionnelle, orientée objet et procédurale. Il combine une syntaxe procédurale simple avec des constructions de description de données basées sur des tableaux associatifs et une sémantique extensible. Il est dynamiquement typé, s’exécute en interprétant le code d’octets avec une machine virtuelle basée sur les registres et dispose d’une gestion automatique de la mémoire avec un ramassage incrémentiel des ordures.

Au cours de la septième génération de consoles (PlayStation 3, Wii, Xbox 360), une enquête de l’industrie des jeux a révélé que plus de la moitié des personnes interrogées utilisaient Lua pour créer des scripts. C’est tout à fait logique si l’on considère que le principal moteur de jeu à l’époque était Unreal et que le principal langage de développement de jeux était C/C++. Plus d’un cinquième des personnes interrogées utilisaient également Lua pour le prototypage rapide. Non seulement Lua est rapide, portable, intégrable, simple mais puissant, mais il est également petit, avec environ 30000 lignes de code. Il est distribué sous la licence MIT.

Lorsque les parents décident d’enseigner la programmation à leurs enfants, ils commencent souvent par des langages basés sur des blocs comme Scratch. Ces langages peuvent enseigner les principes de la programmation et susciter l’enthousiasme pour la programmation. Mais une exposition prolongée peut rendre plus difficile la transition vers la programmation linéaire. Python est un choix populaire de langage d’enseignement, sauf pour les parents méchants de la génération X qui obligent leurs enfants à utiliser BASIC. Lua est un peu plus spécialisé, mais il dispose de quelques extensions intéressantes comme le cadre web Lapis et le cadre de jeux en 2D LÖVE, et il est utilisé dans des endroits intéressants:

Il y a deux projets commerciaux que j’affectionne particulièrement. Pour les propriétaires d’iPad, Codea permet de développer des applications directement sur l’appareil. Il a été créé par John Millard, Simeon Saëns et Dylan Sale, étudiants en doctorat à l’université d’Adélaïde. Il est principalement destiné au développement de jeux, mais il peut également être utilisé pour des applications générales. Des projets complets peuvent être exportés directement dans Xcode. Il prend en charge la 3D par le biais de voxels et de modèles au format Wavefront (tel qu’exporté par Blender). Ses cadres incluent l’animation, le graphisme, la localisation, le mouvement, le multitouch, le réseau, la physique, le son et le stockage. La toute première application de l’App Store entièrement réalisée sur l’iPad a été créée avec Codea. Actuellement, le seul jeu disponible est Cargo-Bot. Il dispose d’une documentation complète et est accompagné d’exemples de projets pour vous aider à démarrer.

Pour ceux qui aiment l’esthétique rétro mais ne veulent pas apprendre le langage d’assemblage 6502 ou Z80, le Pico-8 est une console fantaisiste qui fonctionne dans un navigateur web ou sous Linux, macOS et Windows. Il dispose d’un écran de 128×128 pixels avec 16 couleurs à partir d’une palette de 256 couleurs. Il y a 256 sprites de 8×8 pixels et une carte de 128×32 tuiles. Il dispose d’un générateur de son programmable à 4 canaux. Des éditeurs de code, de musique, de son, de sprites et de cartes sont intégrés à la console. Les cartouches sont stockées sous forme de fichiers PNG. Pico-8 comprend également une licence pour les éducateurs.

Postface

Comme c’est souvent le cas, j’ai appris l’existence d’un autre projet après la publication. Le TIC-80 est une alternative open source au Pico-8 qui supporte également Lua. Il dispose également d’éditeurs intégrés pour le code, les sprites, les cartes, le son, etc. Il dispose d’un écran de 240×136 pixels et d’une palette fixe de 16 couleurs assez similaire à celle du [DawnBringer 16] (https://lospec.com/palette-list/dawnbringer-16 “DawnBringer 16 Palette”). Le TIC-80 s’est avéré particulièrement populaire dans la demoscene informatique.