¿Qué es el lenguaje de programación Lua?

Lua es un lenguaje de programación muy sencillo de aprender, sobre todo, si es tu primera vez programando. Esto se debe a que Lua necesita menos líneas de código para que funcione, lo cual es diferente con otros tipos de lenguajes de programación como Python, Java o C++. Además, Lua pertenece a la categoría de lenguaje de programación de bajo nivel. Si bien este lenguaje de programación fue creado en 1993 en Brasil, hoy se ha hecho muy popular por los beneficios que ofrece en relación a su facilidad para aprenderlo y aplicarlo. Además, su enorme simplicidad ha ido evolucionando hasta lo que es hoy: un lenguaje de programación que se utiliza para diversas áreas como en la creación de videojuegos, la robótica y el desarrollo de aplicaciones de escritorio. Otro de los grandes beneficios del lenguaje de programación Lua es que se encuentra disponible para todos los sistemas operativos más comunes como Windows, Linux e Mac OS.

¿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.

Funcionamiento interno

Los programas en Lua no son interpretados directamente, sino compilados bytecode, que es ejecutado en la máquina virtual de Lua. El proceso de compilación es normalmente transparente al usuario y se realiza en tiempo de ejecución, pero puede hacerse con anticipación para aumentar el rendimiento y reducir el uso de la memoria al prescindir del compilador.

También es posible la compilación en tiempo de ejecución utilizando LuaJIT.

Códigos de ejemplo

El clásico programa Hola mundo puede ser escrito de la siguiente manera:

print("Hola mundo!")
    

También puede ser escrito como

io.write('Hello World!\n')
    

o el ejemplo dado en el Website de Lua

io.write("Hello world, from ",_VERSION,"!\n")
    

Los comentarios usan la siguiente sintaxis, similar a , SQLy VHDL

-- Un comentario en Lua empieza con doble guion hasta la siguiente línea
    --[[ Los strings y comentarios multilínea
         se adornan con doble corchete]]
    

El factorial es un ejemplo de función recursiva.

function factorial(n)
       if n == 0 then
          return 1 end
       return n * factorial(n - 1)
    end
    

Bucles

Lua tiene cuatro tipos de bucles: el bucle while, el bucle for numérico y genérico y el bucle repeat.

El bucle while tiene esta sintaxis:

while (condición) do
       -- Bloque
    end
    

La forma del bucle for numérico es:

local inicio, fin, paso = 10, 1, -1 -- El paso puede ser negativo, permitiendo al bucle for restar o sumar
    for índice = inicio, fin, paso do
       print(índice)
    end
    

Otra forma del bucle for es el for genérico:

for clave, valor in pairs(_G) do
       print(clave)
    end
    

Esta forma itera la tabla _G usando el iterador estándar pairs hasta que retorne

nil
    

El bucle repeat:

local condición = false
    repeat
       -- Bloque
    until condición
    

Se ejecuta el cuerpo del bucle al menos una vez, y mantendría el bucle hasta que “cond” se convierta en true. Este es muy similar al do while de otros lenguajes de programación, salvo que do while se repite mientras cumpla la condición y en este caso, se repetirá hasta que se cumpla la condición.