{}const=>[]async()letfn</>var
FundamentosDesarrollo

Lua es el lenguaje completo más simple que casi nadie conoce 🦎

Un lenguaje dinámico compacto que se integra fácilmente en proyectos C/C++ y se aprende más rápido que Python, Ruby y JavaScript. Entendemos por qué su minimalismo no interfiere, sino que ayuda a escribir un código serio.

К

Kodik

Autor

5 min de lectura

Python ha sido considerado durante mucho tiempo un «lenguaje para todos», pero Lua lleva el listón aún más bajo: 22 palabras clave, 8 tipos de datos y una estructura de datos. Esto es suficiente para escribir un juego, configurar un servidor web o automatizar una infraestructura en la nube.

Debido a un núcleo tan pequeño, el lenguaje se lee como pseudocódigo, y se puede aprender literalmente en una noche. En este artículo nos sumergiremos en profundidad: veremos cómo funcionan las tablas y las corrutinas, dónde Lua gana a Python, proporcionaremos estadísticas de uso y mostraremos ejemplos en vivo.


Mínimo de sintaxis — máximo de fuerza ⏱️

-- рекурсивный факториал
function fact(n)
    if n == 1 then return 1 end
    return n * fact(n - 1)
end

print("fact(5) = " .. fact(5)) -- 120

Los bloques se cierran end, las líneas se concatenan .., los comentarios comienzan --. Claro y sin reglas ocultas. ¿Necesitas un ciclo? for de una sola línea lo resuelve:

for i = 1, 10 do print(i) end

Números secos: Lua vs Python, Ruby, JavaScript 📊

Indicador

Lua 5.4

Python 3.12

Ruby 3.3

Node.js 20

Palabras clave

22

35

41

44

Hello World, bytes en exe (Linux, compresión UPX)

404 KB

27 MB

31 MB

61 MB

Hora de inicio del script "vacío", ms

6

22

38

45

Pico de memoria de script «vacío», MB

1.9

9.3

10.8

15.4

LOC para factorial (con i/o)

5

7

9

9

GitHub ★ por año (2024→2025)

+7 %

+3 %

−1 %

+4 %

Kernel + stdlib, líneas de código C

29 k

500 k

380 k

620 k

Conclusión: Lua se inicia más rápido, ocupa menos memoria y es más compacto que sus competidores, al tiempo que conserva todas las características necesarias.


Una estructura de datos: una tabla 📦

local arr = {1, 4, 9}
local map = {width = 200, height = 100}

print(arr[1])      -- 1 (индексация с 1)
print(map.width)   -- 200

¿Quieres una matriz? Utiliza índices numéricos. ¿Necesitas un diccionario? Asigna por nombre. ¿Quieres ambos? No hay problema: la tabla puede almacenar simultáneamente elementos posicionales y con nombre.

Ventajas de este enfoque:

  1. Un modelo de memoria simple es un asignador.

  2. No hay diferencia entre un objeto JSON y una matriz al intercambiar datos con JS.

  3. El tiempo de aprendizaje se reduce: «aprendí las tablas, entendí todas las estructuras de datos de Lua».


Entorno productivo 🔧

  • Asignaciones múltiples y valores devueltos

local a, b = 10, 20
function size() return 800, 600 end
local w, h = size()
  • Iteradores ipairs y pairs

for i, v in ipairs({"a","e","i"}) do print(i, v) end
for k, v in pairs({john=120, ann=80}) do print(k, v) end
  • Corrutinas — una forma fácil de escribir código no bloqueante sin async/await:

local co = coroutine.create(function()
  for i = 1,3 do print("tick", i); coroutine.yield() end
end)

coroutine.resume(co) -- tick 1
coroutine.resume(co) -- tick 2
coroutine.resume(co) -- tick 3

Dónde funciona ya Lua 🚀

Proyecto / Producto

Qué hace Lua

Motivo de la elección

Roblox

La lógica de juego de millones de juegos

Sandbox + velocidad JIT

Blizzard WoW

Interfaz de usuario y complementos

Reinicio «en caliente» sin reconstrucción

Nginx (OpenResty)

Renderizado dinámico y A/B

Ligereza, integración

Adobe Lightroom

Extensiones y ajustes preestablecidos

Scripting multiplataforma

Wireshark

Diseccionadores personalizados

Integración rápida de módulos C

Esto es solo la punta del iceberg: Lua se puede encontrar en Redis, en los sistemas integrados de DJI e incluso en el piloto automático de Tesla.


Biblioteca estándar mínima pero potente 📚

local msg = "Hello Lua"
print(msg:sub(7):lower():reverse()) -- aul
  • Líneas, tablas, corrutinas, sistema de archivos, os, debug: todo ya está cosido, no es necesario importar nada.

  • El sistema de patrones «ligero y fácil de recordar» ocupa <500 líneas de C.

  • El recolector de basura con un algoritmo de lista tricolor funciona automáticamente.


Gestión de errores sin dolor de cabeza 🚑

function grade(score)
  if score > 100 then error{code=1002,msg=">100"} end
  return score>=50 and "P" or "F"
end

for _, s in ipairs({20,120,60}) do
  local ok, res = pcall(grade, s)
  if ok then print("Grade:", res)
  else print("Error["..res.code.."]:", res.msg) end
end

pcall captura excepciones y el resultado (ok, data) simplifica el flujo de procesamiento.


Módulos sin palabras clave especiales 📦➡️📦

-- calc.lua
local M = {}
function M.add(a,b) return a+b end
return M
-- main.lua
local calc = require("calc")
print(calc.add(2,3)) -- 5

Sin export/import; tablas y require — ese es todo el «montaje».


Ecosistema: pequeño pero en crecimiento 🌱

  • LuaRocks: >9000 paquetes (crecimiento +12 % en 2024).

  • LuaJIT: acelera el código a velocidad C, se utiliza en Nginx y Redis.

  • Tendencias de vacantes: Upwork señala un aumento del 18 % en la demanda de Lua freelance para 2024.


Por qué aprender Lua ahora 🎓

  1. Low‑code boom: las startups buscan DSL integradas: Lua se integra con dos archivos C.

  2. Industria del juego: Roblox, Defold, Corona SDK se basan en scripts de Lua.

  3. Mercado de IoT: los firmwares ESP con Lua ocupan <512 KB de flash.

  4. OpenAI API? 🤖 Escribir scripts de pruebas A‑B es más barato en Lua que aumentar el full‑stack.

  5. A través de aplicación «Kodik: aprendizaje de programación» puedes completar un curso interactivo de Lua en una tarde 🔥 y aplicar tus habilidades de inmediato.


Conclusión 🎯

Lua combina el minimalismo extremo con la practicidad: el compilador JIT, LuaRocks, las corrutinas y las metatablas te permiten escribir juegos, servidores web y scripts para DevOps. Si necesitas un lenguaje que puedas explicar a un amigo mientras tomas un café, prueba Lua. Y si quieres pasar de cero a las primeras corrutinas en un par de horas, echa un vistazo a «Código: aprendizaje de programación».

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta