Lua
| Lua | |
|---|---|
| Autore | Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes |
| Data di origine | 1993 |
| Ultima versione | 5.3.3 (9 giugno 2016) |
| Utilizzo | generico, scripting, programmazione videogiochi |
| Paradigmi | multi-paradigma: scripting, imperativo (procedurale, orientato agli oggetti), funzionale |
| Tipizzazione | forte, dinamica |
| Influenzato da | C++, CLU, Modula, Scheme, SNOBOL |
| Ha influenzato | Io, GameMonkey, Squirrel, Falcon, MiniD, Julia |
| Implementazione di riferimento | |
| Sistema operativo | multipiattaforma |
| Licenza | licenza MIT |
| Sito web | |
| (EN)
« The programming language. » |
(IT)
« Il linguaggio di programmazione. » |
Lua è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico.
Indice
Storia[modifica | modifica wikitesto]
Lua è stato creato nel 1993 da Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes[1], membri del Tecgraf/PUC-RIO, il gruppo di Tecnologia em Computação Gráfica presso la Pontificia Università Cattolica di Rio de Janeiro, in Brasile[2]. Versioni di Lua precedenti alla versione 5.0 furono rilasciate sotto licenza simile alla licenza zlib[3]. Dalla versione 5.0 Lua è stato rilasciato sotto licenza MIT[3].
In un articolo pubblicato in Dr. Dobb's Journal, i creatori di Lua affermavano che Lisp e Scheme con la loro tipica struttura dati, la lista, hanno avuto la maggiore influenza sulla decisione di adottare la tabella come struttura dati primaria in Lua[4].
Lua è stato usato in molte applicazioni, commerciali e non.[5]
Caratteristiche del linguaggio[modifica | modifica wikitesto]
Le caratteristiche principali di Lua sono le funzioni, viste come "oggetti" di primo livello e quindi assegnabili a variabili, e l'uso di tabelle come strutture dati generiche. Queste caratteristiche permettono al linguaggio di implementare caratteristiche viste in linguaggi orientati agli oggetti senza che lo stesso lo sia.
Esempi[modifica | modifica wikitesto]
Il classico programma "Hello world" può essere scritto come:
print "Hello, world!"
Il fattoriale è un esempio di funzione ricorsiva:
function factorial(n)
if n == 0 then
return 1
end
return n * factorial(n - 1)
end
Questo esempio mostra come sia possibile, in Lua, ridefinire le funzioni del linguaggio:
do
local oldprint = print -- salva la funzione come era definita da Lua, non salvando il
-- valore restituito dalla funzione, ma la funzione stessa
print = function(s) -- ridefinisce la funzione print
if s == "foo" then
oldprint("bar")
else
oldprint(s)
end
end
end
Qualunque futura chiamata alla funzione print farà ora riferimento alla nuova funzione, e la vecchia funzione sarà accessibile soltanto dalla nuova versione della stessa.
Questo esempio mostra una caratteristica di Lua: la possibilità di definire dinamicamente tabelle (la struttura dati usata dal linguaggio). In questo caso si tratta di una tabella che associa al valore fibs[n] l'ennesimo numero di Fibonacci.
fibs = { 1, 1 } -- valore iniziale per fibs[1] and fibs[2]
setmetatable(fibs, {
__index = function(fibs,n) -- chiama questa funzione se il valore fibs[n] non esiste
fibs[n] = fibs[n-2] + fibs[n-1] -- calcola e memorizza il valore
return fibs[n]
end
})
Curiosità[modifica | modifica wikitesto]
- Nel videogioco Fuga da Monkey Island, lo Scumm Bar diventerà un raffinato sushi bar ed il nome verrà cambiato in Lua Bar, a sottolineare l'adozione del nuovo linguaggio di scripting in GrimE, il Lua.
- Il firmware delle stampanti Olivetti quali Any_way, Simple_way e My_way, denominato HERCULE, è stato creato con il linguaggio di programmazione dinamico Lua.
- Lua è usato molto spesso in ambito PSP per la programmazione di Homebrew.
- Il Lua è utilizzato per creare script e plugin per il MMORPG Lineage 2.
- Il Lua è anche usato per creare Addon compatibili con il MMORPG World of Warcraft.
- Il Lua è usato anche per creare script con il MMORPG Metin2.
- Il Lua è usato anche per creare mod per Garry's Mod.
- Con Lua si sono creati inoltre numerosi script e trainer per il pluri-premiato gioco della Rockstar Games GTA IV.
- Nel videogioco per PC Baldur's Gate II: Shadows of Amn l'intelligenza artificiale dei personaggi è gestita in Lua. È infatti possibile personalizzare interamente questi script per modificare il comportamento predefinito di ogni personaggio in base alle varie circostanze di gioco.
- Due mod del videogioco "Minecraft", chiamate ComputerCraft e OpenComputers, permettono di creare dei programmi all'interno del gioco stesso, scrivendoli in linguaggio Lua.
- Molti script per TeamSpeak vengono creati con Lua. Uno di questi è il funscripts.lua di aetas.
- Il firmware Open Source OpenTx che equipaggia diversi apparati di radiocomando per modellismo ha la possibilità di eseguire programmi realizzati in linguaggio Lua.
- Multi Theft Auto, la mod che permette la modalità di gioco online in GTA: San Andreas, è in parte scritta con Lua.
Note[modifica | modifica wikitesto]
- ^ (EN) Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, The Evolution of Lua (PDF), su lua.org, 2007, p. 1. URL consultato il 4 novembre 2015.
- ^ (EN) About, su lua.org, 19 ottobre 2015. URL consultato il 4 novembre 2015.
- ^ a b (EN) License, su lua.org, 12 maggio 2015. URL consultato il 4 novembre 2015.
- ^ (EN) Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, Lua: an Extensible Embedded Language, in Dr. Dobb's Journal, vol. 21, nº 12, 1º dicembre 1996, ISSN 1044-789X. URL consultato il 4 novembre 2015.
- ^ (EN) Uses, su lua.org, 24 marzo 2015. URL consultato il 4 novembre 2015.
Voci correlate[modifica | modifica wikitesto]
Altri progetti[modifica | modifica wikitesto]
Wikibooks contiene testi o manuali su Lua
Wikimedia Commons contiene immagini o altri file su Lua
Collegamenti esterni[modifica | modifica wikitesto]
- (EN) Sito ufficiale, lua.org.
- (EN) Sito wiki degli utilizzatori di Lua, lua-users.org.
| Controllo di autorità | LCCN: (EN) sh2004007514 · GND: (DE) 7547043-3 · BNF: (FR) cb166522948 (data) |
|---|