Lua

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando altri significati, vedi LUA.
Lua
Lua-logo-nolabel.svg
Autore Roberto Ierusalimschy
Luiz Henrique de Figueiredo
Waldemar Celes
Data di origine 1993
Ultima versione 5.3.2 (30 novembre 2015)
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 www.lua.org

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 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].

Fra i linguaggi relativamente vicini vi sono Icon per il suo schema e Python per la sua semplicità d'uso da parte dei non programmatori.[senza fonte] 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.

Note[modifica | modifica wikitesto]

  1. ^ (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.
  2. ^ (EN) About, su lua.org, 19 ottobre 2015. URL consultato il 4 novembre 2015.
  3. ^ a b (EN) License, su lua.org, 12 maggio 2015. URL consultato il 4 novembre 2015.
  4. ^ (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.
  5. ^ (EN) Uses, su lua.org, 24 marzo 2015. URL consultato il 4 novembre 2015.

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica