『コンピュータプログラミングの概念・技法・モデル』 (コンピュータプログラミングのがいねん・ぎほう・モデル、CTM、CTMCP、英: Concepts, Techniques, and Models of Computer Programming) は、一般的なコンピュータプログラミングの概念について説明した教科書であり、ピーター・ヴァン・ロイとセイフ・ハリディにより著された。 日本語訳の訳者は羽永洋である。 この教科書の略称は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 練習問題
- 第2章 宣言的計算モデル
- 第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 練習問題
- 第10章 グラフィカルユーザインタフェースプログラミング
- 第III部 意味
- 第13章 言語意味
- 13.1 一般的計算モデル
- 13.2 宣言的並列性
- 13.3 8つの計算モデル
- 13.4 よくある抽象の意味
- 13.5 歴史に関する注記
- 13.6 練習問題
- 第13章 言語意味
- 第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 階層的言語設計
- 付録A Mozartシステム開発環境
- 参考文献
- 索引
関連項目
- 『計算機プログラムの構造と解釈』 (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 ほかによる書評




