# ¿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](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/tutorial-de-lua/ "Tutorial de Lua") en nuestra guía digital.

## ¿Qué es Lua?

El universo de los [lenguajes de programación de Internet](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/lenguajes-de-programacion-web/) 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](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/tutorial-de-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](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/compilador-e-interprete/) 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](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/paradigmas-de-programacion/ "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*](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/panoramica-sobre-frameworks-web/ "Panorámica sobre frameworks web") 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](https://www.ionos.com/es-us/digitalguide/servidores/know-how/guia-para-aprender-a-utilizar-mysql/) Proxy, la base de datos [NoSQL](https://www.ionos.com/es-us/digitalguide/hosting/cuestiones-tecnicas/nosql/) de Redis y los servidores web [Apache y Nginx](https://www.ionos.com/es-us/digitalguide/servidores/know-how/apache-vs-nginx-una-comparativa-de-servidores-web/) 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](https://www.ionos.com/es-us/digitalguide/paginas-web/diseno-web/que-es-css-un-tutorial-con-lo-que-necesitas-saber/ "¿Qué es CSS?: un tutorial con lo que necesitas saber") 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.

En resumen 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:

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

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

```none
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:

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

Como las variables indefinidas resultan en nulo (“nil”), el resultado es el siguiente:

```none
nil
Hello World
```


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/que-es-lua/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/que-es-lua/) for AI/LLM consumption.