« Lua » est un mot portugais qui signifie « lune ». Mais Lua est aussi un langage de pro­gram­ma­tion qui peut être étendu in­dé­pen­dam­ment de la plate-forme. Ses autres par­ti­cu­la­ri­tés sont sa petite empreinte de seulement 120 ko et sa rapidité. Une raison suf­fi­sante pour regarder la lune des langages de script de plus près.

Cet article propose une in­tro­duc­tion générale au langage Lua. Un tutoriel Lua détaillé pour débuter la pro­gram­ma­tion avec Lua est également dis­po­nible dans la rubrique « Digital Guide ».

Lua, c’est quoi ?

L’univers des langages de pro­gram­ma­tion Internet est presque sans fin. Le langage Lua parvient à sortir du lot, mais reste largement méconnu en com­pa­rai­son avec Python ou Perl. Lua est utilisé depuis plus de deux décennies. Cependant, Lua est rarement utilisé comme un langage de pro­gram­ma­tion autonome ; les dé­ve­lop­peurs l’utilisent plutôt comme un langage de script intégré pour des pro­grammes in­di­vi­duels. Les prin­ci­paux domaines d’ap­pli­ca­tion ont toujours été les jeux vidéo et les moteurs de jeu, mais on trouve aussi le langage de pro­gram­ma­tion Lua dans divers pro­grammes réseaux et système.

Le nom portugais ne vient pas de nulle part. Lua a été développé à l’Uni­ver­sité ca­tho­lique de Rio de Janeiro par Roberto Ie­ru­sa­lim­schy, Luiz Henrique de Fi­guei­redo et Waldemar Celes. Jusqu’en 1992, le Brésil était soumis à des res­tric­tions strictes sur l’im­por­ta­tion de matériel et de logiciels in­for­ma­tiques ; par nécessité, les trois pro­gram­meurs ont développé leur propre langage de script appelé Lua. C’est main­te­nant dans de nombreux domaines l’un des langages de pro­gram­ma­tion les plus im­por­tants et les plus po­pu­laires.

Lua, c’est quoi, exac­te­ment ? Lua est es­sen­tiel­le­ment une bi­blio­thèque que les pro­gram­meurs peuvent intégrer dans leur logiciel pour le rendre « scrip­table ». Lua est dis­po­nible pour tous les systèmes d’ex­ploi­ta­tion usuels. Il contient un in­ter­pré­teur très compact qui ne comprend que quelques centaines de lignes de code et qui peut également accéder à la bi­blio­thèque. Malgré ce mi­ni­ma­lisme, l’in­ter­pré­teur offre des fonc­tion­na­li­tés utiles telles que le nettoyage au­to­ma­tique des struc­tures de données qui ne sont plus utilisées, libérant ainsi de la mémoire. En résumé, les ca­rac­té­ris­tiques les plus im­por­tantes de Lua sont les suivantes :

  • compact
  • rapidité d’exécution
  • flexi­bi­lité ex­cep­tion­nelle
  • facile à apprendre
  • librement dis­po­nible

Comment le langage de pro­gram­ma­tion Lua est-il structuré et à quoi sert-il ?

Le langage Lua permet de la pro­gram­ma­tion pro­cé­du­rale ha­bi­tuelle. Parmi les pa­ra­digmes de pro­gram­ma­tion, il fait partie de la catégorie des langages de script im­pé­ra­tifs. Il est im­plé­menté comme une bi­blio­thèque dans C et fournit des fonctions telles que le code Lua ainsi qu’un modèle de programme hôte (appelé lua), qui fournit un in­ter­pré­teur Lua autonome.

En tant que langage de script, Lua n’a pas de programme principal propre. Il fonc­tionne ex­clu­si­ve­ment de manière intégrée à l’ap­pli­ca­tion hôte. Celle-ci peut faire appel aux fonctions men­tion­nées ci-dessus via le code Lua. Grâce à la fonction C, Lua peut être complété par de nom­breuses fonc­tion­na­li­tés pour répondre aux divers besoins en matière de pro­gram­ma­tion. Le langage de pro­gram­ma­tion est facile à adapter pour mettre en œuvre un Framework syn­taxique commun.

Si vous avez déjà des con­nais­sances en Pascal, vous n’aurez aucun problème avec la syntaxe de Lua, car les deux langages de pro­gram­ma­tion se res­semblent beaucoup sur ce point. Plusieurs commandes peuvent se trouver sur une même ligne de script à condition d’être séparées par des points-virgules. Lua a un total de 20 mots-clés définis faciles à apprendre. En bref : en général, Lua utilise des blocs fonc­tion­nels qui com­men­cent par des mots-clés comme goto et se terminent par end, elseif ou else. Le mot-clé local identifie les variables locales, qui ne sont valables que pour le bloc fonc­tion­nel dans lequel le mot-clé se trouve. Les blocs fonc­tion­nels peuvent également être imbriqués les uns dans les autres.

Le langage Lua se sert des types de données table, userdata, function, thread, nil, boolean, string et number. Le premier (table = tableau) est aussi le seul type de données structuré. Les types des variables sont dé­ter­mi­nés à l’exécution du script, mais peuvent être modifiés à tout moment, si né­ces­saire.

Où utilise-t-on le langage Lua ?

Le langage Lua permet vraiment de toucher les étoiles en termes de pos­si­bi­li­tés d’ap­pli­ca­tion, car il n’y a pra­ti­que­ment pas de limites imposées aux pro­gram­meurs. Lua peut être étendu presque à l’infini avec des modules définis par l’uti­li­sa­teur. Les exemples d’ap­pli­ca­tions vont de serveurs Web écrits en Lua au dé­ve­lop­pe­ment de jeux vidéo, en passant par la pro­gram­ma­tion de votre propre ap­pli­ca­tion.

Tout par­ti­cu­liè­re­ment dans le monde du jeu, Lua est le langage de pro­gram­ma­tion le plus souvent utilisé. Divers jeux utilisent Lua comme langage de script. Dans ce contexte, il est souvent utilisé dans les moteurs pour séparer ceux-ci des con­fi­gu­ra­tions ou des per­son­nages de jeu. Cela rend le moteur de jeu plus flexible, per­met­tant à dif­fé­rents jeux d’utiliser le même moteur. Comme exemple, on peut notamment citer le jeu de rôles en ligne mul­ti­joueur World of Warcraft ou le jeu de réflexion très populaire Enigma.

Un autre domaine d’ap­pli­ca­tion majeur de Lua est la pro­gram­ma­tion de réseaux et systèmes. Lua est dans ce cas employé dans les pro­grammes à des fins de con­fi­gu­ra­tion et d’au­to­ma­ti­sa­tion, les exemples les plus connus étant VLC Media Player ou Adobe Photoshop Lightroom. Dans le domaine des réseaux, des ana­ly­seurs de réseaux comme Wireshark utilisent les fonc­tion­na­li­tés de Lua. D’autres exemples de logiciels reposant sur ce langage de script sont le proxy MySQL, la base de données Redis-NoSQL ou les serveurs Web Apache et Nginx.

Lua : un langage de pro­gram­ma­tion avec de grandes forces et de petites fai­blesses

Con­cep­tuel­le­ment, le langage de pro­gram­ma­tion Lua offre peu de fonc­tion­na­li­tés ré­vo­lu­tion­naires. Sa syntaxe est assez con­ven­tion­nelle et assez simple, avec ses 20 mots-clés réservés déjà men­tion­nés.

En Lua, le typage est dynamique. Le type d’une variable est déterminé à l’exécution du script, mais peut être converti en un autre type, comme mentionné ci-dessus. C’est là une grande force de Lua, surtout par rapport au CSS ou à PHP, dans lesquels l’at­tri­bu­tion d’un type quel­conque à « boolean », c’est-à-dire aux valeurs logiques, n’obéit à aucune méthode par­ti­cu­lière.

Le principal avantage de Lua est le suivant : tous les textes ou chiffres à adapter sont di­rec­te­ment écrits dans des variables. L’af­fec­ta­tion se fait dans un bloc fermé au début du module. Les fonctions sub­sé­quentes n’accèdent qu’à ces variables. Si l’en­vi­ron­ne­ment change, seules les valeurs dans le bloc doivent être ajustées en con­sé­quence. En premier jet, c’est le travail de pro­gram­ma­tion le plus simple.

Les in­con­vé­nients de cette approche sont les suivants : si une fonction est modifiée par une mise à jour, le code source doit être recomposé dans chaque projet. Cela rend né­ces­saire une mise à jour de toutes les pages connexes.

En résumé

Le langage Lua sert à écrire des pro­grammes autonomes, mais il peut aussi être utilisé comme langage intégré. Lua n’a peut-être pas la po­pu­la­rité dont jouissent d’autres langages de pro­gram­ma­tion, mais il est loin de manquer d’outils de pro­gram­ma­tion.

Aperçu du langage Lua (avec des extraits de code)

Pour terminer, nous vous proposons un bref aperçu du langage de script Lua par l’in­ter­mé­diaire de deux exemples simples, qui devraient vous éclairer sur le fonc­tion­ne­ment de Lua.

Exemple 1 : sauts de ligne en Lua

En Lua « \ » ou « \n » per­met­tent d’insérer des sauts ligne :

print ('1 : Bonjour\
	la Terre')
print ("2: Bonjour\
	la Terre")

Le résultat de ce fragment de code est le suivant :

1: Bonjour
la Terre
2: Bonjour
la Terre

Exemple 2 : variables en Lua

Les variables n’ont pas à être déclarées dans le langage de pro­gram­ma­tion Lua, elles sont créées à la demande. Pour rappel, les valeurs peuvent avoir les types suivants : nil (c’est aussi la valeur des variables qui n’ont pas été créées), nombres, littéraux (ca­rac­tères, lettres, mots, etc.), booléens (vrai/faux), tableaux et fonctions. Un exemple simple de code :

print ( var )
var = "Bonjour la Terre"
print ( var )

Comme les variables non définies valent « nil » le résultat est le suivant :

nil
Bonjour la Terre
Aller au menu principal