Lua (linguaxe de programación)

Na Galipedia, a Wikipedia en galego.

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.

Historia[editar | editar a fonte]

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.

Características[editar | editar a fonte]

Lua é unha linguaxe de programación poderosa e liviá, proxectada para estender 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 descrición de dados, baseadas en táboas 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 utilizando 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.

Funcionamento interno[editar | editar a fonte]

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

Aplicacións[editar | editar a fonte]

Xogos[editar | editar a fonte]

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

Outras Aplicacións[editar | editar a fonte]

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

Exemplo de código[editar | editar a fonte]

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

Proxectos que usan Lua[editar | editar a fonte]

Ligazóns externas[editar | editar a fonte]