Lua/Introduzione
Lua (non "LUA", che è una grafia scorretta anche se molto diffusa) è un linguaggio di programmazione potente, veloce, leggero e incorporabile. È utilizzato da molti framework, giochi e altre applicazioni. Sebbene possa essere utilizzato da solo, è stato progettato per essere facilmente incorporato in un'altra applicazione. È implementato in ANSI C, un sottoinsieme del linguaggio di programmazione C che è molto portabile, il che significa che può essere eseguito su molti sistemi e molti dispositivi in cui la maggior parte degli altri linguaggi di scripting non sarebbe in grado di funzionare. Lo scopo di questo manuale è insegnare la programmazione Lua a chiunque, indipendentemente dalle conoscenze di programmazione pregresse. Il libro può essere utilizzato come introduzione alla programmazione, per chi non ha mai programmato, o come introduzione a Lua, per chi invece ha già esperienze di programmazione ma non in Lua.
Questo libro è aggiornato a Lua 5.2. Se si utilizza Lua in un ambiente embedded che usa una versione precedente di Lua nel ramo 5.x (Lua 5.0 e Lua 5.1), il materiale dovrebbe essere comunque valido.
Storia
[modifica | modifica sorgente]Lua è stato progettato e viene mantenuto dalla Pontificia Università Cattolica di Rio de Janeiro, che ha sede in Brasile. I suoi creatori sono Roberto Ierusalimschy, Waldemar Celes e Luiz Henrique de Figueiredo.
Lua deriva da due linguaggi progettati dal Tecgraf (un laboratorio della Pontificia Università Cattolica di Rio de Janeiro): DEL e Sol. DEL è l'acronimo di Data Entry Language (linguaggio di immissione dati). Sol è invece la sigla di Simple object language (linguaggio di oggetti semplici), ma il nome significa anche "sole" in portoghese: questo è il motivo per cui, per il nuovo linguaggio, è stato scelto il nome Lua, che significa "luna". È stato creato per Petrobras, una compagnia petrolifera brasiliana, ma è stato utilizzato anche in molti altri progetti del Tecgraf e ora è utilizzato in vari progetti in tutto il mondo. Lua è uno dei linguaggi leader nel campo dello sviluppo di giochi embedded.
Caratteristiche
[modifica | modifica sorgente]Uno dei principali vantaggi di Lua è la sua semplicità. Alcune aziende lo usano esclusivamente per questo motivo: ritengono che i loro dipendenti potrebbero lavorare meglio se potessero usare un linguaggio di programmazione per svolgere determinate attività, ma non possono permettersi di fornire ai loro dipendenti un corso completo su un linguaggio di programmazione complicato. Alcuni linguaggi semplici, come Bash o Batch, non sarebbero abbastanza potenti per svolgere queste attività. Lua invece è sia potente che semplice. Un altro vantaggio di Lua è la possibilità di essere incorporato. Giochi come World of Warcraft o ROBLOX devono essere in grado di incorporare Lua nella loro applicazione in modo che gli utenti dell'applicazione possano utilizzarlo.
La programmazione, che è chiamata scripting quando si lavora a programmi che vengono eseguiti all'interno di applicazioni incorporate, è il processo di scrittura di programmi per computer. Un linguaggio di programmazione è un linguaggio utilizzato per dare istruzioni a un computer tramite il codice informatico contenuto in un programma. Un linguaggio di programmazione è costituito da due elementi: una sintassi, che è come la grammatica per una lingua, e delle librerie, cioè funzioni di base fornite con il linguaggio. Le librerie possono essere paragonate a un vocabolario.
Hello, world!
[modifica | modifica sorgente]Lua può essere incorporato in un'applicazione o utilizzato da solo. Il primo esempio di codice Lua in questo libro sarà il tradizionale programma base Hello world.
print("Hello, world!")
Il codice sopra "stampa" il testo Hello world!
nell'output: print
, "stampa", si riferisce alla visualizzazione del testo nell'output, non alla stampa di qualcosa su carta. Lo fa richiamando la funzione print
con la stringa "Hello, world!" come argomento. I dettagli saranno approfonditi nel capitolo sulle funzioni.
Si noti che Lua viene per lo più incorporato in un'applicazione di livello inferiore, il che significa che la funzione print
non sempre inserirà il testo in un'area visibile all'utente. In genere, la documentazione dell'interfaccia di programmazione di queste applicazioni spiega come il testo può essere visualizzato dagli utenti.
Commenti
[modifica | modifica sorgente]Un commento è un'annotazione che viene ignorata dal linguaggio di programmazione. I commenti possono essere usati per descrivere una o più righe di codice, per riportare la documentazione di un programma, per disabilitare temporaneamente un pezzo di codice o per altri motivi. Per essere riconosciuti come tali da Lua, i commenti devono essere preceduti da due trattini e possono essere inseriti su una riga a sé stante o alla fine di un'altra riga:
print("Questo è codice normale.")
-- Questo è un commento
print("Questo è ancora codice normale.") -- Questo è un commento alla fine di una riga di codice.
Commenti di questo tipo sono chiamati commenti corti. È anche possibile creare commenti lunghi, che iniziano con la cosiddetta parentesi lunga (long bracket), cioè due parentesi quadre, e possono continuare su più righe:
print("Questo è codice normale.")
--[[Linea 1
Linea 2
]]
Tra le due parentesi quadre può essere inserito un numero qualsiasi di segni di uguaglianza. Quel numero è chiamato "livello della parentesi lunga". La parentesi lunga rimarrà aperta fino alla parentesi successiva dello stesso livello, se ce n'è una. Una parentesi lunga senza segno di uguaglianza è chiamata parentesi lunga di livello 0 (long bracket of level 0). Questo approccio consente di utilizzare le doppie parentesi di chiusura all'interno di commenti lunghi, aggiungendo i segni di uguale al centro delle due parentesi. È spesso utile farlo quando si utilizzano i commenti per disabilitare blocchi di codice.
--[==[
Questo è un commento che contiene una parentesi di chiusura di livello 0 che si trova qui: ]]
Tuttavia, la parentesi doppia di chiusura non fa terminare il commento, perché il commento è stato aperto con una parentesi lunga di apertura di livello 2 e solo una parentesi lunga di chiusura di livello 2 può chiuderlo.
]==]
Nell'esempio sopra, la parentesi lunga di chiusura del livello 0 ]]
non chiude il commento, cosa che invece fa la parentesi lunga di chiusura del livello 2 ]==]
.
Sintassi
[modifica | modifica sorgente]La sintassi di un linguaggio di programmazione definisce come devono essere scritte le istruzioni e le espressioni in quel linguaggio, proprio come la grammatica definisce come devono essere composte le frasi e le parole. In particolare, le istruzioni e le espressioni possono essere paragonate rispettivamente a frasi e parole. Le espressioni sono pezzi di codice che hanno un valore e che possono essere valutate. Le istruzioni sono pezzi di codice che possono essere eseguiti e che contengono un'istruzione e una o più espressioni con cui usare quell'istruzione. Ad esempio, 3 + 5
è un'espressione e variable = 3 + 5
è un'istruzione che imposta il valore della variabile su quell'espressione.
L'intera sintassi di Lua può essere trovata nella Backus-Naur Form sul sito web di Lua,[2] ma non capiresti nulla se la leggessi. La Backus-Naur Form (BNF) è un metalinguaggio, un linguaggio usato per descrivere un altro linguaggio, ma per comprendere questo manuale non sarà necessario impararla: un linguaggio come Lua può essere sì descritto usando un metalinguaggio, ma si può descrivere anche attraverso parole e frasi, ed è esattamente ciò che fa questo libro.
Ottenere Lua
[modifica | modifica sorgente]Lua può essere scaricato dal sito ufficiale, dalla pagina di download.[3] Le istruzioni sono disponibili anche lì: il pulsante di download permette di scaricare il codice sorgente. Se stai cercando i binari, dovresti cercare nella pagina per trovare informazioni su quelli. Lo scopo di questo manuale è solo quello di insegnare il linguaggio Lua, non di spiegare l'uso degli strumenti Lua. In generale si presume che il lettore utilizzerà Lua in un sistema embedded, di conseguenza il libro non descriverà l'uso di Lua come linguaggio autonomo.
Note
[modifica | modifica sorgente]