typestar

Lenguajes

Lua

Un lenguaje de scripting pequeño diseñado para embeberse, muy usado en juegos y otras aplicaciones anfitrionas.

Practica Lua

27 pasos en 1 tours, desde lo básico hasta programas completos.

Los tours

Primera versión
1993
Creado por
Roberto Ierusalimschy, Waldemar Celes, and Luiz Henrique de Figueiredo at PUC-Rio
Tipado
Dinámico y diminuto; las tablas y las metatablas lo hacen todo
Los fragmentos siguen
5.5
Extensiones de archivo
.lua

Para qué sirve

Lua es el lenguaje que los programas incrustan cuando quieren volverse programables: un intérprete completo y rápido en unos cientos de kilobytes de C ANSI portable, con una API de C diseñada exactamente para ese traspaso. El ecosistema entero de addons de World of Warcraft, el scripting de juegos de Roblox (vía su dialecto Luau), la configuración de Neovim, los scripts de servidor de Redis, el manejo de peticiones de nginx/OpenResty y los sistemas de plugins de Wireshark y VLC corren sobre él — usualmente sin que sus usuarios se piensen programadores de Lua.

El diseño es economía radical: una sola estructura de datos, la tabla, sirve de arreglo, diccionario, record, módulo y clase, y las metatablas dejan que la aplicación anfitriona arme el modelo de objetos que le calce. Las funciones son de primera clase con clausuras de verdad, las corrutinas dan concurrencia cooperativa, y la referencia completa del lenguaje cabe en una tarde. LuaJIT, el JIT trazador de Mike Pall, lo volvió por años la implementación de lenguaje dinámico más rápida que existía y cimentó su lugar en la industria de los juegos.

Su centro de gravedad son los juegos y el scripting embebido antes que las aplicaciones independientes: la biblioteca estándar es deliberadamente mínima (sin JSON, sockets ni regex más allá de los patrones de Lua), porque se espera que el anfitrión ponga las baterías. Ese trato — núcleo diminuto, mundo definido por el anfitrión — es exactamente por qué lo siguen eligiendo.

De dónde viene

Lua nació en 1993 en la PUC-Rio de Brasil, construido por Roberto Ierusalimschy, Waldemar Celes y Luiz Henrique de Figueiredo para aplicaciones de ingeniería de Petrobras que necesitaban entrada de datos configurable — las restricciones comerciales al software importado volvían práctico un lenguaje propio. El nombre significa luna en portugués, un guiño a un predecesor llamado SOL (sol).

La versión 5.0 (2003) asentó el lenguaje moderno — corrutinas, las metatablas en su forma actual, la VM basada en registros — y el sistema de paquetes de 5.1 más la llegada de LuaJIT hicieron de mediados de los 2000 su era de despegue: Adobe Lightroom se distribuyó mayormente en Lua, y los estudios de juegos lo adoptaron en masa para scripting. Que Blizzard lo expusiera a los jugadores de World of Warcraft creó una de las comunidades de programación accidentales más grandes de la historia.

El lenguaje sigue evolucionando con deliberación — 5.3 sumó enteros, 5.4 el GC generacional — mientras rompe compatibilidad entre versiones con fama, razón por la que LuaJIT se quedó en 5.1 y Roblox bifurcó Luau. El equipo de tres todavía lo dirige desde Río, haciendo de Lua uno de los pocos lenguajes ampliamente desplegados que jamás dirigió una corporación o fundación.

Cómo se siente teclearlo

Lua se escribe como prosa estructurada: palabras clave en vez de llaves (then, do, end cerrando todo), casi nada de puntuación más allá de los puntos de concatenación y los constructores de tabla, y local abriendo la mayoría de las líneas. Los arreglos 1-indexados y el operador de largo # se vuelven memoria de dedos rápido, el dos puntos pasa self en silencio en las llamadas a métodos, y string.format carga el vocabulario printf. Es un tipeo amable y parejo — palabras en minúscula, pocos símbolos — con la ceremonia ocasional de metatablas (setmetatable, __index) resaltando precisamente porque todo lo demás es tan llano.

Practica Lua

27 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes