Présentation du langage Lua

« Lua » est un mot portugais qui signifie « lune ». Mais Lua est aussi un langage de programmation qui peut être étendu indépendamment de la plate-forme. Ses autres particularités sont sa petite empreinte de seulement 120 ko et sa rapidité. Une raison suffisante pour regarder la lune des langages de script de plus près.

Cet article propose une introduction générale au langage Lua. Un tutoriel Lua détaillé pour débuter la programmation avec Lua est également disponible dans la rubrique « Digital Guide ».

Lua, c’est quoi ?

L’univers des langages de programmation Internet est presque sans fin. Le langage Lua parvient à sortir du lot, mais reste largement méconnu en comparaison avec Python ou Perl. Lua est utilisé depuis plus de deux décennies. Cependant, Lua est rarement utilisé comme un langage de programmation autonome ; les développeurs l’utilisent plutôt comme un langage de script intégré pour des programmes individuels. Les principaux domaines d’application ont toujours été les jeux vidéo et les moteurs de jeu, mais on trouve aussi le langage de programmation Lua dans divers programmes réseaux et système.

Le nom portugais ne vient pas de nulle part. Lua a été développé à l’Université catholique de Rio de Janeiro par Roberto Ierusalimschy, Luiz Henrique de Figueiredo et Waldemar Celes. Jusqu’en 1992, le Brésil était soumis à des restrictions strictes sur l’importation de matériel et de logiciels informatiques ; par nécessité, les trois programmeurs ont développé leur propre langage de script appelé Lua. C’est maintenant dans de nombreux domaines l’un des langages de programmation les plus importants et les plus populaires.

Lua, c’est quoi, exactement ? Lua est essentiellement une bibliothèque que les programmeurs peuvent intégrer dans leur logiciel pour le rendre « scriptable ». Lua est disponible pour tous les systèmes d’exploitation usuels. Il contient un interpréteur très compact qui ne comprend que quelques centaines de lignes de code et qui peut également accéder à la bibliothèque. Malgré ce minimalisme, l’interpréteur offre des fonctionnalités utiles telles que le nettoyage automatique des structures de données qui ne sont plus utilisées, libérant ainsi de la mémoire. En résumé, les caractéristiques les plus importantes de Lua sont les suivantes :

  • compact
  • rapidité d’exécution
  • flexibilité exceptionnelle
  • facile à apprendre
  • librement disponible

Comment le langage de programmation Lua est-il structuré et à quoi sert-il ?

Le langage Lua permet de la programmation procédurale habituelle. Parmi les paradigmes de programmation, il fait partie de la catégorie des langages de script impératifs. Il est implémenté comme une bibliothè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 interpréteur Lua autonome.

En tant que langage de script, Lua n’a pas de programme principal propre. Il fonctionne exclusivement de manière intégrée à l’application hôte. Celle-ci peut faire appel aux fonctions mentionnées ci-dessus via le code Lua. Grâce à la fonction C, Lua peut être complété par de nombreuses fonctionnalités pour répondre aux divers besoins en matière de programmation. Le langage de programmation est facile à adapter pour mettre en œuvre un Framework syntaxique commun.

Si vous avez déjà des connaissances en Pascal, vous n’aurez aucun problème avec la syntaxe de Lua, car les deux langages de programmation se ressemblent 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 fonctionnels qui commencent 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 fonctionnel dans lequel le mot-clé se trouve. Les blocs fonctionnels 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éterminés à l’exécution du script, mais peuvent être modifiés à tout moment, si nécessaire.

Où utilise-t-on le langage Lua ?

Le langage Lua permet vraiment de toucher les étoiles en termes de possibilités d’application, car il n’y a pratiquement pas de limites imposées aux programmeurs. Lua peut être étendu presque à l’infini avec des modules définis par l’utilisateur. Les exemples d’applications vont de serveurs Web écrits en Lua au développement de jeux vidéo, en passant par la programmation de votre propre application.

Tout particulièrement dans le monde du jeu, Lua est le langage de programmation 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 configurations ou des personnages de jeu. Cela rend le moteur de jeu plus flexible, permettant à différents jeux d’utiliser le même moteur. Comme exemple, on peut notamment citer le jeu de rôles en ligne multijoueur World of Warcraft ou le jeu de réflexion très populaire Enigma.

Un autre domaine d’application majeur de Lua est la programmation de réseaux et systèmes. Lua est dans ce cas employé dans les programmes à des fins de configuration et d’automatisation, les exemples les plus connus étant VLC Media Player ou Adobe Photoshop Lightroom. Dans le domaine des réseaux, des analyseurs de réseaux comme Wireshark utilisent les fonctionnalité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 programmation avec de grandes forces et de petites faiblesses

Conceptuellement, le langage de programmation Lua offre peu de fonctionnalités révolutionnaires. Sa syntaxe est assez conventionnelle et assez simple, avec ses 20 mots-clés réservés déjà mentionné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’attribution d’un type quelconque à « boolean », c’est-à-dire aux valeurs logiques, n’obéit à aucune méthode particulière.

Le principal avantage de Lua est le suivant : tous les textes ou chiffres à adapter sont directement écrits dans des variables. L’affectation se fait dans un bloc fermé au début du module. Les fonctions subséquentes n’accèdent qu’à ces variables. Si l’environnement change, seules les valeurs dans le bloc doivent être ajustées en conséquence. En premier jet, c’est le travail de programmation le plus simple.

Les inconvé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écessaire une mise à jour de toutes les pages connexes.

En résumé

Le langage Lua sert à écrire des programmes autonomes, mais il peut aussi être utilisé comme langage intégré. Lua n’a peut-être pas la popularité dont jouissent d’autres langages de programmation, mais il est loin de manquer d’outils de programmation.

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’intermédiaire de deux exemples simples, qui devraient vous éclairer sur le fonctionnement de Lua.

Exemple 1 : sauts de ligne en Lua

En Lua « \ » ou « \n » permettent 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 programmation 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 (caractè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