Peter Van Roy 著
Seif Haridi 著
羽永 洋 翻訳
羽永 洋 原著
コンピュータサイエンスの基礎から高度な概念・技法・モデルまでじっくり学びながらオブジェクト指向言語・関数型言語・論理型言語というスタイルの違うプログラミングが同時に学習できます。これらをOz(オズ)というマルチパラダイムをサポートする言語を使い、オープンソースのMozart(モーツアルト)システムによって実際にプログラムを動かしながら学べる。包括的で体系だった知識を得ることができます。また、プログラムの意味論がわかりやすく学べる今まで日本になかった一冊です。まさにプロとして21世紀を生き抜くための必読書です。
第1章 プログラミング概念入門
1.1 計算器
1.2 変数
1.3 関数
1.4 リスト
1.5 リストについての関数
1.6 プログラムの正しさ
1.7 計算量
1.8 遅延計算
1.9 高階プログラミング
1.10 並列性
1.11 データフロー
1.12 明示的状態
1.13 オブジェクト
1.14 クラス
1.15 非決定性と時間
1.16 原子性
1.17 ここからどこへ行くのか?
1.18 練習問題
第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 階層的言語設計
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 011 上から12行目 |
未 | 未 |
|
2007.11.12 | ||||||||||||||||||||||
1刷 | 028 上から11行目 |
未 | 未 |
|
2008.03.04 | ||||||||||||||||||||||
1刷 | 039、040 P.39:図2.4<br> P.40:形式的意味 上から12、15行目 |
未 | 未 |
|
2008.03.04 | ||||||||||||||||||||||
1刷 | 241 見出し |
未 | 未 |
|
2008.03.04 | ||||||||||||||||||||||
1刷 | 346 表4.6 |
未 | 未 |
|
2008.03.04 | ||||||||||||||||||||||
1刷 | 378 下から11行目 |
未 | 未 |
|
2008.03.04 |
yuki obana さん
Oz/Mozartを用いたマルチパラダイムで取り扱う基礎的な概念や技法を扱う。低レイヤーの構造等を別途学習しておくとより効率のよい設計が行えることに気づけると思える。本書の内容は忠実に基礎的であるため目次で概ねの理解は出来る。edXではOzを用いたMOOCが2016年ごろにおいて度々開催されているが本書の内容を掻い摘んでいるので初学者であればまず母語で本書を読むことを推奨する。
jiroukaja さん
2014-06-30
長かった… Ozというprologの影響を強く受けたプログラミング言語で現在のプログラミング言語の概念・技法・モデルの概観を見ていこうという本。最後は流し読み。読んでよかった。
Sohei Takeno さん
2012-10-28
感想:http://d.hatena.ne.jp/Altech/20121028/1351422711