コンピュータプログラミングの概念・技法・モデル

『コンピュータプログラミングの概念・技法・モデル』 (コンピュータプログラミングのがいねん・ぎほう・モデル、CTM、CTMCP、) は、一般的なコンピュータプログラミングの概念について説明した教科書であり、ピーター・ヴァン・ロイとセイフ・ハリディにより著された。
日本語訳の訳者は羽永洋である。
この教科書の略称はCTMもしくはCTMCPである。
ガウディ本と呼ばれることもある。
ピーター・ヴァン・ロイはルーヴァン・カトリック大学の教授であり、セイフ・ハリディはスウェーデン王立工科大学の教授である。
この教科書は2004年に MIT Press から出版され、2007年に日本語訳が翔泳社から出版された。

この教科書では、マルチパラダイムプログラミング言語Ozの注意深く選択されたサブセット (Mozartプログラミングシステム) を使い、重要なプログラミングの概念と技法とモデル (プログラミングパラダイム) を説明している。

目次 

以下にこの教科書の目次を示す。

 はじめに
 プログラム例の実行について
 第1章 プログラミング概念入門
 第I部 一般的計算モデル
 第2章 宣言的計算モデル
 2.1 実用的プログラミング言語の定義
 2.2 単一代入格納域
 2.3 核言語
 2.4 核言語の意味
 2.5 メモリ管理
 2.6 核言語から実用的言語へ
 2.7 例外
 2.8 進んだ話題
 2.9 練習問題
 第3章 宣言的プログラミング技法
 3.1 宣言的とはどういうことか？
 3.2 反復計算
 3.3 再帰計算
 3.4 再帰を用いるプログラミング
 3.5 時間効率と空間効率
 3.6 高階プログラミング
 3.7 抽象データ型
 3.8 宣言的でない必要物
 3.9 小規模プログラム設計
 3.10 練習問題
 第4章 宣言的並列性
 4.1 データ駆動並列モデル
 4.2 スレッドプログラミングの基本的技法
 4.3 ストリーム
 4.4 宣言的並列モデルを直接使うこと
 4.5 遅延実行
 4.6 甘いリアルタイムプログラミング
 4.7 Haskell言語
 4.8 宣言的プログラミングの限界と拡張
 4.9 進んだ話題
 4.10 歴史に関する注記
 4.11 練習問題
 第5章 メッセージ伝達並列性
 5.1 メッセージ伝達並列モデル
 5.2 ポートオブジェクト
 5.3 簡単なメッセージプロトコル
 5.4 並列性のためのプログラム設計
 5.5 リフト制御システム
 5.6 メッセージ伝達モデルを直接使用すること
 5.7 Erlang言語
 5.8 進んだ話題
 5.9 練習問題
 第6章 明示的状態
 6.1 状態とは何か？
 6.2 状態とシステム構築
 6.3 明示的状態を持つ宣言的モデル
 6.4 データ抽象
 6.5 状態ありコレクション
 6.6 状態に関する推論
 6.7 大規模プログラムの設計
 6.8 ケーススタディ
 6.9 進んだ話題
 6.10 練習問題
 第7章 オブジェクト指向プログラミング
 7.1 継承
 7.2 完全なデータ抽象としてのクラス
 7.3 漸増的データ抽象としてのクラス
 7.4 継承を使うプログラミング
 7.5 他の計算モデルとの関係
 7.6 オブジェクトシステムを実装すること
 7.7 Java (直列部分)
 7.8 能動的オブジェクト
 7.9 練習問題
 第8章 状態共有並列性
 8.1 状態共有並列モデル
 8.2 並列性を持つプログラミング
 8.3 ロック
 8.4 モニタ
 8.5 トランザクション
 8.6 Java言語 (並列部分)
 8.7 練習問題
 第9章 関係プログラミング
 9.1 関係計算モデル
 9.2 別の例
 9.3 論理型プログラミングとの関係
 9.4 自然言語構文解析
 9.5 文法インタプリタ
 9.6 データベース
 9.7 Prolog言語
 9.8 練習問題
 第II部 特殊化された計算モデル
 第10章 グラフィカルユーザインタフェースプログラミング
 10.1 宣言的／手続き的手法
 10.2 宣言的／手続き的手法を使うこと
 10.3 対話的学習ツール Prototyper
 10.4 ケーススタディ
 10.5 GUIツールを実装すること
 10.6 練習問題
 第11章 分散プログラミング
 11.1 分散システムの分類
 11.2 分散モデル
 11.3 宣言的データの分散
 11.4 状態の分散
 11.5 ネットワークアウェアネス
 11.6 共通分散プログラミングパターン
 11.7 分散プロトコル
 11.8 部分的失敗
 11.9 セキュリティ
 11.10 アプリケーションを構築すること
 11.11 練習問題
 第12章 制約プログラミング
 12.1 伝播・探索法
 12.2 プログラミング技法
 12.3 制約ベース計算モデル
 12.4 計算空間を定義し，使うこと
 12.5 関係計算モデルを実装すること
 12.6 練習問題
 第III部 意味
 第13章 言語意味
 13.1 一般的計算モデル
 13.2 宣言的並列性
 13.3 8つの計算モデル
 13.4 よくある抽象の意味
 13.5 歴史に関する注記
 13.6 練習問題
 第IV部 付録
 付録A Mozartシステム開発環境
 A.1 対話的インタフェース
 A.2 コマンドラインインタフェース
 付録B 基本データ型
 B.1 数 (整数，浮動小数点数，文字)
 B.2 リテラル (アトムと名前)
 B.3 レコードとタプル
 B.4 チャンク (制限つきレコード)
 B.5 リスト
 B.6 文字列
 B.7 仮想文字列
 付録C 言語構文
 C.1 対話的文
 C.2 文と式
 C.3 文と式のための非終端記号
 C.4 演算子
 C.5 キーワード
 C.6 字句構文
 付録D 一般的計算モデル
 D.1 創造的拡張原則
 D.2 核言語
 D.3 概念
 D.4 違う形の状態
 D.5 その他の概念
 D.6 階層的言語設計
 参考文献
 索引

関連項目 

 『計算機プログラムの構造と解釈』 (SICP)
 Oz
 Mozartプログラミングシステム

書誌情報 

 ピーター・ヴァン・ロイ、セイフ・ハリディ、羽永洋(訳) 、『コンピュータプログラミングの概念・技法・モデル』、翔泳社、2007年、ISBN 978-4798113463
 Peter Van-Roy, Seif Haridi, Concepts, Techniques, and Models of Computer Programming, Mit Press, 2004, ISBN 978-0262220699

外部リンク 

 CTMの公式ウェブページ - 多くの補足資料を提供している
 概要:スライド版（英文）
 原著 PDF版（アメリカ電力供給協会にて公開） 
 Scott Johnson の書評
 Yves Deville ほかによる書評

コンピュータの文献
プログラミング
2004年の書籍