プログラミング言語Luaの公式解説書である"Programming in Lua"の翻訳書を出したので、ご紹介。
すでに弾さんが紹介してくれている。
月神降臨 - 書評 - Programming in Lua
「当初から、LuaをCをはじめとする従来からよく使われてきた言語で記述されているソフトウェアと組み合わせて使用することを目的として設計しました。」と「はじめに」にあるように、Luaは他の言語と組み合わせて使うことを前提に開発されている。特にCと組み合わせることを強く意識していて、Cが得意にしている部分にはLuaは手を出さずCにすべてを任せるようになっている。この割り切りのせいか、Luaはほんとうに簡潔な言語だ。PerlやC++などの巨大な仕様を持つ言語に慣れていると、ちょっととまどうくらい小さな言語なので、カルチャーショックを受けるかも(大げさ?)。
日本語版の公式書を出すにあたって、Lua言語の解説書である"Programming in Lua"と言語リファレンスである"Lua 5.1 Reference Manual"を翻訳して一冊にまとめてある。表紙のキャッチに「これ1冊でLuaのすべてが学べます」と入れたけど、実際480ページのこの本一冊でLuaのことは一通りすべて学べる。他の本は必要ない。あとは先達の書いたコードを見て応用を学んでいけばいいはず。
原著の"Programming in Lua"は自費出版だったので、版権取得やらなにやらのために著者のIerusalimschy教授とメールのやり取りをしたんだけど、これがなかなか興味深い体験だった。Ierusalimschy教授はブラジルのリオデジャネイロにあるカトリカ大学の先生なので、母語は当然ポルトガル語。私はまったくポルトガル語がわからないので、英語でメールを送るわけだけど、教授が送ってくる英語のメールはシンプルそのもの。だいたい、いつも1行くらいしかない。いや、まぁ、間違いがなくていいんだけどさ。もしかして、英語にがて? でも、英語で本書いてるしなぁ。
必要最小限のことしか書かないっていうのが教授の性格だとすると、Luaの言語設計にも影響しているかも(ほんとか?)。
では、いつも通り目次を紹介しておこう。
はじめに
第1部 言語
第1章 最初の一歩
1.1 チャンク
1.2 構文規約についてちょっと
1.3 グローバル変数
1.4 スタンドアローンインタプリタ
第2章 型と値
2.1 nil
2.2 ブール値
2.3 数値
2.4 字列
2.5 テーブル
2.6 関数
2.7 ユーザーデータとスレッド
第3章 式
3.1 算術演算子
3.2 関係演算子
3.3 論理演算子
3.4 連結
3.5 優先順位
3.6 テーブルコンストラクタ
第4章 ステートメント
4.1 代入
4.2 ローカル変数とブロック
4.3 制御構造
4.4 breakとreturn
第5章 関数
5.1 複数の戻り値
5.2 可変長引数
5.3 名前つき引数
第6章 さらに関数について
6.1 クロージャ
6.2 グローバルではない関数
6.3 末尾呼び出しの最適化
第7章 イテレータとジェネリックfor
7.1 イテレータとクロージャ
7.2 ジェネリックforのセマンティクス
7.3 ステートレスイテレータ
7.4 複雑な状態を持つイテレータ
7.5 真のイテレータ
第8章 コンパイル、実行、エラー
8.1 コンパイル
8.2 Cのコード
8.3 エラー
8.4 エラー処理と例外
8.5 エラーメッセージとトレースバック
第9章 コルーチン
9.1 コルーチンの基礎
9.2 パイプとフィルタ
9.3 イテレータとしてのコルーチン
9.4 ノンプリエンプティブなマルチスレッド処理
第10章 完全なサンプル
10.1 データ記述
10.2 マルコフ連鎖アルゴリズム第2部 テーブルとオブジェクト
第11章 データ構造
11.1 配列
11.2 行列と多次元配列
11.3 リンクリスト
11.4 キューと両端キュー
11.5 セットとバッグ
11.6 文字列バッファ
11.7 グラフ
第12章 データファイルと永続化
12.1 データファイル
12.2 シリアライズ
第13章 メタテーブルとメタメソッド
13.1 算術メタメソッド
13.2 関係メタ演算子
13.3 ライブラリ定義のメタメソッド
13.4 テーブルアクセスメタメソッド
第14章 環境
14.1 動的な名前を持つグローバル変数
14.2 グローバル変数の宣言
14.3 非グローバル環境
第15章 モジュールとパッケージ
15.1 require関数
15.2 モジュールの基本的な作り方
15.3 環境の使用
15.4 module関数
15.5 サブモジュールとパッケージ
第16章 オブジェクト指向プログラミング
16.1 クラス
16.2 継承
16.3 多重継承
16.4 プライベート性
16.5 単一メソッドアプローチ
第17章 弱いテーブル
17.1 メモ化関数
17.2 オブジェクトのアトリビュート
17.3 デフォルト値を持つテーブル再考第3部 標準ライブラリ
第18章 数学ライブラリ
第19章 テーブルライブラリ
19.1 追加と削除
19.2 ソート
19.3 連結
第20章 文字列ライブラリ
20.1 基本的な文字列操作関数
20.2 パターンマッチ関数
20.3 パターン
20.4 キャプチャ
20.5 置換
20.6 成功の秘訣
第21章 I/Oライブラリ
21.1 シンプルなI/Oモデル
21.2 フルセットのI/Oモデル
21.3 その他のファイル操作
第22章 OSライブラリ
22.1 日付と時刻
22.2 その他のシステムコール
第23章 デバッグライブラリ
23.1 内部的な関数
23.2 フック
23.3 プロファイル第4部 C API
第24章 C APIの概要
24.1 最初の例
24.2 スタック
24.3 C APIを使用したエラー処理
第25章 アプリケーションの拡張
25.1 基本
25.2 テーブル操作
25.3 Lua関数の呼び出し
25.4 汎用の関数呼び出し
第26章 LuaからCを呼び出す
26.1 C関数
26.2 Cモジュール
第27章 C関数を記述するときに使えるテクニック
27.1 配列操作
27.2 文字列操作
27.3 C関数へのステートの格納
第28章 Cのユーザー定義型
28.1 ユーザーデータ
28.2 メタテーブル
28.3 オブジェクト指向的なアクセス
28.4 配列アクセス
28.5 ライトユーザーデータ
第29章 リソース管理
29.1 ディレクトリイテレータ
29.2 XMLパーサー
第30章 スレッドとステート
30.1 マルチスレッド
30.2 Luaのステート
第31章 メモリ管理
31.1 メモリ確保関数
31.2 ガベージコレクタ
第5部 付録:Luaリファレンスマニュアル
付録A はじめに
付録B 言語
B.1 字句規約
B.2 値と型
B.3 変数
B.4 ステートメント
B.5 式
B.6 可視性規則
B.7 エラー処理
B.8 メタテーブル
B.9 環境
B.10 ガベージコレクション
B.11 コルーチン
付録C アプリケーションプログラムインターフェイス
C.1 スタック
C.2 スタックのサイズ
C.3 擬似インデックス
C.4 Cのクロージャ
C.5 レジストリ
C.6 Cでのエラー処理
C.7 関数と型
C.8 デバッグインターフェイス
付録D 補助ライブラリ
D.1 関数と型
付録E 標準ライブラリ
E.1 基本関数
E.2 コルーチン操作
E.3 モジュール
E.4 文字列操作
E.5 テーブル操作
E.6 数学関数
E.7 入出力機能
E.8 OS機能
E.9 デバッグライブラリ
付録F スタンドアローンのLua
付録G 以前のバージョンとの非互換性情報
G.1 言語仕様の変更
G.2 ライブラリの変更
G.3 APIの変更
付録H Luaの構文
索引
0 件のコメント:
コメントを投稿