Lua

29
LUA Sesión 3

Transcript of Lua

Page 1: Lua

LUASesión 3

Page 2: Lua

LUA• Lua es un lenguaje de programación imperativo,

estructurado y bastante ligero que fue diseñado como un lenguaje interpretado con una semántica extendible. El nombre significa «luna» en portugués.

Page 3: Lua

Historia• Lua fue creado en 1993 por Roberto Ierusalimschy, Luiz Henrique de

Figueiredo y Waldemar Celes basado en C y Perl con una estructura similar. Miembros del Grupo de Tecnología en Computación Gráfica (Tecgraf) en la Pontificia Universidad Católica de Río de Janeiro. Las versiones de Lua anteriores a la 5.0 fueron distribuidas bajo una licencia similar a la BSD, de la versión 5.0 en adelante se utiliza la licencia MIT, compatible con la GPL.

• Lua ha sido usado en muchas aplicaciones comerciales y no comerciales, cuyo número incrementa cada año

Page 4: Lua

Características• Lua es un lenguaje de programación suficientemente

compacto para usarse en diferentes plataformas. En Lua las variables no tienen tipo, sólo los datos y pueden ser lógicos, enteros, números de coma flotante o cadenas. Estructuras de datos como vectores, conjuntos, tablas hash, listas y registros pueden ser representadas utilizando la única estructura de datos de Lua: la tabla.

Page 5: Lua

Características• Lua es un lenguaje multiparadigma porque su semántica puede

ser extendida y modificada redefiniendo funciones de las estructuras de datos utilizando metatablas, casi como en Perl (así permite implementar, por ejemplo, la herencia aunque sea ajena al lenguaje). Lua ofrece soporte para funciones de orden superior, recolector de basura. Combinando todo lo anterior, es posible utilizar Lua en programación orientada a objetos.

Page 6: Lua

Funcionamiento interno• Los programas en Lua no son interpretados directamente, sino

compilados a código 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.

Page 7: Lua

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')

Page 8: Lua

Códigos de ejemplo• o el ejemplo dado en el Website de Lua• io.write("Hello world, from ",_VERSION,"!\n")• Los comentarios usan la siguiente sintaxis, similar a Ada, SQL y VHDL• -- Un comentario en Lua empieza con doble guión hasta la siguiente

línea• --[[ Los strings y comentarios multilínea• se adornan con doble corchete]]

Page 9: Lua

Códigos de ejemplo• El factorial es un ejemplo de función recursiva.• function factorial(n)• if n == 0 then• return 1• else• return n * factorial(n - 1)• end• end

Page 10: Lua

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

Page 11: Lua

Bucles• 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 indice = inicio, fin, paso do• print(indice)• end

Page 12: Lua

Bucles• Otra forma del bucle for es el for genérico:• for clave, valor in pairs(_G) do• print(indice)• end

Page 13: Lua

Bucles• Esta forma itera la tabla _G usando el iterador

estándar pairs hasta que retorne• nil

Page 14: Lua

Bucles• El bucle repeat:• local condicion = false• repeat• -- Bloque• until condicion

Page 15: Lua

Bucles• 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.

Page 16: Lua

Aplicaciones• 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.

Page 17: Lua

Aplicaciones• Lua ha sido usado para procesar datos de entrada a sistemas

complejos, configurar aplicaciones, controlar hardware y muchas otras cosas.• En el gestor de ventanas Ion es posible utilizar Lua para

personalizar la apariencia y extender su funcionalidad.• El gestor de ventanas awesome en su versión 3 utiliza Lua

para su fichero de configuración.

Page 18: Lua

Aplicaciones• Lenguages como ActionScript, Java, Lua y otros, son empleados en

distintos sistemas operativos, lo cual consigue un ahorro de costos, al simplificar el trabajo de desarrollo de un nuevo programa de software, al añadirlos como partes "prefabricadas" que incluso al adaptar o portar el programa a nuevos usos, por ejemplo de plataformas de videoconsolas a sistemas operativos como Android y otros, no necesitan ser modificados o mínimamente, convirtiéndolo en un programa de software de calidad nuevo, a un costo de desarrollo muy reducido.

Page 19: Lua

Aplicaciones• También Lua es uno de los lenguajes de programación más

utilizados para homebrews de la consola PSP de Sony debido a su sencillez. Van desde aplicaciones para añadir complementos u otros programas fácilmente a la consola a entornos de ventanas excelentes y videojuegos muy completos.• Fue portado también para la Sega Saturn de la mano de Rockin'-B,

aunque no ha tenido tanta repercusión como en la portátil de Sony.

Page 20: Lua

Aplicaciones• Por otro lado es utilizado para los productos de la

compañía canadiense desarrolladora de software Indigo Rose, en AutoPlay Media Studio; estos programas no fueron desarrollados en Lua, sino que utilizan Lua para generar y crear scripts, ya sea por un asistente o por la pericia del programador.

Page 21: Lua

Portabilidad• Gracias a su sencillez, Lua pudo ser portado a múltiples

arquitecturas fácilmente. Lo más sorprendente es que existen ports para PSP y Wii, siendo por ahora el primer port el más antiguo y exitoso, mientras que el de Wii deriva de éste. También está la versión de SEGA Saturn, aunque no se asemeja tanto ya que usa librerías propias de SEGA.

Page 22: Lua

En Tibia.com o servidores• El Lua se puede implementar de muchas formas en el

juego de rol RPG de Tibia siempre y cuando existan las funciones y acciones secundarias en tu consola, mucha gente usa el lenguaje de Lua para hacer sistemas,scripts,mods para servidores de Tibia y esto beneficia al público en general que abre un servidor de Tibia.

Page 23: Lua

En videojuegos• Debido a que Lua compilado es pequeño (en la mayoría de los

casos), veloz y tiene una licencia permisiva ha ganado seguidores entre los desarrolladores de videojuegos. El motor gráfico de Crytek, CryEngine, está programado en Lua, además de en C++. Empresas como VALVe, EA Games y Bethesda decidieron trasladar sus bases de C++ a Lua dado que este es más compatible gráficamente con kernel. Algunos usos de Lua:

Page 24: Lua

En videojuegos• World of Warcraft, donde el usuario tiene la posibilidad de personalizar casi

completamente la interfaz gráfica.• También en un mod de tipo sandbox para Half-Life 2 llamado Garry's Mod,

pudiendo modificarlo casi completamente. Gran parte de Garry's Mod está escrito en Lua.

• También en un mod para Half-Life 2 llamado Fortress Forever que permite configurar altamente los mapas.

• El videojuego de estrategia en tiempo real a gran escala Supreme Commander, el cual es modificable por el usuario en casi todos sus aspectos.

Page 25: Lua

En videojuegos• El videojuego de rol Tibia, modificable casi totalmente (poderes,

mapas, etc) junto con XML.• Parte de S.T.A.L.K.E.R.: Shadow of Chernobyl, permitiendo al

jugador modificar armas, armaduras y aspectos varios del juego.• Grim Fandango y La Fuga de Monkey Island (cuarta entrega de la

saga Monkey Island) utilizan internamente scripts en Lua para definir la historia y los eventos que ocurren durante la partida.

Page 26: Lua

En videojuegos• Worms 4: Mayhem utiliza Lua y XML para definir las misiones y

desafíos.• Mediante un programa casero (o homebrew), el LuaPlayer, permite

ejecutar archivos .lua en la conocida consola portátil de Sony.• Ragnarok Online usa Lua para programar la inteligencia artificial de los

homúnculos.• Regnum Online usa Lua para la mayoría de scripts del juego como

interfaz, modo de juego, acciones, étc.

Page 27: Lua

En videojuegos• TASpring un juego de estrategia en tiempo real, usa Lua para la

mayoría de scripts del juego como interfaz, modo de juego, acciones, étc.• Multi Theft Auto: San Andreas usa Lua para diseñar modos de

juego, mapas y scripts. Este programa es una modificación multijugador que permite al usuario jugar Grand Theft Auto San Andreas en línea con otro usuario de computador a computador.

Page 28: Lua

En videojuegos• "Blitzkrieg". Se usa el lenguaje Lua en los editores de mapas e incluso los puede escribir

uno mismo.• "Counter-Strike 2D". Permite utilizar scripts Lua para crear, por ejemplo, modos de juego

completamente nuevos mediante una interfaz de "hooks, tablas, variables y arrays"• "StepMania". Se usa el lenguaje Lua para desarrollar la implementación de animaciones

del entorno gráfico, y asimismo la ejecución de comandos internos relacionados con la jugabilidad.

• "Wolfenstein: Enemy Territory": Algunos modos de este juego vienen con el lenguaje Lua para correr scripts como mini-modos, scripts de administración, modificación de mapas, etc.

Page 29: Lua

En videojuegos• Hedgewars: Utiliza Lua en los scripts, misiones y mapas.• Minecraft: Se utiliza en el MOD ComputerCraft (http://computercraft.info/wiki/Main_Page)• Minetest: Se utiliza en los MODS haciendo sencilla la instalación de modificaciones• Transformice utiliza Lua y XML para definir los desafíos y parte del diseño, como también

se usa como una herramienta.• Railworks: Train Simulator: Se utiliza en los scripts para modificar o definir el

funcionamiento de los objetos.• YGOPro: Dueling System: Desde efectos de cartas hasta la misma Inteligencia Artificial

utiliza este lenguaje.