この初版はLua 5.0向けに書かれました。後のバージョンでも大部分は関連性がありますが、いくつかの違いがあります。
第4版はLua 5.3を対象としており、Amazonやその他の書店で購入できます。
本書を購入することで、Luaプロジェクトの支援にもなります。
![]() |
LuaプログラミングLua | ![]() |
序文 |
現在、多くのプログラミング言語は、何十万行ものプログラムを作成するのをどのように支援するかに重点を置いています。そのため、パッケージ、名前空間、複雑な型システム、無数の構造、そして何千ページものドキュメントを学習する必要があります。
Luaは、何十万行ものプログラムを作成するのを支援しようとはしていません。代わりに、Luaは、数百行、あるいはそれ以下で問題を解決するのを支援しようとしています。この目的を達成するために、Luaは他の多くの言語と同様に、拡張性に依存しています。しかし、他のほとんどの言語とは異なり、LuaはLua自体で書かれたソフトウェアだけでなく、CやC++などの他の言語で書かれたソフトウェアでも簡単に拡張できます。
Luaは、最初からCや他の従来の言語で書かれたソフトウェアと統合できるように設計されました。この2つの言語の二重性が多くの利点をもたらします。Luaは、純粋なパフォーマンス、低レベル操作、またはサードパーティソフトウェアとのインターフェイスなど、Cが得意とすることを行おうとしないため、小さくシンプルな言語です。LuaはこれらのタスクをCに依存しています。Luaが提供するのは、Cが得意としないことです。それは、ハードウェアから適切な距離、動的な構造、冗長性のなさ、テストとデバッグの容易さです。そのため、Luaは安全な環境、自動メモリ管理、文字列や動的サイズのその他の種類のデータを処理する優れた機能を持っています。
拡張可能な言語であるだけでなく、Luaはグルー言語でもあります。Luaは、既存の高度なコンポーネントを結合してアプリケーションを作成する、コンポーネントベースのソフトウェア開発をサポートしています。通常、これらのコンポーネントは、CやC++などのコンパイルされた静的型付き言語で記述されます。Luaは、これらのコンポーネントを構成および接続するために使用するグルーです。通常、コンポーネント(またはオブジェクト)は、プログラム開発中に多くの変更を受けず、最終プログラムのCPU時間の大部分を占める、より具体的な低レベルの概念(ウィジェットやデータ構造など)を表します。Luaは、製品のライフサイクル中に多くの変更が加えられる可能性のあるアプリケーションの最終的な形を与えます。ただし、他のグルーテクノロジーとは異なり、Luaは本格的な言語でもあります。したがって、Luaはコンポーネントを接着するだけでなく、それらを適応させたり、再形成したり、さらにはまったく新しいコンポーネントを作成したりするために使用できます。
もちろん、Luaは唯一のスクリプト言語ではありません。Perl、Tcl、Ruby、Forth、Pythonなど、ほぼ同じ目的で使用できる他の言語もあります。以下の機能は、Luaをこれらの言語から際立たせます。他の言語もこれらの機能の一部をLuaと共有していますが、同様のプロファイルを提供する言語は他にありません。
Luaの力の大部分は、そのライブラリから来ています。これは偶然ではありません。Luaの主な強みの1つは、新しい型と関数による拡張性です。多くの機能がこの強みに貢献しています。動的型付けは、高度なポリモーフィズムを可能にします。自動メモリ管理は、メモリの割り当てと解放の責任者やオーバーフローの処理方法を決定する必要がないため、インターフェイスを簡素化します。高階関数と匿名関数により、高度なパラメーター化が可能になり、関数がより多用途になります。
Luaには、小さな標準ライブラリセットが付属しています。組み込みプロセッサなど、厳しく制限された環境にLuaをインストールする場合は、必要なライブラリを慎重に選択することが賢明かもしれません。さらに、制限が厳しい場合は、ライブラリのソースコードに移動して、どの関数を保持するかを1つずつ選択するのは簡単です。ただし、Luaは(すべての標準ライブラリを含めても)かなり小さく、ほとんどのシステムでは、パッケージ全体を心配せずに使用できることを忘れないでください。
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. | ![]() |