Lua est-il adapté aux structures de données et aux algorithmes ?
Pour les apprendre, étonnamment bien : avec seulement des tables comme matériau, chaque structure est explicite, et le code reste court. Le hic, c'est que les tables pardonnent les erreurs en silence : les tableaux commencent à 1 par convention, une clé absente renvoie nil au lieu d'une erreur, et l'opérateur de longueur #t n'est fiable que sur une séquence sans trous nil. Peu d'entretiens se passent en Lua, donc si ton objectif est un entretien, les lots d'entretien sont aussi proposés dans le langage que tu y utiliseras.
Comment construire une pile et une file à partir d'une table Lua ?
Une pile, c'est la partie tableau utilisée par un seul bout : table.insert(t, x) empile et table.remove(t) dépile. Une file demande plus de soin, parce que table.remove(t, 1) décale d'une place vers le bas tous les éléments restants, donc chaque retrait est en O(n). Garde plutôt deux indices, first et last : ajoute en last + 1, lis en first, mets cette case à nil et avance, et le retrait passe en temps constant. L'étape un te fait construire les deux.
Pourquoi #t donne-t-il parfois une mauvaise longueur en Lua ?
Parce que # renvoie une bordure de la table : un indice n tel que t[n] n'est pas nil et que t[n + 1] l'est. Une vraie séquence a exactement une bordure, sa longueur ; mets un nil au milieu et il peut y en avoir plusieurs, et # peut renvoyer n'importe laquelle. Ne stocke donc jamais nil dans un tableau que tu mesures avec #, et dans les structures à trous, comme une file à deux indices, tiens le compte de la taille toi-même.
Les structures de données comptent-elles pour le scripting Roblox ?
Oui, dès qu'un jeu dépasse une poignée d'objets. Un inventaire est une table de hachage, un ordre d'apparition ou de tour est une file, une liste de temps de recharge peut être une file de priorité, et trouver un chemin à travers une carte est une recherche dans un graphe. Luau, le langage dans lequel sont écrits les scripts Roblox, dérive de Lua 5.1 et en garde les tables, les tableaux indexés à partir de 1 et l'opérateur # : ce que tu construis ici se transpose donc tel quel.
Quels cours de ce parcours ne sont pas enseignés en Lua ?
Trois : la programmation dynamique et la série d'entretiens en Python, enseignées en Python, et la manipulation de bits, enseignée en C++. Ces trois cours figurent après les étapes, chacun avec un lien qui l'ouvre dans son propre langage. En Lua, une table de mémoïsation est une table ; les opérateurs bit à bit ne sont arrivés qu'avec Lua 5.3, qui a les &, |, << et >> de C++ et note à la fois XOR et NOT avec ~.
Faut-il connaître Lua avant de commencer ce parcours ?
Au minimum les tables, les fonctions, les boucles et les variables locales ; les métatables aident si tu veux des structures qui se comportent comme des objets. Si c'est nouveau pour toi, le cours Lua de Coddy les couvre d'abord, gratuitement, et ce parcours prend le relais là où il s'arrête.