Quand tu as ouvert Lua et que tu t'es dit : « Attends, où sont les accolades ? »
Il y a des langues qui vous donnent envie de fermer votre ordinateur portable et d'aller faire paître les vaches au village. Et il y a Lua, un langage qui vous accueille comme un vieil ami : sans cérémonie inutile, sans constructions de cinq étages et sans le sentiment que vous avez accidentellement ouvert la thèse de quelqu'un d'autre en physique quantique.
Si vous avez déjà joué à World of Warcraft, Roblox ou à un mod sur Garry's Mod, félicitations, vous avez déjà utilisé Lua indirectement. Ce langage est littéralement partout où vous devez scripter quelque chose rapidement sans déployer une station spatiale de dépendances.

Étape 0 : Installation (spoiler : c'est rapide)
Lua est l'un des langages les plus faciles à installer. Pas de gigaoctets de SDK, pas de « veuillez mettre à jour votre version de Java vers 847.3 ».
Sur Linux/macOS :
# Ubuntu/Debian
sudo apt install lua5.4
# macOS (via Homebrew)
brew install luaSous Windows :
Télécharger LuaBinaries avec site officiel ou mettez-le via scoop :
scoop install luaVérifions que tout fonctionne :
lua -vSi vous obtenez quelque chose comme Lua 5.4.7 en réponse, vous êtes dans le coup. Sinon, eh bien, classique, vérifiez PATH.
Étape 1 : Hello, World ! (rituel d'initiation)
Créez le fichier hello.lua et écrivez :
print("Hello, World!")Lancez :
lua hello.luaTout. Un. Un seul appel. Sans public static void main, sans import, sans #include <iostream>. Lua respecte votre temps.
À titre de comparaison, voici la même chose en Java :
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Lua voit cela comme :
« Mec, pourquoi tant de lettres ? print() et on passe à autre chose. »
Étape 2 : Variables — il suffit d'écrire et c'est tout
Dans Lua, il n'est pas nécessaire de déclarer le type de variable. Pas de int, string, float. Lua le découvrira lui-même :
name = "Alexey"
age = 25
is_developer = true
print(name) -- Алексей
print(type(age)) -- number
print(type(name)) -- stringLes variables locales sont déclarées via local — et cela est considéré comme une bonne pratique :
local score = 100
local player = "Hero"Pourquoi local ? Parce que sans lui, la variable devient globale, et les variables globales dans un grand projet, c'est comme laisser les clés de l'appartement sous le paillasson. Cela semble pratique, mais vous serez surpris plus tard.
Étape 3 : Conditions — if, elseif, else, end
local hp = 30
if hp > 50 then
print("Everything is fine, we continue to fight")
elseif hp > 0 then
print("Be careful, HP is running out!")
else
print("Game Over. Respawn in 5 seconds")
endFaites attention : au lieu de { et } — then et end. C'est inhabituel au début, mais ensuite tu comprendras que c'est encore plus propre à lire. Lua aime les mots, pas les symboles.
Un autre point : dans Lua il n'y a pas de !=. Au lieu de cela, on utilise ~= :
if name ~= "Admin" then
print("Access denied")
endOui, tilde. Accepte-le.
Étape 4 : Cycles — tourner, retourner
while:
local i = 1
while i <= 5 do
print("Iteration: " .. i)
i = i + 1
endAu fait, .. est une concaténation de lignes dans Lua. Pas +, pas concat(), mais juste deux points.
for:
for i = 1, 5 do
print("Step " .. i)
endCODE_BLOCK_12__for-in (pour parcourir les tableaux) :
local fruits = {"apple", "banana", "mango"}
for index, fruit in ipairs(fruits) do
print(index .. ". " .. fruit)
endÉtape 5 : Fonctions — écrire nos propres commandes
local function greet(name)
return "Hi, " .. name .. "! Welcome to Lua"
end
print(greet("Maria"))Les fonctions de Lua sont des citoyens de première classe. Elles peuvent être stockées dans des variables, transmises comme arguments, renvoyées à partir d'autres fonctions. En général, la programmation fonctionnelle n'est pas en paroles ici :
local function apply(func, value)
return func(value)
end
local function double(x)
return x * 2
end
print(apply(double, 21)) -- 4242 est la réponse à tout. Coïncidence ? Je ne pense pas.
Étape 6 : Les tableaux sont le cœur de Lua
C'est là que la magie commence. Dans Lua, il n'y a pas de tableaux, pas d'objets, pas de dictionnaires. Mais il y a tableaux — une structure de données universelle qui remplace tout :
-- Как массив
local colors = {"Red", "Green", "Blue"}
print(colors[1]) -- красный (индексация с 1!)
-- Как словарь
local player = {
name = "Warrior",
hp = 100,
level = 5
}
print(player.name) -- Warrior
print(player["hp"]) -- 100
-- Как объект с методами
function player:takeDamage(damage)
self.hp = self.hp - damage
print(self.name .. " received " .. damage .. " damage. HP: " .. self.hp)
end
player:takeDamage(25) -- Warrior получил 25 урона. HP: 75Point important : l'indexation en Lua commence à 1, pas à 0. Oui, c'est le détail qui va te causer une crise existentielle si tu es habitué à JavaScript ou Python. Mais tu vas t'y habituer.
Étape 7 : Mini-projet — quête textuelle
Il est temps de tout rassembler. Voici un petit jeu de texte :
local function game()
print("=============================")
print(" CODE DUNGEON")
print("=============================")
print("")
print("You are standing in front of the entrance to a dark cave.")
print("A strange noise is heard inside...")
print("")
print("What are you doing?")
print("1 - Enter the cave")
print("2 - You go home to drink tea")
print("")
io.write("Your choice: ")
local choice = io.read()
if choice == "1" then
print("")
print("You enter and find... an ancient laptop!")
print("A file with Lua code is open on the screen.")
print("You start reading... and you become a programmer!")
print("")
print("🏆 VICTORY! +100 to programming skill")
elseif choice == "2" then
print("")
print("A wise choice. Tea is also important.")
print("But the cave will be waiting for you...")
print("")
print("☕ END. But you can always come back!")
else
print("")
print("Unknown command. The cave is confused.")
print("Try again!")
end
end
game()Enregistre-le dans quest.lua, lance lua quest.lua — et félicitations, tu viens d'écrire ton premier jeu en Lua.
Et ensuite ?
Lua est un langage qui vous ouvrira les portes du développement de jeux (Love2D, Defold, Roblox), du développement intégré, de l'écriture de plugins et de scripts pour les applications existantes. Il est léger, rapide et étonnamment puissant.
Voici quelques directions dans lesquelles vous pouvez vous déplacer :
Roblox Studio - si vous voulez faire des jeux et gagner de l'argent
Love2D - moteur 2D minimaliste pour les jeux indépendants
Neovim — la configuration et les plugins sont écrits en Lua
OpenResty/Nginx — Lua pour les serveurs Web à forte charge
Embedded/IoT — Lua fonctionne très bien sur les microcontrôleurs (NodeMCU, ESP8266)
Si ce format vous plaît et que vous souhaitez aller plus loin, jetez un œil à Code. C'est une application où vous pouvez apprendre la programmation à partir de zéro : de Python et JavaScript à HTML, CSS et d'autres technologies. Pas de théorie sèche de 200 pages, seulement des leçons claires avec de la pratique, après lesquelles vous comprenez vraiment ce que vous avez écrit et pourquoi.
Code créé spécialement pour ceux qui veulent apprendre à leur propre rythme, depuis leur téléphone ou leur ordinateur, sans être liés à un emploi du temps et à de longs cours.
Et nous avons aussi Chaîne Telegram avec une communauté de plus de 2 000 développeurs, où des articles utiles sur la programmation, des analyses de tâches et des actualités du monde du développement sont régulièrement publiés. C'est un excellent moyen de réviser et de rester à jour, même lorsque vous faites la queue pour prendre un café.
Total
Lua est un cas rare où un langage de programmation n'essaie pas de vous intimider. Il est minimaliste, logique et vous permet d'écrire du code de travail littéralement dès les premières minutes de connaissance. Si vous avez longtemps voulu essayer quelque chose de nouveau ou si vous recherchez une entrée facile dans la programmation, Lua sera un excellent choix.
