Wednesday, 1 July 2009

Primera toma de contacto con Lua

Lua es un lenguaje de programación imperativo y estructurado, bastante ligero que fue diseñado como lenguaje de script con una semántica extensible. El nombre significa “luna” en portugués. Gracias a su pequeño tamaño en tiempo de ejecución y su API en C han hecho que sea elegido como lenguaje embedded para muchas aplicaciones. En los últimos años, gracias a su sencillez, tamaño y velocidad ha ganado muchos adeptos entre los desarrolladores de vídeo juegos (WoW, Ragnarok, etc.).
Podemos descargar la última versión del lenguaje en la misma web de Lua. Para éste artículo utilizaré Lua For Windows que utiliza las mismas librerías que Lua pero que dispone de un instalador y es todo más cómodo. Lua for Windows fue creado por Ryan Pusztai , Steve Donovan, y Andrew Wilson.
  • Que necesito para empezar?
Primero, tenemos que descargar la última versión de Lua para windows (LuaForWindows_v5.1.4-28). Una vez descargado lo iniciamos y nos descargará el Microsoft Visual C 2.5 Redistributable package. Cuando finalice la instalación, podemos iniciar la aplicación SciTE que es el editor que utilizaremos para escribir nuestro código en Lua. Desde el mismo editor tenemos la opción de compilar y debugar la aplicación. Una vez compilado el Script, nos genera un fichero .luac que representa el fichero compilado de nuestro script.

  • Un ejemplo sencillo:
En éste ejemplo cogeré una matriz de 10 elementos y luego mostraré los valores uno debajo del otro. El código de ejemplo es el siguiente:




function mostrar(x)
local i=1
while x[i] do
io.write(x[i], "\n")
i=i+1
end
end

function
downArray(x)
local n=1
while x[n] do
n=n+1
end;
n=n-1
mostrar(x)
end

-- array a mostrar
x
={1,2,3,4,5,6,7,8,9,10}
downArray(x)




El resultado es el siguiente:

Si queremos ejecutar el script desde la línea de comandos, solo tenemos que escribir:

lua test.luac, y nos aparecerá el resultado:

La verdad es que me gusta bastante ya que se parece mucho al Pascal y tiene un debug sencillo. Muy buen trabajo.



0 comments:

Post a Comment