“Lua” es un término portugués que significa “luna”. El lenguaje de pro­gra­ma­ción homónimo presenta varias pa­r­ti­cu­la­ri­da­des, como su ex­te­n­si­bi­li­dad in­de­pe­n­die­n­te­me­n­te de la pla­ta­fo­r­ma, su pequeño tamaño, de solo 120 kilobytes, y su alta velocidad: razones su­fi­cie­n­tes para observar más de cerca este lenguaje de se­cue­n­cias de comandos.

En este artículo, te pre­se­n­ta­mos una in­tro­du­c­ción general a la pro­gra­ma­ción con Lua. Si te apetece comenzar a programar con este lenguaje, también en­co­n­tra­rás un detallado tutorial de Lua en nuestra guía digital.

¿Qué es Lua?

El universo de los lenguajes de pro­gra­ma­ción de Internet es casi infinito. Lua logra destacar entre la multitud, pero, en términos de po­pu­la­ri­dad, aún se lo conoce re­la­ti­va­me­n­te poco en co­m­pa­ra­ción con Python o Perl, por ejemplo. Sin embargo, Lua existe desde hace más de dos décadas, aunque raras veces se usa como lenguaje de pro­gra­ma­ción in­de­pe­n­die­n­te: los de­sa­rro­lla­do­res suelen emplearlo como lenguaje de scripting integrado en programas in­di­vi­dua­les. Sus pri­n­ci­pa­les ámbitos de apli­ca­ción siempre han sido los vi­deo­jue­gos y los motores de juego, pero Lua también se utiliza para de­sa­rro­llar una gran cantidad de programas de redes y sistemas.

Lua fue de­sa­rro­lla­do en la Uni­ve­r­si­dad Católica de Río de Janeiro por Roberto Ie­ru­sa­li­m­s­chy, Luiz Henrique de Fi­guei­re­do y Waldemar Celes. Hasta 1992, la im­po­r­ta­ción de hardware y software estuvo sujeta a li­mi­ta­cio­nes estrictas en Brasil. Debido a esta necesidad, los tres pro­gra­ma­do­res de­sa­rro­lla­ron su propio lenguaje de se­cue­n­cias de comandos y lo llamaron Lua. Hoy en día, se ha co­n­ve­r­ti­do en uno de los lenguajes de pro­gra­ma­ción más im­po­r­ta­n­tes y populares en muchos ámbitos.

¿Qué es Lua? Este lenguaje de secuencia de comandos, consiste bá­si­ca­me­n­te en una bi­blio­te­ca que los pro­gra­ma­do­res pueden in­co­r­po­rar en su software para volverlo pro­gra­ma­ble. Lua está di­s­po­ni­ble para todos los sistemas ope­ra­ti­vos comunes y contiene un in­té­r­pre­te muy compacto que se gestiona con unas pocas líneas de código y que también puede acceder a la bi­blio­te­ca. A pesar del concepto mi­ni­ma­li­s­ta, el in­té­r­pre­te ofrece ca­ra­c­te­rí­s­ti­cas útiles como la limpieza au­to­má­ti­ca de es­tru­c­tu­ras de datos que ya no se utilizan, lo que permite librar memoria.

En resumen, estás son las ca­ra­c­te­rí­s­ti­cas más im­po­r­ta­n­tes de Lua:

  • Compacto
  • Ejecución rápida
  • Excelente capacidad de expansión
  • Fácil de aprender
  • Di­s­po­ni­ble de forma gratuita

¿Cómo se es­tru­c­tu­ra la pro­gra­ma­ción con Lua y para qué se utiliza?

El lenguaje de pro­gra­ma­ción Lua se usa para la pro­gra­ma­ción pro­ce­di­me­n­tal general. Por lo tanto, dentro de los pa­ra­di­g­mas de pro­gra­ma­ción, es co­n­si­de­ra­do pe­r­te­ne­cie­n­te a los lenguajes de scripting im­pe­ra­ti­vos. Se im­ple­me­n­ta como una bi­blio­te­ca en C y ofrece funciones como el código Lua y un programa host de muestra (llamado lua), que pro­po­r­cio­na un in­té­r­pre­te de Lua in­de­pe­n­die­n­te.

Como lenguaje de scripting, Lua no tiene su propio programa principal. Solo funciona integrado en una apli­ca­ción host, que puede llamar las funciones me­n­cio­na­das an­te­rio­r­me­n­te a través del código Lua. Gracias a la función C, Lua se puede extender mediante numerosas funciones para cubrir los igua­l­me­n­te numerosos re­qui­si­tos de pro­gra­ma­ción. Este lenguaje de pro­gra­ma­ción se puede adaptar muy fá­ci­l­me­n­te, de modo que se garantiza un framework si­n­tá­c­ti­co común.

Si ya tienes co­no­ci­mie­n­tos de Pascal, no tendrás problema con la sintaxis de Lua, porque ambos lenguajes de pro­gra­ma­ción son muy similares en este punto: es posible separar varios comandos en una línea de script con un punto y coma. Lua tiene un total de 20 palabras clave definidas que son fáciles de aprender. Para que te hagas una idea, Lua suele utilizar bloques de funciones que comienzan con palabras clave como goto y terminan con palabras como end, elseif o else. La palabra clave local ide­n­ti­fi­ca variables locales que solo son válidas para el bloque de funciones en el que aparece. Los bloques de funciones también pueden anidarse entre si.

Lua puede trabajar con los si­guie­n­tes tipos de datos: table, userdata, function, thread, nil, boolean, string y number. De esta lista, solo el primer tipo de datos me­n­cio­na­do, table (tabla en español), es es­tru­c­tu­ra­do. Los tipos de datos variables se de­te­r­mi­nan durante la ejecución del script, pero se pueden convertir en cualquier momento si es necesario.

¿En qué ámbitos se utiliza Lua?

Debido a la falta de li­mi­ta­cio­nes impuestas a los de­sa­rro­lla­do­res, el alcance de las apli­ca­cio­nes para el lenguaje de scripting Lua es muy amplio. A través de módulos definidos por el usuario, Lua puede ex­te­n­de­r­se vi­r­tua­l­me­n­te sin fin. Las apli­ca­cio­nes de la pro­gra­ma­ción con Lua, incluyen desde los se­r­vi­do­res web hasta el de­sa­rro­llo de vi­deo­jue­gos. Además, Lua es ideal para programar tu propia apli­ca­ción.

El lenguaje de pro­gra­ma­ción Lua es es­pe­cia­l­me­n­te utilizado en la industria de los vi­deo­jue­gos y varios utilizan Lua como lenguaje de scripting. Lua se usa a menudo en los motores de juego para mantener las co­n­fi­gu­ra­cio­nes y los pe­r­so­na­jes del juego separados, con lo que se logra fle­xi­bi­li­zar el motor de juego y permitir que di­fe­re­n­tes vi­deo­jue­gos utilicen el mismo motor. Algunos de los ejemplos más populares son el juego de rol en línea mu­l­ti­ju­ga­dor World of Warcraft, ya co­n­ve­r­ti­do en un clásico, o el exitoso juego de ro­m­pe­ca­be­zas Enigma.

Otro gran ámbito de apli­ca­ción de Lua es la pro­gra­ma­ción de redes y sistemas. Lua se utiliza para co­n­fi­gu­rar y au­to­ma­ti­zar los programas. Algunos ejemplos muy conocidos son VLC Media Player o Adobe Photoshop Lightroom. En cuanto a las redes, son los ana­li­za­do­res de red, como Wireshark, los que utilizan las funciones de Lua. Además, también MySQL Proxy, la base de datos NoSQL de Redis y los se­r­vi­do­res web Apache y Nginx apuestan por este lenguaje de se­cue­n­cias de comandos.

Lua: un lenguaje de pro­gra­ma­ción con grandes puntos fuertes y pequeñas de­bi­li­da­des

Co­n­ce­p­tua­l­me­n­te, como lenguaje de pro­gra­ma­ción, Lua ofrece pocas ca­ra­c­te­rí­s­ti­cas in­no­va­do­ras. Su sintaxis es bastante co­n­ve­n­cio­nal y, con las 20 palabras clave re­se­r­va­das ya me­n­cio­na­das, también es bastante simple.

La ti­pi­fi­ca­ción en Lua es dinámica. El tipo de una variable se determina cuando se ejecuta un script, pero, como hemos me­n­cio­na­do, se puede convertir a otro tipo en cualquier momento. Este es un gran punto fuerte de Lua, es­pe­cia­l­me­n­te en co­m­pa­ra­ción con CSS o PHP, en los que, por ejemplo, la asi­g­na­ción de cualquier tipo a "booleano" (es decir, los valores lógicos) no sigue un método es­pe­cí­fi­co.

La mayor ventaja de Lua: todos los textos o números a adaptar se escriben di­re­c­ta­me­n­te en variables. La asi­g­na­ción se realiza en un bloque cerrado al comienzo del módulo. Las funciones po­s­te­rio­res solo acceden a las variables. Si el entorno cambia, solo los valores del bloque deben adaptarse en co­n­se­cue­n­cia. Este es el método más simple de pro­gra­ma­ción para la creación inicial.

Sin embargo, Lua también presenta algunas de­s­ve­n­ta­jas: si una función se modifica debido a una ac­tua­li­za­ción, el código fuente debe re­co­m­po­ne­r­se en cada proyecto, lo que significa que todas las páginas in­vo­lu­cra­das ne­ce­si­ta­rán ser ac­tua­li­za­das.

En resumen

El lenguaje de script Lua puede usarse para escribir programas in­de­pe­n­die­n­tes, pero también puede servir como lenguaje integrado. Puede que Lua no sea tan popular como otros lenguajes de pro­gra­ma­ción, pero esto cie­r­ta­me­n­te no se debe a la falta de he­rra­mie­n­tas de pro­gra­ma­ción.

In­tro­du­c­ción al lenguaje de pro­gra­ma­ción Lua (con fra­g­me­n­tos de código)

Fi­na­l­me­n­te, te ayudamos a hacerte una idea de este lenguaje de scripting con dos ejemplos simples, de­s­ti­na­dos a darte una visión general del fu­n­cio­na­mie­n­to de Lua.

Primer ejemplo: saltos de línea en Lua

En Lua, los saltos de línea se añaden con “\“ o “\n“ y un salto de línea real:

print ('1 : Hello\
	World')
print ("2: Hello\
	World")

En este caso, el resultado de salida tiene el siguiente aspecto:

1: Hello
World
2: Hello
World

Segundo ejemplo: variables en Lua

No es obli­ga­to­rio declarar variables en el lenguaje de pro­gra­ma­ción Lua, sino que estas solo se crean si es necesario. Como re­co­r­da­to­rio, los valores pueden ser de los si­guie­n­tes tipos: “nil” es decir nulo (a la par que el valor de las variables no creadas), números, literales (ca­ra­c­te­res, letras, palabras, etc.), booleanos (verdadero/falso o true/false), tablas y funciones. Un ejemplo de co­di­fi­ca­ción simple sería el siguiente:

print ( var )
var = "Hello World"
print ( var )

Como las variables in­de­fi­ni­das resultan en nulo (“nil”), el resultado es el siguiente:

nil
Hello World
Ir al menú principal