Lua
Lua linguaggio di programmazione | |
---|---|
![]() | |
Autore | Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes |
Data di origine | 1993 |
Ultima versione | 5.4.7 (25 giugno 2024) |
Utilizzo | generico, scripting, programmazione videogiochi |
Paradigmi | programmazione multi-paradigma, programmazione orientata agli oggetti, programmazione funzionale, programmazione procedurale, prototype-based programming e programmazione imperativa |
Tipizzazione | forte, dinamica |
Estensioni comuni | .lua |
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 | lua.org |
«The programming language.»
«Il linguaggio di programmazione.»
Lua è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico.
Storia
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 Pontifícia Università Cattolica di Rio de Janeiro, in Brasile[2]. Versioni di Lua precedenti alla versione 5.0 furono pubblicate sotto licenza simile alla licenza zlib[3]. Dalla versione 5.0 Lua è stato pubblicato 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
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 di programmazione orientata agli oggetti senza che lo stesso lo sia.
Esempi
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
})
Impiego[senza fonte]
- Lua è usato molto spesso in ambito PSP per la programmazione di Homebrew.
- La piattaforma NUT di Cedac Software consente di realizzare embedded Applications tramite il linguaggio Lua.
- I giochi disponibili su Roblox sono scritti interamente con Lua.
- Alcuni framework per lo sviluppo di videogiochi 2D utilizzano il linguaggio Lua: tra questi Defold, Love2D e Solar2D.
- La scheda di prototipazione Esp8266 è programmabile in Lua, tramite il firmware contenuto nella piattaforma IoT NodeMCU.
- I motori grafici GameGuru e GameGuru Max basano la programmazione e i comportamenti di oggetti e personaggi in linguaggio Lua.
- il motori grafici Visionaire Studio per la programmazione di videogiochi punta e clicca si basa sul linguaggio Lua.
Citazioni
- 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.
Note
- ^ (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.
Altri progetti
Wikibooks contiene testi o manuali sul Lua
Wikimedia Commons contiene immagini o altri file sul Lua
Collegamenti esterni
- (EN, PT) Sito ufficiale, su lua.org.
- Repository sorgenti di Lua, su github.com.
- (EN) Lua, su Free Software Directory.
- (EN) Lua, su lua-users.org.
Controllo di autorità | LCCN (EN) sh2004007514 · GND (DE) 7547043-3 · BNF (FR) cb166522948 (data) · J9U (EN, HE) 987007563918605171 |
---|