Programmare in Lua
Introduzione
Bisogna rendere ogni cosa il più semplice possibile, ma non più semplice di quanto sia possibile. (Albert Einstein)
A differenza di molti altri linguaggi, Lua è molto piccolo, portabile, veloce e, soprattutto, incredibilmente semplice. Perciò è un ottimo primo linguaggio da imparare. Anche durante tutta la sua continua evoluzione, raggiungendo oggi la versione 5.4.4, Lua è rimasto tale da conservare la stessa filosofia che l'ha fatto nascere.Definizione del Linguaggio
Lua è un linguaggio procedurale con l'attitudine di descrivere i dati, è nato per estendere applicazioni scritte in altri linguaggi compilati. Il linguaggio permette diversi paradigmi di programmazione, come quello funzionale, ad oggetti ed orientato alla manipolazione dei dati. Lua è interamente scritto in ANSI C ed il codice è molto pulito ed ordinato.Le due caratteristiche più importante di Lua sono due: un linguaggio dinamico e non tipizzato. Un linguaggio dinamico significa che il codice sorgente viene direttamente eseguito dall'interprete senza compilazione; non tipizzato invece significa che l'interprete non effettua nessun controllo sul tipo di una variabile prima dell'esecuzione del codice.
Nei linguaggi statici invece, tipo il C/C++, Object Pascal, Ada, il linguaggio proverbiale per il suo controllo sui tipi dei dati e la loro congruenza..., il codice sorgente è prima compilato e poi eseguito, in più tutte le variabili, rigorosamente con nome e tipo, debbono essere dichiarati prima dell'uso. Durante la fase di compilazione, in generale, i linguaggi statici effettuano dei controlli sui tipi dei dati ed il loro uso ed in caso di errori oppure di incongruenza segnalano gli errori. Questo fatto evita a priori una vastissima serie di errori.
Ci sono diverse scuole di pensiero al riguardo dei linguaggi statici e dinamici, personalmente preferisco quelli di tipo statico per i grandi progetti, mentre per i piccoli e la prototipazione potrebbero andar bene anche i linguaggi dinamici.
Nota Bene: I linguaggi dinamici, Lua in particolare, diventano la scelta obbligata quando si tratta di estendere applicazioni compilate.
Parole Chiave
Il set di parole chiavi di Lua è molto ridotto:
and, break, do, else, elseif, end
false, for, function, if, in, local
nil, not, or, repeat, return, then
true, until, while.
Ed un set di simboli:
+ - * / % ^ #
== ~= <= >= < > =
( ) { } [ ]
; : , . .. ...
Precedenza degli operatori:
or and
< > <= >= ~= ==
..
+ -
* / %
not # - (unary) ^
Caratteristiche di Lua
Trovo molto interessanti due caratteristiche di Lua. La prima consiste nell'uso delle tabelle come strutture generiche per idati che permette con estrema flessibilità la gestione e la manipolazione di qualsiasi tipo di dato. La seconda, invece, è quella di poter interpretare le funzioni come oggetti di primo livello ed assegnarli a variabili. In questo modo, Lua ci offre qualche chicca per scrivere codice quasi orientato agli oggetti senza essere realmente un OOP (Object Oriented Programming), ossia un Linguaggio Orientato agli Oggetti.
Nota Bene: Le tabelle sono l'unica struttura dati definita dal linguaggio.
Lua, essendo un linguaggio procedurale e funzionale, si presta molto bene per scrivere piccole applicazioni scientifiche et tecniche. Perciò nella nostra trattazione, saranno molto frequenti esempi di calcolo numerico.