Lua

De Viquipèdia
Salta a la navegació Salta a la cerca
Aquest article tracta sobre el llenguatge de programació. Si cerqueu la utilització de Lua a la Viquipèdia, vegeu «Viquipèdia:Lua».
Infotaula de llenguatge de programacióLua
Lua-logo-nolabel.svg
Tipusllenguatge de programació funcional, llenguatge de programació orientat a objectes, llenguatge script, llenguatge de programació multiparadigma, llenguatge de programació imperatiu, llenguatge de programació procedural, llenguatge de programació basat en prototips, Llenguatge interpretat i compiled language (en) Tradueix modifica
Data de creació1993 modifica
DissenyRoberto Ierusalimschy modifica
DesenvolupadorRoberto Ierusalimschy modifica
EpònimLluna modifica
Darrera versió estable5.3.5 ()
5.4.0-work2 () modifica
Llenguatge de programacióC modifica
Influenciat perC++, CLU, Simple Object Language (en) Tradueix, data-entry language (en) Tradueix, Snobol, Modula, Modula-2 i Scheme modifica
Sistema operatiumultiplataforma modifica
Extensió dels fitxerslua, luna, lunaire i anair modifica
Codi fontsense valor modifica
LlicènciaLlicència MIT modifica
Etiqueta d'Stack ExchangeEtiqueta, Etiqueta i Etiqueta modifica
Pàgina webWeb oficial i Web oficial modifica

Lua és un llenguatge de programació imperatiu, estructurat. És bastant lleuger i es va dissenyar com a llenguatge de script amb una semàntica extensible. El nom significa «lluna» en portuguès.

Història[modifica el codi]

El van crear l'any 1993 Robert Ierusalimschy, Luiz Henrique de Figueiredo i Waldemar Celes, membres del Grup de Tecnologia en Computació Gràfica (Tecgraf) de la Pontifícia Universitat Catòlica de Rio de Janeiro. Les versions de Lua anteriors a la 5.0 es van distribuir sota una llicència similar a la BSD. De la versió 5.0 en endavant s'utilitza la llicència MIT, compatible amb la GPL.

S'utilitza en moltes aplicacions comercials, i no comercials, les quals s'incrementen cada any.

Característiques[modifica el codi]

Tipus de dades[modifica el codi]

És un llenguatge d'extensió, prou compacte per a usar-se en diferents plataformes. En Lua les variables no tenen tipus,

Tipus de dades natius a Lua
Tipus Descripció Exemples
nil S'utilitza per a diferenciar el valor quan hi ha o no hi ha valor (nil) assignat. -
Booleà (boolean) Inclou els valors «cert» i «fals». Sovint utilitzat per a verificació de condicions. True, False
Nombre (number) Representa nombres reals, de coma flotant de doble precisió. 4, 0.4, 4.57e-3, 0.3e12, 5e+20
Cadena de caràcters (string) Representa una cadena de caràcters. "Una frase"
Funció (function) Representa un mètode escrit en C o Lua. print(a), foo(b)
userdata Representa dades arbitràries en C. Qualsevol codi en C
Fil (thread) Representa fils d'execució independents i s'utilitza per a implementar co-rutines. -
Taula (table) Representa matrius, taules de símbols, jocs, registres, grafs, arbres, etc, i implementa matrius associatives. Pot contenir qualsevol valor excepte «nil». Es poden indexar tant amb nombres com amb cadenes de caràcters. {"a", "b", "c"}, {[1]="a", [2]="b", [3]="c"}

La semàntica de Lua pot ser estesa i modificada redefinint funcions de les estructures de dades utilitzant metataules.

Lua suporta funcions d'ordre superior i col·lector d'escombraries.

Els programes en Lua no són interpretats directament, sinó compilats a codi bytecode, que s'executa a la màquina virtual de Lua. El procés de compilació és normalment transparent a l'usuari i es realitza en temps d'execució, però pot fer-se amb anticipació per augmentar el rendiment i reduir l'ús de memòria en prescindir del compilador.

També és possible la Compilació JIT utilitzant LuaJIT

Aplicacions[modifica el codi]

Jocs[modifica el codi]

Com que Lua en ser compilat és petit, veloç i, a més, té una llicència permissiva, ha guanyat seguidors entre els desenvolupadors de videojocs. Altres usos de Lua:

  • World of Warcraft, on l'usuari té la possibilitat de personalitzar gairebé completament la interfície creant afegits que permeten informar de qualsevol cosa al seu corresponent carpeta Interface en la qual el WoW.exe té l'intèrpret de Lua i executa en la seva Interface l'Addon creat a lua.
  • També en un mod tipus «sandbox» per a Half-Life 2 anomenat Garry's Mod, que es pot modificar gairebé completament. Gran part de Garry's Mod està escrit en Lua.
  • Al Joc Minecraft, en el mod del joc anomenat ComputerCraft, on l'usuari té l'opció de crear un ordinador i utilitzar (i modificar) certs programes dins del joc.
  • El joc de RPGTibia* Part de STALKER - Shadow of Chernobyl , permetent al jugador modificar armes, armadures i aspectes diversos del joc.
  • Grim Fandango i La Fuga de Monkey Island (quarta entrega de la saga Monkey Island ) utilitzen internament scripts en Lua per definir la història i els esdeveniments que ocorren durant la partida.
  • Mitjançant un programa casolà (o homebrew), el LuaPlayer, es poden executar fitxers Lua a la coneguda consola portàtil de Sony.
  • Regnum Online i TASpring utilitzen Lua per la majoria d'scripts del joc, com a la interfície, al mode de joc, les accions, etc.

Altres aplicacions[modifica el codi]

Lua també s'ha usat per processar dades d'entrada a sistemes complexos, configurar aplicacions, controlar maquinari i moltes altres coses.

  • El gestor de finestres awesome en la seva versió 3 utilitza Lua per al seu fitxer de configuració.

També s'utilitza per programar aplicacions i jocs per la consola PSP de Sony, ja que el llenguatge en què escriu la PSP és un intèrpret del Lua, tot i que es necessita un programa per executar o un eboot d'una altra aplicació que utilitzi Lua (per exemple LuaDEV).

Enllaços externs[modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Lua