Introduzione
Lua è un linguaggio di programmazione di estensione progettato per supportare la programmazione procedurale generale con strutture di descrizione dei dati. Offre inoltre un buon supporto per la programmazione orientata agli oggetti, la programmazione funzionale e la programmazione basata sui dati. Lua è destinato a essere utilizzato come linguaggio di scripting potente e leggero per qualsiasi programma che ne abbia bisogno.
Panoramica
Essendo un linguaggio di estensione, Lua non ha la nozione di programma "principale". Funziona solo se incorporato in un programma host, chiamato programma incorporante o semplicemente host. Questo programma host può invocare funzioni per eseguire un pezzo di codice Lua, può scrivere e leggere variabili Lua e registrare funzioni C per essere chiamate dal codice Lua. Utilizzando le funzioni del C, Lua può essere ampliato per gestire un'ampia gamma di domini diversi, creando linguaggi di programmazione personalizzati che condividono una struttura sintattica.
Utilizzando l'API Lua, Netezza ha creato nzLua. nzLua può essere utilizzato per creare funzioni, aggregati e tabelle definite dall'utente sull'appliance Netezza. Alcune caratteristiche di Lua, come la possibilità di accedere a file esterni, la possibilità di eseguire programmi esterni e le funzioni di debug, non sono disponibili in nzLua. Oltre alle caratteristiche che sono state rimosse, sono state aggiunte molte funzioni a nzLua per rendere il linguaggio più facile da usare per gli sviluppatori che hanno familiarità con le funzioni standard disponibili in SQL. La versione di Lua utilizzata per creare nzLuaLuaJIT) utilizza tecniche di compilazione just-in-time per compilare i percorsi di codice più frequenti direttamente in istruzioni 80x86.
Sebbene sia più lento di un UDX costruito con il C++, il compilatore JIT consente un'esecuzione 5x a 50x più veloce rispetto a quella tipica di altri linguaggi interpretati come Perl, Python e JavaScript (compreso JavaScript V8, che utilizza anch'esso un compilatore JIT). Per rendere l'apprendimento di nzLua il più semplice possibile, il kit di sviluppo nzLua include una directory di esempi che nzLua esempi di funzioni definite dall'utente, aggregati e funzioni di tabella. Molti degli esempi includono ampi commenti che spiegano come utilizzare le funzioni disponibili in nzLua.