¿Qué es Lua?: una introducción al lenguaje de programación
“Lua” es un término portugués que significa “luna”. El lenguaje de programación homónimo presenta varias particularidades, como su extensibilidad independientemente de la plataforma, su pequeño tamaño, de solo 120 kilobytes, y su alta velocidad: razones suficientes para observar más de cerca este lenguaje de secuencias de comandos.
En este artículo, te presentamos una introducción general a la programación con Lua. Si te apetece comenzar a programar con este lenguaje, también encontrarás un detallado tutorial de Lua en nuestra guía digital.
¿Qué es Lua?
El universo de los lenguajes de programación de Internet es casi infinito. Lua logra destacar entre la multitud, pero, en términos de popularidad, aún se lo conoce relativamente poco en comparació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 programación independiente: los desarrolladores suelen emplearlo como lenguaje de scripting integrado en programas individuales. Sus principales ámbitos de aplicación siempre han sido los videojuegos y los motores de juego, pero Lua también se utiliza para desarrollar una gran cantidad de programas de redes y sistemas.
Lua fue desarrollado en la Universidad Católica de Río de Janeiro por Roberto Ierusalimschy, Luiz Henrique de Figueiredo y Waldemar Celes. Hasta 1992, la importación de hardware y software estuvo sujeta a limitaciones estrictas en Brasil. Debido a esta necesidad, los tres programadores desarrollaron su propio lenguaje de secuencias de comandos y lo llamaron Lua. Hoy en día, se ha convertido en uno de los lenguajes de programación más importantes y populares en muchos ámbitos.
¿Qué es Lua? Este lenguaje de secuencia de comandos, consiste básicamente en una biblioteca que los programadores pueden incorporar en su software para volverlo programable. Lua está disponible para todos los sistemas operativos comunes y contiene un intérprete muy compacto que se gestiona con unas pocas líneas de código y que también puede acceder a la biblioteca. A pesar del concepto minimalista, el intérprete ofrece características útiles como la limpieza automática de estructuras de datos que ya no se utilizan, lo que permite librar memoria.
En resumen, estás son las características más importantes de Lua:
- Compacto
- Ejecución rápida
- Excelente capacidad de expansión
- Fácil de aprender
- Disponible de forma gratuita
¿Cómo se estructura la programación con Lua y para qué se utiliza?
El lenguaje de programación Lua se usa para la programación procedimental general. Por lo tanto, dentro de los paradigmas de programación, es considerado perteneciente a los lenguajes de scripting imperativos. Se implementa como una biblioteca en C y ofrece funciones como el código Lua y un programa host de muestra (llamado lua), que proporciona un intérprete de Lua independiente.
Como lenguaje de scripting, Lua no tiene su propio programa principal. Solo funciona integrado en una aplicación host, que puede llamar las funciones mencionadas anteriormente a través del código Lua. Gracias a la función C, Lua se puede extender mediante numerosas funciones para cubrir los igualmente numerosos requisitos de programación. Este lenguaje de programación se puede adaptar muy fácilmente, de modo que se garantiza un framework sintáctico común.
Si ya tienes conocimientos de Pascal, no tendrás problema con la sintaxis de Lua, porque ambos lenguajes de programació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 identifica 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 siguientes tipos de datos: table, userdata, function, thread, nil, boolean, string y number. De esta lista, solo el primer tipo de datos mencionado, table (tabla en español), es estructurado. Los tipos de datos variables se determinan 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 limitaciones impuestas a los desarrolladores, el alcance de las aplicaciones para el lenguaje de scripting Lua es muy amplio. A través de módulos definidos por el usuario, Lua puede extenderse virtualmente sin fin. Las aplicaciones de la programación con Lua, incluyen desde los servidores web hasta el desarrollo de videojuegos. Además, Lua es ideal para programar tu propia aplicación.
El lenguaje de programación Lua es especialmente utilizado en la industria de los videojuegos y varios utilizan Lua como lenguaje de scripting. Lua se usa a menudo en los motores de juego para mantener las configuraciones y los personajes del juego separados, con lo que se logra flexibilizar el motor de juego y permitir que diferentes videojuegos utilicen el mismo motor. Algunos de los ejemplos más populares son el juego de rol en línea multijugador World of Warcraft, ya convertido en un clásico, o el exitoso juego de rompecabezas Enigma.
Otro gran ámbito de aplicación de Lua es la programación de redes y sistemas. Lua se utiliza para configurar y automatizar los programas. Algunos ejemplos muy conocidos son VLC Media Player o Adobe Photoshop Lightroom. En cuanto a las redes, son los analizadores 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 servidores web Apache y Nginx apuestan por este lenguaje de secuencias de comandos.
Lua: un lenguaje de programación con grandes puntos fuertes y pequeñas debilidades
Conceptualmente, como lenguaje de programación, Lua ofrece pocas características innovadoras. Su sintaxis es bastante convencional y, con las 20 palabras clave reservadas ya mencionadas, también es bastante simple.
La tipificación en Lua es dinámica. El tipo de una variable se determina cuando se ejecuta un script, pero, como hemos mencionado, se puede convertir a otro tipo en cualquier momento. Este es un gran punto fuerte de Lua, especialmente en comparación con CSS o PHP, en los que, por ejemplo, la asignación de cualquier tipo a "booleano" (es decir, los valores lógicos) no sigue un método específico.
La mayor ventaja de Lua: todos los textos o números a adaptar se escriben directamente en variables. La asignación se realiza en un bloque cerrado al comienzo del módulo. Las funciones posteriores solo acceden a las variables. Si el entorno cambia, solo los valores del bloque deben adaptarse en consecuencia. Este es el método más simple de programación para la creación inicial.
Sin embargo, Lua también presenta algunas desventajas: si una función se modifica debido a una actualización, el código fuente debe recomponerse en cada proyecto, lo que significa que todas las páginas involucradas necesitarán ser actualizadas.
El lenguaje de script Lua puede usarse para escribir programas independientes, pero también puede servir como lenguaje integrado. Puede que Lua no sea tan popular como otros lenguajes de programación, pero esto ciertamente no se debe a la falta de herramientas de programación.
Introducción al lenguaje de programación Lua (con fragmentos de código)
Finalmente, te ayudamos a hacerte una idea de este lenguaje de scripting con dos ejemplos simples, destinados a darte una visión general del funcionamiento 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 obligatorio declarar variables en el lenguaje de programación Lua, sino que estas solo se crean si es necesario. Como recordatorio, los valores pueden ser de los siguientes tipos: “nil” es decir nulo (a la par que el valor de las variables no creadas), números, literales (caracteres, letras, palabras, etc.), booleanos (verdadero/falso o true/false), tablas y funciones. Un ejemplo de codificación simple sería el siguiente:
print ( var )
var = "Hello World"
print ( var )
Como las variables indefinidas resultan en nulo (“nil”), el resultado es el siguiente:
nil
Hello World