Lua estas programlingvo dinamika malpeza, refleksiva, ordonema kaj iom funkciema. La
plej grava celo de ĉi tiu programlingvo estas ebligi ke aliaj programoj uzu ĝin kiel etendilon. Nuntempe, multaj komputilludoj uzas Lua-n, pro ĝia facileco, por difini dinamikajn aferojn de la ludo, ekzemple: artefaritan intelekton, poziciojn de ludantoj, ilojn en scenejoj, kaj tiel plu. Alia programlingvo, ekz. C++ pro ĝia rapideco, estas uzata por grafikaj funkcioj kaj la baza logiko de la ludo.
Lua estis kreita en 1993 en Brazilo de Roberto Ierusalimschy, Luiz Henrique de Figueiredo kaj Waldemar Celes. Ĝia nomo signifas luno en la portugala.
Filozofio
Lua estas plurparadigma programlingvo. Pro tio, la programisto povas uzi la stilon, kiu plej taŭgas en ĉia situacio. Malgraŭ tio, Lua estas tre malgranda kaj malpeza. Ĝi ebligas krei multajn konceptojn de aliaj programlingvoj per pli simplaj kaj bazaj konceptoj. Ekzemple, oni povas krei klasojn, nomspacojn kaj listojn per asociaj tabeloj (pli specife, hakettabeloj), Luae nomataj «tabeloj» (angletables). La asociaj tabeloj simple ligas parojn da datumoj, tiel ke unu estas la indico (aŭ ŝlosilo) por trovi la alian. Kiam oni uzas entjerojn kiel ŝlosilojn, tiuj tabeloj aspektas kaj uzeblas samkiel la ordinaraj tabeloj de la tradiciaj ĝeneralcelaj programlingvoj (respondaj al vektoroj, matricoj ktp).
Krome, Lua havas esprimilon nomatan meta-tabeloj (meta-tables) por ŝanĝi specifajn kondutojn de tabeloj. Ekzemple, oni povas agordi ke, se iu datumo ne troveblas en la tabelo, Lua serĉu ĝin per la sama ŝlosilo en alia tabelo. Tio estas la bazo por realigi klas-heredadon en Lua.
Eblas mencii ke Lua estis influita de programlingvoj kiel Scheme kaj Icon, kaj influis Io-n. La kreo de Lua okazis precipe pro la bezono havi simplan lingvon por agordi pli kompleksajn programojn kaj samtempe aldoni iom da logiko (algoritmojn) al la agordodosieroj (kompare kun statikaj agordlingvoj, kiuj nur entenas datumojn kaj povas komputi nenion). Pro la facileco kaj dinamikeco de Lua, ĝi ofte estas komparata kun Python.