Lua
Lua linguaggio di programmazione | |
---|---|
Autore | Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes |
Data di origine | 1993 |
Ultima versione | 5.4.4 (26 gennaio 2022) |
Utilizzo | generico, scripting, programmazione videogiochi |
Paradigmi | multi-paradigma: scripting, imperativo (procedurale, orientato agli oggetti), funzionale |
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 | www.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
[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 Pontifícia 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
})
Esempi di utilizzo
[modifica | modifica wikitesto]- Lua è usato molto spesso in ambito PSP per la programmazione di Homebrew.
- Il firmware delle stampanti Olivetti quali Any_way, Simple_way e My_way, denominato HERCULE, è stato creato con il linguaggio di programmazione dinamico Lua.
- Il Lua è utilizzato per creare script e plugin per il MMORPG Lineage II.
- 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.
- Tutti i plugin del videogioco Stormworks: Build And Rescue sono scritti con il 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.
- 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.
- Molte mod per il videogioco Minetest sono realizzate in 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 game engine GameGuru e GameGuru Max basano la programmazione e i comportamenti di oggetti e personaggi in linguaggio Lua.
- il game engine Visionaire Studio per la programmazione di videogiochi punta e clicca si basa sul linguaggio Lua.
- Il Lua è anche usato per creare script su FiveM, una famosa mod del gioco GTA V.
Citazioni
[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.
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.
Altri progetti
[modifica | modifica wikitesto]- Wikibooks contiene testi o manuali sul Lua
- Wikimedia Commons contiene immagini o altri file sul Lua
Collegamenti esterni
[modifica | modifica wikitesto]- (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 |
---|