← Volver al listado de tecnologías

Lua Fluido - Dominando el Arte del Scripting Elegante

Por: Artiko
luaprogramaciónscriptingmetaprogramaciónbook

Lua Fluido

Dominando el Arte del Scripting Elegante

Por qué Lua es diferente y cómo aprovecharlo al máximo


Prefacio

Este es un libro sobre las características de Lua que lo hacen único. No es una referencia A-Z del lenguaje, sino un viaje profundo por los conceptos que distinguen a Lua de otros lenguajes de programación.

Si ya sabes programar en Python, JavaScript, o cualquier otro lenguaje, pero quieres escribir Lua idiomático —no solo código que funcione, sino código que se vea y sienta “Lua-nic”— este libro es para ti.

¿Por qué este libro?

Muchos programadores aprenden Lua y terminan escribiendo “JavaScript con sintaxis diferente”. Se pierden de las características que hacen a Lua especial:

Enfoque práctico

Este libro usa un enfoque hands-on. Verás muchos ejemplos interactivos que puedes ejecutar en el REPL de Lua:

-- >>> t = {1, 2, 3}
-- >>> #t
-- 3

Cada capítulo incluye:

Para quién es este libro

Este libro es para ti si:

Este libro NO es para ti si:

Estructura del libro

El libro está organizado en 5 partes + prólogo:

Prólogo: El Modelo de Lua - Entender la filosofía del lenguaje

Parte I: Estructuras de Datos - Tablas, strings, y sus internals

Parte II: Funciones como Valores - Closures, higher-order functions, decoradores

Parte III: OOP y Prototipos - Metatablas, herencia, sobrecarga de operadores

Parte IV: Control de Flujo - Iteradores, coroutines, async

Parte V: Metaprogramación - Reflexión, sandboxing, C API, code generation


Contenido

Capítulo 1: El Modelo de Lua

Cómo Lua usa tablas para todo y por qué eso es brillante. Una demostración práctica del poder de un lenguaje consistente.


Parte I: Estructuras de Datos

Capítulo 2: Tablas - Arrays y Secuencias

Arrays en Lua: índices desde 1, secuencias vs tablas sparse, el operador #, y cómo iterar correctamente.

Capítulo 3: Diccionarios y Conjuntos

Tablas como hash maps, keys válidos, implementar sets eficientes, y cómo funcionan internamente.

Capítulo 4: Strings - Inmutables y Compartidos

String interning, pattern matching (no regex), construcción eficiente, y manejo de UTF-8.

Capítulo 5: Múltiples Valores y Destructuring

Return múltiple, asignación paralela, varargs, y table unpacking. La elegancia de Lua en acción.


Parte II: Funciones como Valores

Capítulo 6: Funciones de Primera Clase

Funciones como valores: pasarlas, retornarlas, almacenarlas. Higher-order functions y aplicación parcial.

Capítulo 7: Closures - Fábricas de Funciones

Upvalues, funciones que retornan funciones, patrón módulo privado, e iteradores personalizados.

Capítulo 8: Decoradores al Estilo Lua

Wrapping functions para logging, timing, caching, y memoización automática.

Capítulo 9: Introspección y Atributos

Debug library, _ENV, function attributes, y cómo inspeccionar código en runtime.


Parte III: Orientación a Objetos y Prototipos

Capítulo 10: Metatablas - El Protocolo de Objetos

__index, __newindex, __call, __tostring, y otros metamétodos fundamentales.

Capítulo 11: OOP - Clases via Prototipos

El patrón clásico Class:new(), herencia simple, method dispatch, y comparación con OOP tradicional.

Capítulo 12: Sobrecarga de Operadores

Operadores aritméticos, comparación, concatenación. Cuándo usarlos y cuándo NO.

Capítulo 13: Protocolos y Duck Typing

Iterable, callable, stringable protocols. Crear tus propios protocolos.


Parte IV: Control de Flujo y Concurrencia

Capítulo 14: Iteradores - Más que Loops

Stateless vs stateful iterators, generic for, y el protocolo de iteración.

Capítulo 15: Generadores con Coroutines

coroutine.create, resume, yield. Implementar generadores al estilo Python.

Capítulo 16: Programación Asíncrona

Event loops con coroutines, producer-consumer, y pipelines de datos.

Capítulo 17: Manejo de Errores

pcall, xpcall, propagación de errores, y jerarquía de errores personalizados.


Parte V: Metaprogramación

Capítulo 18: Atributos Dinámicos

__index como función, lazy loading de propiedades, proxies y wrappers.

Capítulo 19: Ambientes y Sandboxing

_ENV, globals, ambientes aislados, y sandboxing seguro.

Capítulo 20: La C API - Extendiendo Lua

El stack de Lua, crear módulos nativos, y bindings a librerías C.

Capítulo 21: Code Generation

load, loadstring, generación de código en runtime, y DSLs embebidos.


Apéndices

Apéndice A: LuaJIT - El Turbo

Diferencias con Lua estándar, FFI library, optimizaciones, y benchmarks.

Apéndice B: Ecosistema y Herramientas

LuaRocks, testing con Busted, luacheck, IDEs y editores.

Apéndice C: Lua en el Mundo Real

OpenResty, Redis scripting, Neovim plugins, videojuegos (Love2D, Defold).


Convenciones usadas en este libro

Los ejemplos de código usan el formato de REPL (Read-Eval-Print Loop):

-- Líneas que empiezan con >>> son entradas
-- >>> x = 42
-- >>> print(x)
-- 42

-- Las líneas sin >>> son salidas

Código en negrita indica comandos o texto que debes escribir.

Código en cursiva indica valores que debes reemplazar.

NOTA Este elemento indica una nota o sugerencia.

ADVERTENCIA Este elemento indica una advertencia o precaución.

DEEP DIVE Secciones de análisis profundo de internals.

SOAPBOX Opiniones personales y comparaciones con otros lenguajes.


Cómo contactar

Si encuentras errores, tienes sugerencias, o quieres compartir cómo usas Lua, me encantaría saber de ti.

Puedes reportar issues o contribuir al código de ejemplo del libro en el repositorio de GitHub.


Agradecimientos

Este libro está inspirado en “Fluent Python” de Luciano Ramalho, un texto magistral sobre cómo dominar un lenguaje más allá de su sintaxis básica.

Gracias a Roberto Ierusalimschy, Luiz Henrique de Figueiredo, y Waldemar Celes por crear un lenguaje tan elegante y bien diseñado.

Gracias a la comunidad de Lua por mantener vivo el espíritu de simplicidad y poder.


Empecemos

¿Listo para escribir Lua como un experto?

👉 Comienza con el Capítulo 1: El Modelo de Lua


“Lua es prueba de que menos puede ser más. Un lenguaje pequeño con grandes ideas.”