Lua è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico.
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 è stato creato nel 1993 da Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, 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. Versioni di Lua precedenti alla versione 5.0 furono rilasciate sotto licenza simile alla licenza zlib. Dalla versione 5.0 Lua è stato rilasciato sotto licenza MIT.
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.
Lua è stato usato in molte applicazioni, commerciali e non.
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.
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 })
Controllo di autorità | LCCN (EN) sh2004007514 · GND (DE) 7547043-3 · BNF (FR) cb166522948 (data) · J9U (EN, HE) 987007563918605171 |
---|
This article uses material from the Wikipedia Italiano article Lua, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). Il contenuto è disponibile in base alla licenza CC BY-SA 4.0, se non diversamente specificato. Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki Italiano (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.