Lua

De la Viquipèdia, l'enciclopèdia lliure
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
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, Llenguatge de programació compilat, programari lliure i format de fitxer Modifica el valor a Wikidata
Data de creació1993 Modifica el valor a Wikidata
DissenyRoberto Ierusalimschy Modifica el valor a Wikidata
DesenvolupadorRoberto Ierusalimschy Modifica el valor a Wikidata
EpònimLluna Modifica el valor a Wikidata
Paradigma de programacióprogramació multiparadigma, programació orientada a objectes, programació funcional, programació procedimental, Programació basada en prototips i llenguatge imperatiu Modifica el valor a Wikidata
Darrera versió estable5.4.6 () Modifica el valor a Wikidata
Llenguatge de programacióC Modifica el valor a Wikidata
Influenciat perC++, CLU, Simple Object Language (en) Tradueix, DEL (en) Tradueix, Snobol, Modula, Modula-2 i Scheme Modifica el valor a Wikidata
Sistema operatiumultiplataforma Modifica el valor a Wikidata
Extensió dels fitxerslua, luna, lunaire i anair Modifica el valor a Wikidata
Codi fontCodi font Modifica el valor a Wikidata
Llicènciallicència MIT Modifica el valor a Wikidata
Etiqueta d'Stack ExchangeEtiqueta i Etiqueta Modifica el valor a Wikidata
Pàgina weblua.org Modifica el valor a Wikidata

Lua és un llenguatge de programació imperatiu i 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 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]

Tipus de dades[modifica]

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

Jocs[modifica]

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:

  • Al joc Roblox mes concretament en Roblox Studio, pots crear els teus propis videojocs amb el llenguatje 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]

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]

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