fbpx
Wikipedia

Lua

Lua es un lenguaje de programación multiparadigma, 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.

Lua
Roberto Ierusalimschy
https://www.lua.org/
Información general
Extensiones comunes .lua
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 estable 5.4.2[1](3 de diciembre de 2020 (8 meses y 1 día))
Sistema de tipos dinámico, fuerte, duck
Implementaciones Lua, LuaJIT, LLVM-Lua, , Nua, Lua Alchemy, Luvit
Dialectos Metalua, Luau
Influido por Scheme, SNOBOL, Modula, CLU, C++
Ha influido a Io, GameMonkey, Squirrel, Falcon, Dao, MiniD
Sistema operativo Multiplataforma
Licencia MIT License

Historia

Lua fue creado en 1993 por Roberto Ierusalimschy, Luis Enrique de Figueiredo y Waldemar Celes, miembros del Grupo de Tecnología en Computación Gráfica (Tecgraf) en la Pontificia Universidad Católica de Río de Janeiro, basándose en una estructura similar a C y Perl.

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 se incrementa cada año.[2]

Características

Lua es un lenguaje de programación suficientemente compacto para usarse en diferentes plataformas. En Lua las variables no tienen tipo, solo 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

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

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

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

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

  • 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

Gracias a su sencillez, Lua pudo ser portado a múltiples arquitecturas fácilmente. Lo más sorprendente es que existen puertos para PSP y Wii, siendo por ahora el primer puerto el más antiguo y exitoso, mientras que el de Wii deriva de este. También está la versión de SEGA Saturn, aunque no se asemeja tanto ya que usa librerías propias de SEGA.

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.

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:

  • 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 RBX.lua
  • Detroit Become Human
  • Sonic Robo Blast 2
  • Minetest: Permite crear mods o videojuegos completos.

Véase también

Referencias

  1. https://www.lua.org/home.html
  2. «PYPL PopularitY of Programming Language index». pypl.github.io (en inglés). Consultado el 27 de abril de 2021. 
  3. Usos de Lua

Enlaces externos

  • Manual de Lua 5.1 (en español)
  • Sitio web oficial de Lua (en inglés)
  • LuaForge (en inglés)
  •   Datos: Q207316
  •   Multimedia: Lua (programming language)
  •   Libros y manuales: Lua
  •   MediaWiki: Lua
  •   Coordinación: Lua

debe, confundirse, lúa, para, lenguaje, programación, como, wikipedia, véase, wikipedia, lenguaje, programación, multiparadigma, imperativo, estructurado, bastante, ligero, diseñado, como, lenguaje, interpretado, semántica, extendible, nombre, significa, luna,. No debe confundirse con Lua Para el uso del lenguaje de programacion Lua como tal en Wikipedia vease Wikipedia Lua Lua es un lenguaje de programacion multiparadigma imperativo estructurado y bastante ligero que fue disenado como un lenguaje interpretado con una semantica extendible El nombre significa luna en portugues LuaRoberto Ierusalimschyhttps www lua org Informacion generalExtensiones comunes luaParadigmaMultiparadigma interpretado imperativo procedural basado en prototipos orientado a objetos funcionalAparecio en1993Disenado porRoberto Ierusalimschy Waldemar Celes Luiz Henrique de FigueiredoUltima version estable5 4 2 1 3 de diciembre de 2020 8 meses y 1 dia Sistema de tiposdinamico fuerte duckImplementacionesLua LuaJIT LLVM Lua LuaCLR Nua Lua Alchemy LuvitDialectosMetalua LuauInfluido porScheme SNOBOL Modula CLU C Ha influido aIo GameMonkey Squirrel Falcon Dao MiniDSistema operativoMultiplataformaLicenciaMIT License editar datos en Wikidata Indice 1 Historia 2 Caracteristicas 3 Funcionamiento interno 3 1 Codigos de ejemplo 3 2 Bucles 4 Aplicaciones 4 1 Portabilidad 4 2 En Tibia com o servidores 4 3 En videojuegos 5 Vease tambien 6 Referencias 7 Enlaces externosHistoria EditarLua fue creado en 1993 por Roberto Ierusalimschy Luis Enrique de Figueiredo y Waldemar Celes miembros del Grupo de Tecnologia en Computacion Grafica Tecgraf en la Pontificia Universidad Catolica de Rio de Janeiro basandose en una estructura similar a C y Perl Las versiones de Lua anteriores a la 5 0 fueron distribuidas bajo una licencia similar a la BSD de la version 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 numero se incrementa cada ano 2 Caracteristicas EditarLua es un lenguaje de programacion suficientemente compacto para usarse en diferentes plataformas En Lua las variables no tienen tipo solo los datos y pueden ser logicos enteros numeros de coma flotante o cadenas Estructuras de datos como vectores conjuntos tablas hash listas y registros pueden ser representadas utilizando la unica estructura de datos de Lua la tabla Lua es un lenguaje multiparadigma porque su semantica puede ser extendida y modificada redefiniendo funciones de las estructuras de datos utilizando metatablas casi como en Perl asi 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 programacion orientada a objetos Funcionamiento interno EditarLos programas en Lua no son interpretados directamente sino compilados a codigo bytecode que es ejecutado en la maquina virtual de Lua El proceso de compilacion es normalmente transparente al usuario y se realiza en tiempo de ejecucion pero puede hacerse con anticipacion para aumentar el rendimiento y reducir el uso de la memoria al prescindir del compilador Tambien es posible la compilacion en tiempo de ejecucion utilizando LuaJIT Codigos de ejemplo Editar El clasico programa Hola mundo puede ser escrito de la siguiente manera print Hola mundo Tambien 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 Ada SQL y VHDL Un comentario en Lua empieza con doble guion hasta la siguiente linea Los strings y comentarios multilinea se adornan con doble corchete El factorial es un ejemplo de funcion 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 numerico y generico y el bucle repeat El bucle while tiene esta sintaxis while condicion do Bloque end La forma del bucle for numerico es local inicio fin paso 10 1 1 El paso puede ser negativo permitiendo al bucle for restar o sumar for i ndice inicio fin paso do print i ndice end Otra forma del bucle for es el for generico for clave valor in pairs G do print clave endEsta forma itera la tabla G usando el iterador estandar pairs hasta que retornenil El bucle repeat local condicion false repeat Bloque until condicion Se ejecuta el cuerpo del bucle al menos una vez y mantendria el bucle hasta que cond se convierta en true Este es muy similar al do while de otros lenguajes de programacion salvo que do while se repite mientras cumpla la condicion y en este caso se repetira hasta que se cumpla la condicion Aplicaciones EditarLua ha sido usado para procesar datos de entrada a sistemas complejos configurar aplicaciones controlar hardware y muchas otras cosas 3 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 version 3 utiliza Lua para su fichero de configuracion 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 anadirlos 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 minimamente convirtiendolo en un programa de software de calidad nuevo a un coste de desarrollo muy reducido Tambien Lua es uno de los lenguajes de programacion mas utilizados para homebrews de la consola PSP de Sony debido a su sencillez Van desde aplicaciones para anadir complementos u otros programas facilmente a la consola a entornos de ventanas excelentes y videojuegos muy completos Fue portado tambien para la Sega Saturn de la mano de Rockin B aunque no ha tenido tanta repercusion como en la portatil de Sony Por otro lado es utilizado para los productos de la compania 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 ultimas versiones ofrece la posibilidad de usar el codigo 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 anadiendo nuevas funciones especificas disparadas desde los propios menus desplegables o incluso creando ventanas flotantes con interfaz grafica propia combinando Lua con la compatibilidad OSC y la entrada salida MIDI Todo este conjunto permite una personalizacion adicional casi ilimitada de este programa Incluso Renoise dispone de un terminal propio para editar y ejecutar el codigo Lua facilitando enormemente la busqueda de errores en el codigo Portabilidad Editar Gracias a su sencillez Lua pudo ser portado a multiples arquitecturas facilmente Lo mas sorprendente es que existen puertos para PSP y Wii siendo por ahora el primer puerto el mas antiguo y exitoso mientras que el de Wii deriva de este Tambien esta la version de SEGA Saturn aunque no se asemeja tanto ya que usa librerias propias de SEGA En Tibia com 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 publico en general que abre un servidor de Tibia En videojuegos Editar Debido a que Lua compilado es pequeno en la mayoria de los casos veloz y tiene una licencia permisiva ha ganado seguidores entre los desarrolladores de videojuegos El motor grafico de Crytek CryEngine esta programado en Lua ademas de en C Empresas como VALVe EA Games y Bethesda decidieron trasladar sus bases de C a Lua dado que este es mas compatible graficamente con kernel Algunos usos de Lua World of Warcraft donde el usuario tiene la posibilidad de personalizar casi completamente la interfaz grafica Tambien en un mod de tipo sandbox para Half Life 2 llamado Garry s Mod pudiendo modificarlo casi completamente Gran parte de Garry s Mod esta escrito en Lua Tambien 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 desafios Mediante un programa casero o homebrew el LuaPlayer permite ejecutar archivos lua en la conocida consola portatil de Sony Ragnarok Online usa Lua para programar la inteligencia artificial de los homunculos Regnum Online usa Lua para la mayoria de scripts del juego como interfaz modo de juego acciones etc TASpring un juego de estrategia en tiempo real usa Lua para la mayoria de scripts del juego como interfaz modo de juego acciones etc Multi Theft Auto San Andreas usa Lua para disenar modos de juego mapas y scripts Este programa es una modificacion multijugador que permite al usuario jugar Grand Theft Auto San Andreas en linea 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 implementacion de animaciones del entorno grafico y asimismo la ejecucion 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 administracion modificacion de mapas etc Hedgewars Utiliza Lua en los scripts misiones y mapas Transformice utiliza Lua y XML para definir los desafios y parte del diseno como tambien se usa como una herramienta en este caso LUA para la construccion de minijuegos y XML para la construccion 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 publico su ultimo DLC Afterbirth en el mismo se anadio 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 RBX lua Detroit Become Human Sonic Robo Blast 2 Minetest Permite crear mods o videojuegos completos Vease tambien EditarX10Referencias Editar https www lua org home html PYPL PopularitY of Programming Language index pypl github io en ingles Consultado el 27 de abril de 2021 Usos de LuaEnlaces externos EditarManual de Lua 5 1 en espanol Sitio web oficial de Lua en ingles LuaForge en ingles Datos Q207316 Multimedia Lua programming language Libros y manuales Lua MediaWiki Lua Coordinacion LuaObtenido de https es wikipedia org w index php title Lua amp oldid 137077782, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos