Lua (linguaxe de programación)
Na Galipedia, a wikipedia en galego.
- Para outras páxinas con títulos homónimos véxase: Lúa (homónimos).
Lua (lúa) é unha linguaxe de programación imperativa, procedimental, pequena e leve, proxectada para expandir aplicacións en xeral, para ser usada como linguaxe de cola (que une partes dun programa feitas en máis dunha linguaxe), para prototipado e para ser embarcada en softwares complexos, como xogos. Asemellase un tanto a Python, Ruby ou Icon, entre outras.
Índice |
[editar] Historia
Lua foi creada en 1993 por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, membros do Grupo de Tecnoloxía en Computación Gráfica (Tecgraf) na Pontificia Universidade Católica de Río de Janeiro , ao principio, para ser usada nun proxecto da Petrobras. As versións de Lua anteriores á 5.0 foron distribuídas baixo unha licenza similar á BSD, da versión 5.0 en diante utilízase a licenza MIT, compatible coa GPL.
Lua foi usado en moitas aplicacións comerciais e non comerciais, as cales incrementan cada ano.
[editar] Características
Lua é unha linguaxe de programación poderosa e liviá, proxectada para extender aplicacións. Lua tamén se usa frecuentemente como unha linguaxe de propósito xeral. Lua combina programación procedural con poderosas construcións para descripción de dados, baseadas en taboas asociativas e semántica extensible. Lua é tipada dinamicamente, interpretada a partir de bytecodes, e ten xestionamento automático de memoria con colecta de lixo. Esas características fan de Lua unha linguaxe ideal para configuración, macros (scripting) e prototipaxe rápida. Lua é un linguaxe de extensión, suficientemente compacto para usarse en diferentes plataformas. En lua as variables non teñen tipo, só os datos e poden ser lóxicos, enteiros, números con punto flotante ou cadeas. Estruturas de datos como matrices, conxuntos, táboas hash, listas e rexistros poden ser representadas utlizando a única estrutura de datos de Lua: a táboa.
A semántica de Lua pode ser estendida e modificada redefinindo funcións das estruturas de datos utilizando metatablas. Lua ofrece soporte para funcións de orde superior, colector de lixo. Combinando todo o anterior, é posible utilizar Lua en programación orientada a obxectos.
[editar] Funcionamento interno
Os programas en Lua non son interpretados directamente, senón compilados a código bytecode, que é executado na máquina virtual de Lua. O proceso de compilación é normalmente transparente ao usuario e realízase en tempo de execución, pero pode facerse con anticipación para aumentar o rendemento e reducir o uso de memoria ao prescindir do compilador.
Tamén é posible a Compilación JIT utilizado LuaJIT
[editar] Aplicacións
[editar] Xogos
Debido á súa eficiencia, clareza e facilidade de aprendizaxe, pasou a usarse en diversas ramas da programación, como no desenvolvimento de xogos (a Lucas Arts, por exemplo, usou Lua no xogo "The Escape from the Monkey Island"), control de robots, procesamento de texto etc.
- World of Warcraft, onde o usuario ten a posibilidade de personalizar case completamente a interfaz creando engadidos que permiten informarlle de calquera cousa.
- Tamén nun mod tipo "sandbox" para Half-Life 2 chamado Garry's Mod, podiendo modificalo case completamente. Gran parte de Garry's Mod está escrito en lua.
- Tamén nun mod para Half-Life 2 chamado Fortress_Forever que permite configurar altamente os mapas.
- O RTS a gran escala Supreme Commander, o cal é modificable polo usuario en case todos os seus aspectos.
- O xogo de RPG Morna
- Parte de S.T.A.L.K.E.R. - Shadow Of Chernobyl, permitindo ao xogador modificar armas, armaduras e aspectos varios do xogo.
[editar] Outras Aplicacións
Lua tamén se usou para procesar datos de entrada a sistemas complexos, configurar aplicacións, controlar hardware e moitos outras cousas.
- No manejador de fiestras [Ion] é posible utilizar Lua para personalizar a aparencia e estender a súa funcionalidade.
A lista de usos reportados pódese atopar aquí.
[editar] Exemplo de código
print "Olá mundo!"
A función factorial recursiva:
function factorial(m)
if m == 0 then
return 1
else
return m * factorial (m - 1)
end
end
[editar] Proxectos que usan Lua
- TeCGraf Laboratorio de Investigación en Computación Gráfica
- Grim Fandando e Escape from Monkey Island, dous xogos da LucasArts
- ClanLib, biblioteca para desenvolvimento de xogos.
- Sistema de Paquetes RPM do Conectiva Linux
- Simulador Astronómico Celestia
[editar] Páxinas externas
- Páxina oficial da linguaxe Lua
- LuaForge (en inglés)
- Páxina mantida pola comunidade, tendo inclusive unha wiki
- Manual da linguaxe Lua 5.0, en formato PDF
- Manual de introdución á programación en Lua 3.1, que está meio defasado, mais xa dá unha boa idea da linguaxe.
- http://www.tecgraf.puc-río.br/
- http://www-nt.inf.puc-río.br/
- Inline::Lua módulo Perl en CPAN para programar en Lua dentro de programas Perl (en inglés)

