概要

Luaは、データ記述機能を備えた一般的な手続き型プログラミングをサポートするように設計された拡張プログラミング言語である。 また、オブジェクト指向プログラミング、関数型プログラミング、データ駆動型プログラミングのサポートも充実している。 Luaは、強力で軽量なスクリプト言語として、それを必要とするあらゆるプログラムで使用されることを目的としている。

概要

拡張言語であるLuaには、「メイン」プログラムという概念がない。 これは、エンベッディング・プログラムまたは単にホストと呼ばれるホスト・プログラムに組み込まれた場合にのみ機能する。 このホスト・プログラムは、関数を呼び出してLuaコードを実行したり、Lua変数を読み書きしたり、Luaコードから呼び出されるC関数を登録したりできる。 Cの関数を使うことで、Luaはさまざまな領域を扱えるように拡張でき、構文フレームワークを共有するカスタマイズされたプログラミング言語を作ることができる。

Netezzaは Lua API を使ってnzLuaを作成した。 nzLuaは Netezzaアプライアンス上でユーザー定義関数、集計、テーブル関数を作成するために使用できます。 nzLuaでは、外部ファイルへのアクセス機能、外部プログラムの実行機能、デバッグ機能など、Luaの機能の一部が利用できない。 削除された機能に加え、多くの関数がnzLuaに追加され、SQLで利用可能な標準関数に慣れ親しんだ開発者が使いやすい言語となっている。 nzLuaを作成するために使用されたLuaのバージョンLuaJIT)は、ジャストインタイムコンパイル技術を使用し、頻繁に使用されるコードパスを直接80x86命令にコンパイルします。

C++を使用するUDXのビルドよりは遅いものの、JITコンパイラは、Perl、Python、JavaScript(同じくJITコンパイラを使用するJavaScript V8を含む)などの他のインタプリタ型言語の一般的な実行速度の5xから 50xを実現する。 nzLuaできるだけ簡単に習得できるように、「nzLua開発キットには、サンプル「nzLuaユーザー定義関数、集計、テーブル関数を含むexamplesディレクトリが含まれている。 多くのサンプルには、nzLuaで利用可能な機能の使い方を説明する広範なコメントが含まれています。