やっと製本に回ったらしい。
目次
Code Reading 序文 はじめに まえがき 付録CD-ROMについて 第1章 序論 1.1 コードを読む理由と方法論 1.1.1 文芸作品としてのコード 1.1.2 手本としてのコード 1.1.3 保守 1.1.4 進化 1.1.5 再利用 1.1.6 インスペクション 1.2 本書の読み方 1.2.1 表記上の規則 1.2.2 ダイアグラム 1.2.3 練習問題 1.2.4 副教材 1.2.5 ツール 1.2.6 本書の大要 1.2.7 大いなる「言語論争」 第2章 プログラミングの基本要素 2.1 最初に取り上げる完全なプログラム 2.2 関数とグローバル変数 2.3 whileループ、条件、ブロック 2.4 switchステートメント 2.5 forループ 2.6 breakとcontinueステートメント 2.7 文字式とブール式 2.8 gotoステートメント 2.9 小規模なリファクタリング 2.10 doループと整数式 2.11 制御構造再考 第3章 Cのデータ型(上級編) 3.1 ポインタ 3.1.1 リンクデータ構造 3.1.2 データ構造の動的割り当て 3.1.3 参照呼び出し 3.1.4 データ要素へのアクセス 3.1.5 配列による引数と戻り値 3.1.6 関数のポインタ 3.1.7 ポインタによる別名参照 3.1.8 ポインタと文字列 3.1.9 ダイレクトメモリアクセス 3.2 構造体 3.2.1 データ要素のグループ化 3.2.2 関数から複数のデータ要素を返すケース 3.2.3 データ構造のマッピング 3.2.4 オブジェクト指向プログラミングi 3.3 共用体 3.3.1 記憶域の効率的な使用 3.3.2 多態の実装 3.3.3 さまざまな内部表現による操作 3.4 動的メモリ割り当て 3.4.1 空きメモリの管理 3.4.2 動的に割り当てられる配列を持つ構造体 3.5 typedef宣言 第4章 Cのデータ構造99 4.1 ベクタ 4.2 行列とテーブル 4.3 スタック 4.4 キュー 4.5 マップ 4.5.1 ハッシュテーブル 4.6 集合 4.7 連結リスト 4.8 ツリー 4.9 グラフ 4.9.1 ノード記憶 4.9.2 エッジ表現 4.9.3 エッジ記憶 4.9.4 グラフの性質 4.9.5 隠れた構造 4.9.6 その他の表現 第5章 制御フロー(上級編) 5.1 再帰 5.2 例外 5.3 並列性 5.3.1 ハードウェアとソフトウェアの並列性 5.3.2 制御モデル 5.3.3 スレッドの実装 5.4 シグナル 5.5 非ローカルジャンプ 5.6 マクロ置換 第6章 大きなプロジェクトへの取り組み 6.1 設計と実装のテクニック 6.2 プロジェクトの編成 6.3 ビルドプロセスとMakefile 6.4 設定 6.5 リビジョン管理 6.6 プロジェクト固有のツール 6.7 テスト 第7章 コーディング標準と規約 7.1 ファイルの名前と編成 7.2 インデント 7.3 書式 7.4 名前付け規則 7.5 プログラミング作法 7.6 プロセス標準 第8章 ドキュメント 8.1 ドキュメントの種類 8.2 ドキュメントを読む 8.3 ドキュメントの問題点 8.4 いろいろなドキュメントソース 8.5 オープンソースにおける一般的なドキュメント形式 第9章 アーキテクチャ 9.1 システム構造 9.1.1 中央リポジトリと分散型の手法 9.1.2 データフローアーキテクチャ 9.1.3 オブジェクト指向構造 9.1.4 階層型アーキテクチャ 9.1.5 ヒエラルキー 9.1.6 スライシング 9.2 制御モデル 9.2.1 イベントドリブンシステム 9.2.2 システムマネージャ 9.2.3 状態遷移 9.3 要素のパッケージ化 9.3.1 モジュール 9.3.2 名前空間 9.3.3 オブジェクト 9.3.4 ジェネリックインプリメンテーション 9.3.5 抽象データ型 9.3.6 ライブラリ 9.3.7 プロセスとフィルタ 9.3.8 コンポーネント 9.3.9 データリポジトリ 9.4 アーキテクチャの再利用 9.4.1 フレームワーク 9.4.2 コードウィザード 9.4.3 デザインパターン 9.4.4 分野固有のアーキテクチャ 第10章 コードを読むためのツール 10.1 正規表現 10.2 コード閲覧ツールとしてのエディタ 10.3 grepによるコード検索 10.4 ファイル間の差異の検索 10.5 ツールの自作 10.6 コードを読むツールとしてのコンパイラ 10.7 コードブラウザと美化ツール 10.8 ランタイムツール 10.9 ソフトウェア以外のツールや手法 第11章 総合的な例 11.1 下準備 11.2 進め方の作戦 11.3 コードの再利用 11.4 テストおよびデバッグ 11.5 ドキュメント 11.6 講評 付録A 本書に収録したコードの概略 付録B ソースコードの著作者 付録C 本書で参照しているソースファイルの一覧 付録D ソースコードのライセンス D.1 ACE D.2 Apache D.3 ArgoUML D.4 DemoGL D.5 hsqldb D.6 NetBSD D.7 OpenCL D.8 Perl D.9 qtchat D.10 socket D.11 vcf D.12 X Window System D.13 Ruby D.14 WideStudio 付録E コードを読むための金言集 E.1 第1章 序論 E.2 第2章 プログラミングの基本要素 E.3 第3章 Cのデータ型(上級編) E.4 第4章 Cのデータ構造 E.5 第5章 制御フロー(上級編) E.6 第6章 大きなプロジェクトへの取り組み E.7 第7章 コーディング標準と規約 E.8 第8章 ドキュメント E.9 第9章 アーキテクチャ E.10 第10章 コードを読むためのツール E.11 第11章 総合的な例 参考文献 索引 題辞 あとがき 著者紹介/監訳者紹介
立ち読みコーナーもある。
新しいうちは古いうちなので、あちこち手直しが必要だ。
慣れない作業でなかなかうまくいかない。父親は器用な人なのだが。
先週放映されたものの録画を見る。紹介されていたエピソードは以下の通り。
種苗メーカー、モンサントから訴えられたカナダの菜種農家
菜種畑に近隣の畑から飛散してきた(と思われる)種が混入していたため、 特許侵害で訴えられた。一審は菜種農家が敗訴。控訴中。
レメルソン特許(マシンビジョンとバーコードリーダ)に関する訴訟
サブマリン特許でマシンビジョンのユーザ(車メーカーとか)を提訴。 laches(ラッチェス、法的怠慢)により、レメルソン側の一審敗訴。 控訴中。
インドの伝統的知識の特許化
インドでの伝統的植物の利用法(ニームという植物の殺菌効果)に対してアメリカ企業による特許が成立。 ニームの買い占めにより価格の上昇。インドでは特許の取り消し。アメリカ特許は依然成立。 同様の問題を避けるため、インドでは伝統的知識(アーユルヴェーダ)をDB化。
特にカナダの農家の話は印象的だ。 彼には落ち度がない(と思われる)のに、菜種栽培を禁止され(仮処分が成立しているようだ)、 損害賠償まで請求されるのは、どう考えても不幸だし、 明日自分に身に降りかかるのではないかという不安さえ感じる。
特許制度そのものを今すぐ無くすべきだとまでは思わないが、 やっぱりどこか間違っている印象を持つ。 違う側面からみると違う印象を持つのだろうか。
コメンテーターは「特許はバランスだ」と発言していた。 正しいバランスはどこにあるのか。