0% encontró este documento útil (0 votos)
66 vistas7 páginas

Introducción al Lenguaje Lua

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
66 vistas7 páginas

Introducción al Lenguaje Lua

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Lua

Ir a la navegaciónIr a la búsqueda
No debe confundirse con Lúa.

Lua

Roberto Ierusalimschy
[Link] y [Link]

Información general

Extensiones .lua
comunes

Paradigma Multiparadigma:
interpretado,
imperativo
(procedural,
basado en prototipos,
orientado a objetos),
funcional

Apareció en 1993

Diseñado por Roberto Ierusalimschy


Waldemar Celes
Luiz Henrique de Figueiredo
Última versión 5.3.51 (10 de julio de 2018)
estable

Sistema de tipos dinámico, fuerte, duck

Implementaciones Lua, LuaJIT, LLVM-Lua, LuaCLR, Nua, Lua


Alchemy

Dialectos Metalua

Influido por Scheme, SNOBOL, Modula, CLU, C++

Ha influido a Io, GameMonkey, Squirrel, Falcon, Dao, MiniD

Sistema operativo Roberto Ierusalimschy


Waldemar Celes
Luiz Henrique de Figueiredo

Licencia MIT License

[editar datos en Wikidata]

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.

Índice

 1Historia
 2Características
 3Funcionamiento interno
o 3.1Códigos de ejemplo
o 3.2Bucles
 4Aplicaciones
o 4.1Portabilidad
o 4.2En [Link] o servidores
o 4.3En videojuegos
 5Véase también
 6Referencias
 7Enlaces externos

Historia[editar]
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.[cita requerida]

Características[editar]
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.
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.

Funcionamiento interno[editar]
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.
Códigos de ejemplo[editar]
El clásico programa Hola mundo puede ser escrito de la siguiente manera:

print("Hola mundo!")

También puede ser escrito como

[Link]('Hello World!\n')

o el ejemplo dado en el Website de Lua

[Link]("Hello world, from ",_VERSION,"!\n")


Los comentarios usan la siguiente sintaxis, similar a Ada, SQL y 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[editar]
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.

Aplicaciones[editar]
Lua ha sido usado para procesar datos de entrada a sistemas complejos, configurar
aplicaciones, controlar hardware y muchas otras cosas.2

 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.
Lenguajes como ActionScript, Java, Lua y otros, son empleados en distintos sistemas
operativos, lo cual consigue un ahorro de costes, 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 coste de desarrollo muy reducido.
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.
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.
Renoise es un DAW de nicho basado en C++ que, en sus últimas versiones, ofrece la
posibilidad de usar el código Lua para extender sus capacidades. De este modo, cualquier
usuario con conocimientos del lenguaje Lua y de la propia API disponible de Renoise puede
expandir las funcionalidades de este programa añadiendo nuevas funciones específicas,
disparadas desde los propios menús desplegables o incluso creando ventanas flotantes con
interfaz gráfica propia, combinando Lua con la compatibilidad OSC y la entrada/salida MIDI.
Todo este conjunto permite una personalización adicional casi ilimitada de este programa.
Incluso Renoise dispone de un terminal propio para editar y ejecutar el código Lua, facilitando
enormemente la búsqueda de errores en el código.
Portabilidad[editar]
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.
En [Link] o servidores[editar]
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.
En videojuegos[editar]
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:

 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.
 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.
 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.
 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.
 "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.
 Hedgewars: Utiliza Lua en los scripts, misiones y mapas.
 Transformice utiliza Lua y XML para definir los desafíos y parte del diseño, como también
se usa como una herramienta, en este caso, LUA para la construcción de minijuegos y
XML para la construcción de mapas.
 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.
 The Binding of Isaac: Rebirth : En enero de 2017 se publicó su último DLC Afterbirth+, en
el mismo se añadió el soporte para Mods programados con este lenguaje.
 Factorio: Utiliza este lenguaje (LUA) como base y para implementar mods al juego.
 Roblox: Utiliza un lua modificado conocido como [Link]

También podría gustarte