Cuando abriste Lua y pensaste: «Espera, ¿dónde están las llaves?»
Hay idiomas que te hacen querer cerrar el portátil e ir a pastar vacas al pueblo. Y está Lua, un lenguaje que te recibe como un viejo amigo: sin ceremonias innecesarias, sin estructuras de cinco pisos y sin la sensación de que accidentalmente abriste la tesis de alguien más sobre física cuántica.
Si alguna vez has jugado a World of Warcraft, Roblox o un mod de Garry's Mod, enhorabuena, ya has usado Lua indirectamente. Este lenguaje está literalmente en todas partes donde necesitas escribir algo rápidamente, sin desplegar una estación espacial de dependencias.

Paso 0: Instalación (el spoiler es rápido)
Lua es uno de los lenguajes más fáciles de instalar. Sin gigabytes de SDK, sin «por favor, actualiza tu versión de Java a 847.3».
En Linux/macOS:
# Ubuntu/Debian
sudo apt install lua5.4
# macOS (a través de Homebrew)
brew install luaEn Windows:
Descargar LuaBinaries desde sitio web oficial o ponlo a través de scoop:
scoop install luaComprobamos que todo funciona:
lua -vSi recibes algo como Lua 5.4.7 como respuesta, estás en el negocio. Si no es así, bueno, lo de siempre, comprueba el PATH.
Paso 1: ¡Hola, mundo! (ritual de iniciación)
Crea el archivo hello.lua y escribe:
print("Hello, World!")Iniciar:
lua hello.luaTodo. Una. Una única llamada. Sin public static void main, sin import, sin #include <iostream>. Lua respeta tu tiempo.
Para comparar, aquí está lo mismo en Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}Lua lo ve como:
«Hermano, ¿por qué tantas letras? print() y sigamos adelante».
Paso 2: Variables: solo tienes que escribir y ya está
En Lua no es necesario declarar el tipo de variable. No hay int, string, float. Lua lo resolverá por sí mismo:
name = "Alexey"
age = 25
is_developer = true
print(name) -- Алексей
print(type(age)) -- number
print(type(name)) -- stringLas variables locales se declaran a través de local y esto se considera de buen gusto:
local score = 100
local player = "Hero"¿Por qué local? Porque sin él, la variable se vuelve global, y las variables globales en un proyecto grande son como dejar las llaves del apartamento debajo de la alfombra. Parece cómodo, pero luego te sorprenderás.
Paso 3: Condiciones — 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")
endPresta atención: en lugar de { y } — then y end. Al principio es inusual, pero luego te darás cuenta de que incluso se lee más limpio. Lua ama las palabras, no los símbolos.
Otro punto: en Lua no hay !=. En su lugar, se utiliza ~=:
if name ~= "Admin" then
print("Access denied")
endSí, tilde. Solo acéptalo.
Paso 4: Ciclos: girar y girar
while:
local i = 1
while i <= 5 do
print("Iteration: " .. i)
i = i + 1
endPor cierto, .. es una concatenación de cadenas en Lua. No +, no concat(), sino simplemente dos puntos.
for:
for i = 1, 5 do
print("Step " .. i)
endCODE_BLOCK_12__for-in (para recorrer tablas):
local fruits = {"apple", "banana", "mango"}
for index, fruit in ipairs(fruits) do
print(index .. ". " .. fruit)
endPaso 5: Funciones: escribimos nuestros comandos
local function greet(name)
return "Hi, " .. name .. "! Welcome to Lua"
end
print(greet("Maria"))Las funciones en Lua son ciudadanos de primera clase. Se pueden almacenar en variables, pasar como argumentos, devolver desde otras funciones. En general, la programación funcional no es solo palabras:
local function apply(func, value)
return func(value)
end
local function double(x)
return x * 2
end
print(apply(double, 21)) -- 4242 es la respuesta a todo. ¿Coincidencia? No lo creo.
Paso 6: Tablas: el corazón de Lua
Aquí es donde comienza la magia. En Lua no hay matrices, no hay objetos, no hay diccionarios. Pero hay tablas — una estructura de datos universal que lo reemplaza todo:
-- Как массив
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: 75Un punto importante: la indexación en Lua comienza con 1, no con 0. Sí, este es el detalle que te causará una crisis existencial si estás acostumbrado a JavaScript o Python. Pero te acostumbrarás.
Paso 7: Miniproyecto: misión de texto
Es hora de poner todo junto. Aquí tienes un pequeño juego de texto:
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()Guarda esto en quest.lua, ejecuta lua quest.lua y felicidades, acabas de escribir tu primer juego en Lua.
¿Qué sigue?
Lua es un lenguaje que te abrirá las puertas al desarrollo de juegos (Love2D, Defold, Roblox), al desarrollo integrado, a la escritura de complementos y scripts para aplicaciones existentes. Es ligero, rápido y sorprendentemente potente.
Aquí hay algunas direcciones en las que puedes moverte:
Roblox Studio — si quieres hacer juegos y ganar dinero con ello
Love2D — motor 2D minimalista para juegos independientes
Neovim — la configuración y los complementos se escriben en Lua
OpenResty/Nginx — Lua para servidores web de alta carga
Embedded/IoT — Lua funciona muy bien en microcontroladores (NodeMCU, ESP8266)
Si te gusta este formato y quieres seguir adelante, echa un vistazo a Kodik. Esta es una aplicación donde puedes aprender programación desde cero: desde Python y JavaScript hasta HTML, CSS y otras tecnologías. No hay 200 páginas de teoría árida, solo lecciones claras con práctica, después de las cuales realmente entiendes lo que escribiste y por qué.
Kodik creado especialmente para aquellos que quieren aprender a su propio ritmo, desde su teléfono u ordenador, sin ataduras a horarios y cursos largos.
Y también tenemos Canal de Telegram con una comunidad de más de 2000 desarrolladores, donde se publican regularmente publicaciones útiles sobre programación, análisis de tareas y noticias del mundo del desarrollo. Es una forma excelente de repasar el material y mantenerse al día, incluso mientras haces cola para tomar un café.
Total
Lua es un caso excepcional en el que un lenguaje de programación no intenta intimidarte. Es minimalista, lógico y te permite escribir código de trabajo literalmente desde los primeros minutos de conocimiento. Si siempre has querido probar algo nuevo o estás buscando una forma fácil de empezar a programar, Lua es una excelente opción.
