(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

コーディングを支える技術を読んだ

読了。っと。
目次こんなん

第1章 言語を深く効率的に学ぶには
1.1 比較から学ぶ
1.2 歴史から学ぶ
1.3 まとめ

第2章 プログラミング言語を俯瞰する
2.1 プログラミング言語誕生の歴史
2.2 プログラミング言語の生まれた目的
2.3 まとめ

第3章 文法の誕生
3.1 文法って何だろう?
3.2 スタックマシンとFORTH
3.3 構文木LISP
3.4 中置記法
3.5 まとめ

第4章 処理の流れのコントロール
4.1 構造化プログラミングの誕生
4.2 ifが生まれる前
4.3 while ──繰り返しのifを読みやすく表現
4.4 for ──数値を増やしながらのwhileを読みやすく表現
4.5 まとめ

第5章 関数
5.1 関数の役割
5.2 戻る命令
5.3 再帰呼び出し
5.4 まとめ

第6章 エラー処理
6.1 プログラムも失敗をする
6.2 失敗をどうやって伝える?
6.3 失敗しそうなコードを囲む構文
6.4 出口を1つにしたい
6.5 どういうときに例外を投げるか
6.6 例外の伝搬
6.7 まとめ

第7章 名前とスコープ
7.1 名前はなぜ必要だったか
7.2 スコープの進化
7.3 静的スコープは完成形?
7.4 まとめ

第8章 型
8.1 型とは何か
8.2 数値をオンとオフで表現する方法
8.3 1つの位に必要なランプはいくつか?
8.4 実数はどうやって表現しよう
8.5 型は何のため?
8.6 型のいろいろな展開
8.7 まとめ

第9章 コンテナと文字列
9.1 いろいろな種類のコンテナがある
9.2 なぜいろいろな種類のコンテナがあるのか
9.3 辞書,ハッシュ,連想配列
9.4 文字とは何か
9.5 文字列とは何か
9.6 まとめ

第10章 並行処理
10.1 並行処理とは何か
10.2 細かく区切って実行する
10.3 処理を切り替える2通りの方法
10.4 競合状態を防ぐには
10.5 ロックの問題点と解決策
10.6 まとめ

第11章 オブジェクトとクラス
11.1 オブジェクト指向とは何か
11.2 変数と関数を束ねて模型を作る方法
11.3 方法1 モジュール,パッケージ
11.4 方法2 関数もハッシュに入れる
11.5 方法3 クロージャ
11.6 方法4 クラス
11.7 まとめ

第12章 継承によるコードの再利用
12.1 継承とは
12.2 多重継承
12.3 多重継承の問題点──またしても衝突!
12.4 まとめ

んー、詰め込みすぎているような物足りないようなそんな感じ。初学者に読ませるにしてはちょっと深い話があるし、新しい単語のオンパレードになりそうで結構キツそうだけど、ある程度以上の人は物足りなさを感じるかも。結局何を目的にした本なのかがいまいちなんですよね。言語の歴史的経緯とかを簡便に学ぶことが出来るのはいいなって思った。

それからオブジェクト指向の話、多くの人は型だとか継承だとかって言いつつ、別の人はメッセージパッシングをするのがオブジェクト指向だとかなんだとか言っていて、結局何がなんだかそのへんは深く理解していなかったけど、そもそもその思想を作った人が別々の人だから仕方ないんだっていうのと、オブジェクト指向というのは万有引力の法則みたいに絶対のものではないからその解釈や実装は複数あっていいんだと気づけた。これは良かった。

そんな感じ。