El mismo utiliza el API de C para realizar ciertas tareas que van desde operaciones de bajo nivel, rendimiento e interfaces con programas de tercero. Lua además brilla por sí solo, el mismo permite trabajar con estructuras dinámicas, elimina redundancias, permite el manejo automático de la memoria y brinda la facilidad para realizar pruebas y debugging.
Lua además sirve como un lenguaje “pegamento” por llamarlo de algún modo, ya que este posee un componente para el desarrollo de software enfocado en la creación de aplicaciones usando componentes de alto nivel que son escritos y compilados en lenguajes como C o C++.
Características de Lua
Ya sabemos un poco más de Lua, pero con todos lenguajes de programación disponibles en la actualidad y que tienen el mismo propósito, muchos pueden estar pensando, ¿Por qué escogería Lua por sobre los demás? Pero la verdad es que Lua posee una serie de características que lo hacen destacar por sobre los demás, veamos:
Como vemos Lua posee ciertas características que lo hacen destacar por sobre otros lenguajes interpretados. Ya tenemos un panorama más amplio del lenguaje, veamos entonces como instalarlo y de que manera hacemos un ejemplo sencillo.
Instalación de Lua
Para este tutorial vamos a realizar la instalación de Lua en Ubuntu para simplificar los pasos y el uso de la misma. Primero abrimos nuestra terminal y vamos a ejecutar el siguiente comando:
sudo apt-get install lua5.2Con esto ya tendremos la última versión del lenguaje y ya podemos empezar a desarrollar con el mismo, como vemos fue bastante sencillo de instalar, comprobando así su característica de simplicidad. Ahora vamos a crear un pequeño archivo llamado hola_mundo.lua que tendrá el siguiente código:
print("Hola Mundo, Lua se instalo sin ningun problema")Nos dirigimos a nuestra terminal a la ruta done hemos creado el archivo y vamos a ejecutar el mismo para verificar que tenemos Lua instalado sin problemas, para ello solo utilizamos la palabra reservada lua y el nombre del archivo, veamos cual es la salida de nuestro programa:
Veamos un ejemplo más complejo que permitirá a un usuario introducir data y con una función calcularemos el factorial de un número:
function factorial (n) if n == 0 then return 1 else return n * factorial(n-1) end end print("Introduzca un numero:") a = io.read("*number") print(factorial(a))Vamos a ejecutar nuestro código desde la terminal y ver su funcionamiento:
Ingresamos varios números obteniendo así él factorial de cada uno de ellos, y esto con unas simples líneas de código. Ya verificamos que Lua está correctamente instalado y que podemos ejecutar nuestros programas sin ningún problema, sin embargo existen algunos conceptos del lenguaje que debemos saber antes de continuar con su aprendizaje.
Chunks o porciones
Cada pieza de código que Lua ejecuta, como un archivo o una línea es llamado chunk o porción, donde no es más que una secuencia de comandos o sentencias. La particularidad de Lua es que el mismo no necesita separadores entre las sentencias, pero podemos usar el famoso punto y coma si lo deseamos.
Recomendamos usar el punto y coma para separar dos sentencias que se encuentran en la misma línea para mantener cierto orden en el código y legibilidad. Es importante mencionar que el salto de línea de Lua es inexistente, para ver cómo funciona lo antes descrito veamos el siguiente ejemplo donde cada porción es igualmente valida:
Podemos ver que incluso la última línea no cumple con ninguna convención, pero es totalmente válida y funcional en el lenguaje. Adicionalmente, las porciones las podemos ejecutar línea por línea en vez de crear un archivo mediante la consola interactiva de Lua, donde con colocar la palabra reservada lua sin argumentos podemos ingresar a la misma, veamos:
Como vemos ejecutamos nuestro print sin necesidad de crear un archivo, incluso Lua es capaz de detectar cuando una línea no es una porción valida y nos da otro input para agregar el resto, pero de nuevo muchos se estarán preguntando: ¿De qué nos sirve ejecutar línea por línea si podemos crear un archivo y hacerlo en un solo paso? La respuesta son dos palabras; pruebas y debug, mediante la consola interactiva estos procesos son sumamente sencillos y prácticos. Vamos entonces a crear un pequeño programa y con la consola interactiva vamos a evaluar cada porción del mismo, veamos el contenido del mismo:
function norma (x, y) return (x^2 + y^2)^0.5 end function doble (x) return 2*x endAhora para acceder a la consola interactiva y poder hacer debug de nuestro programa debemos colocar lo siguiente:
lua -i prueba.luaLa consola interactiva abrirá y podremos evaluar nuestro programa, para ello utilizaremos la función dofile() que se encarga de cargar nuestro código y luego podemos enviar los argumentos a nuestras funciones y ejecutarlas, veamos como logramos esto:
Como vimos pudimos probar nuestro código sin ningún problema, esto es bastante útil cuando tenemos un código bastante extenso con errores y no sabemos dónde se encuentran.
Convenciones
Ya pasamos por una serie de conceptos útiles para ejecutar nuestros programas y realizar pruebas a los mismos en caso de errores, pero para disminuir estos los mismos es necesario saber algunas convenciones en cuanto a que palabras reservadas no podemos utilizar o incluso como llamar a nuestras variables o identificadores.
Para este último puede ser cualquier cadena compuesta de letras, números y underscores, cuidando que no se empiece con un número, por ejemplo:
- identificador
- identificador2
- unaVariableMuyLarga
- _identificador
- _ENTRADADATOS
Es importante mencionar que Lua es sensible a mayúsculas por lo que repeat es diferente a REPEAT, algo a tener en cuenta al momento de desarrollar con el lenguaje. Por último, para realizar comentarios con incluir el doble guion tenemos para una línea, y si queremos incluir un bloque de comentarios los encerramos con corchetes como podemos ver en el siguiente porción de código:
--[[ print("Hola mundo") --]]Y si queremos desactivar ese comentario con incluir un guion adicional al comienzo del mismo tenemos:
Variables globales
Para finalizar tenemos las variables globales, las cuales no necesitan ser declaradas solo con realizar la asignación de los valores a las mismas podemos crearlas y en el caso que accedamos a estas antes de haberlas creada obtendremos el valor nil que indica que es un valor diferente a los demás, que incluso nos sirve para eliminar dicha variable al momento de su asignación, veamos un ejemplo de esto:
Como vemos la simplicidad de Lua se extiende a cada aspecto del lenguaje, incluso con las declaraciones de nuestras variables. Con esto finalizamos este tutorial, donde pudimos dar nuestros primeros pasos con Lua, demostrando el poder del lenguaje y lo fácil de su uso, dándonos una alternativa al catálogo tan extenso de lenguajes interpretados para el desarrollo de nuestras aplicaciones.