Introducción
Lua es un lenguaje de programación extensible diseñado para soportar programación procedimental general con facilidades de descripción de datos. También ofrece un buen soporte para la programación orientada a objetos, la programación funcional y la programación basada en datos. Lua está pensado para ser utilizado como un potente y ligero lenguaje de scripting para cualquier programa que lo necesite.
Visión general
Como lenguaje de extensión, Lua no tiene noción de programa "principal". Sólo funciona cuando está incrustado en un programa anfitrión, llamado programa de incrustación o simplemente anfitrión. Este programa anfitrión puede invocar funciones para ejecutar un fragmento de código Lua, puede escribir y leer variables Lua, y registrar funciones C para ser llamadas por código Lua. Mediante el uso de funciones C, Lua puede ampliarse para manejar una amplia gama de dominios diferentes, creando lenguajes de programación personalizados que comparten un marco sintáctico.
Utilizando la API Lua, Netezza ha creado nzLua. nzLua puede utilizarse para crear funciones definidas por el usuario, agregados y funciones de tabla en el dispositivo Netezza. Algunas de las características de Lua, como la capacidad de acceder a archivos externos, la capacidad de ejecutar programas externos, y las características de depuración no están disponibles en nzLua. Además de las características que se han eliminado, se han añadido muchas funciones a nzLua para facilitar el uso del lenguaje a los desarrolladores familiarizados con las funciones estándar disponibles en SQL. La versión de Lua utilizada para crear nzLuaLuaJIT) utiliza técnicas de compilación just-in-time para compilar rutas de código de uso frecuente directamente en instrucciones 80x86.
Aunque es más lento que un UDX construido con C++, el compilador JIT permite una ejecución entre 5x y 50x más rápida que otros lenguajes interpretados como Perl, Python y JavaScript (incluido JavaScript V8, que también utiliza un compilador JIT). Para facilitar al máximo el aprendizaje de nzLua, el kit de desarrollo de nzLua incluye un directorio de ejemplos que contiene funciones definidas por el usuario, agregados y funciones de tabla de nzLua de ejemplo. Muchos de los ejemplos incluyen extensos comentarios que explican cómo utilizar las funciones disponibles en nzLua.