岩波講座 ソフトウェア科学シリーズ

シリーズ全17巻を紹介します。 良書が多く、そのうち何冊かは揃えておくべきです。

学部レベル推薦書
アルゴリズムとデータ構造
プログラミング言語
プログラミング言語処理系
オペレーティング・システム
ソフトウェア科学のための論理学
学部高学年/大学院レベル推薦書
グラフィクスとマンマシンシステム
計算モデルの基礎理論
モデルと表現

  1. 所真理雄:計算機システム入門

    計算機の構成およびアセンブリ・プログラムに関する教科書。 あくまでも授業の教科書であって、 自習書としては難しいという印象を持つ。

  2. 川合慧:プログラミングの方法

    Pascal 言語によるプログラミングの教科書。 第1章の説明が非常に優れている。 残念ながらそれ以後の章が、マニュアルのようで退屈である。

  3. 石畑清:アルゴリズムとデータ構造

    私にとっては、アルゴリズムの教科書の決定版である。 分厚いのは説明が丁寧なためで、 むしろ薄い本よりわかりやすいと思う。

    プログラムを実際に入力して動かすのが、よい勉強になる。 プログラムは主に Pascal で書かれているが、 C 言語に書き直すのも実力をつけるのに良い。

  4. 武市正人:プログラミング言語

    関数型言語とプログラムの意味論の良い教科書。 薄くて、わかりやすくて、しかも内容充実という、 矛盾した要求に応えた書籍である。

  5. 佐々政孝:プログラミング言語処理系

    コンパイラの作り方の教科書。 分厚いのは丁寧に書いてあるためで、 これを読めばコンパイラを自力で書けるはずである。

    言語処理系を作るというのは、 情報系学科のカリキュラムの一大トピックであるから、 本書を読んでじっくり学んで欲しい。

    Aho らのドラゴン・ブックも参照のこと

  6. 前川守:オペレーティング・システム

    OS は、言語処理系と並ぶ一大トピックである。 分厚い本であるが、頑張って読もう。

    OS の教科書では、 並行プログラミング、記憶管理、パフォーマンス・チューニングなどなど 様々な題材が扱われる。 OS を理解することは計算機を理解することそのものだ、 などというと、大げさだろうか。

    本書は、UNIX の説明が弱いので、 この部分については他書をあたるべきである。

  7. 前川守:ソフトウェア実行/開発環境

    本書は「オペレーティング・システム」で扱い切れなかった OS に関する現代的な研究テーマ、具体的には、 分散処理、フォールト・トレランス、セキュリティ、知的作業支援を 紹介している。 システム・ソフトウェアの研究者になるための 研究テーマ地図ともいえる。

    なお書名は、内容を反映していない。 前書を「システム・プログラムの基礎」、 本書を「システム・プログラムの応用」 とすれば良かったか。

  8. 後藤滋樹:記号処理プログラミング

    本シリーズで最も読みやすいのが本書だと思う。 その分、物足りない。 Lisp および Prolog については、 他書で深く学んだ方が良いだろう。

  9. 津田孝夫:数値処理プログラミング

    内容が専門的で、勧められない。

    例えば IEEE の浮動小数点数表現は、 言語処理系屋も知っておくべき知識であり、 そういうことを取り上げた教科書にして欲しかったと思う。

  10. 中嶋正之:グラフィクスとマンマシンシステム

    コンピュータ・グラフィックスやヒューマン・インターフェイスを 学部レベルで教えている大学は、それほど多くないのではないか。 この分野の日本語の教科書がほとんど出回っていないというのが、 こう想像した理由であるが、 そんな中にあって、 本書はコンピュータ・グラフィクスに関する技術を記述した 良い教科書である。

    なお、コンピュータできれいな絵を描くためには、 数学の素養がある程度必要なのだというのも、本書を読めばわかる。 といっても高校の数学の延長と思えばよく、 大学に入ってからの数学が苦手という程度なら問題ない。

  11. 萩谷昌己:ソフトウェア科学のための論理学

    プログラムの基礎理論のための道具として、 論理や集合は非常に有効である。 それどころか、理論を語るための言語と呼んでよく、 これがわからないことには、 研究内容を聴いても(読んでも) 何をいっているのかさっぱりわからなくなってしまう。

    本書は、論理学の中でも特に重要な 一階述語論理のモデルと証明を中心に取り上げ、 さらに様相論理とカテゴリを紹介している。

    類書には不親切な本が多いのであるが、 本書は、学習者がつまずきがちな部分に必ずフォローを入れており、 簡潔に書かれているにもかかわらず理解しやすい。

    内容とは関係ないが、 この分野では専門用語に、 口語ではほとんど使われない漢字の訳語を用いることが多かったのだが、 本書は言文一致を貫いて、カタカナ語を用いているところが興味深い。

  12. 井田哲雄:計算モデルの基礎理論

    計算モデル論は、計算とは何であるかを考えるための理論であるが、 現代では、プログラムの意味を考察するための必要不可欠な道具として 位置付けられている。

    計算モデルの書籍には、 チューリング機械やラムダ計算を個別に扱ったものは何冊かあるが、 本書は、チューリング機械、原始帰納関数、 ラムダ計算、論理計算、項書換え系、代数モデルと、 重要な計算モデルを網羅的に取り上げた教科書である。

    なお、計算モデルを1つ学ぶことは、 プログラミング言語を1つ学ぶことと 同じかそれ以上重要なことである。 また計算モデルを学ぶことで、プログラミング言語に対する理解が深まる。

  13. 佐藤雅彦、桜井貴文:プログラムの基礎理論

    途中までしか読んでいないので、コメントできない。 知識を得ることよりも厳格に理解することを要求する書き方をしているので、 他書に比べて読むのに気合いがいるのである。

  14. 長尾真:知識と推論

    私にとっては、ちょっと掴みどころのない本であった。 1つのトピックに当てられる行数が短く、 細切れの知識しか得られないことが多いためだろう。 というわけで、取り上げているトピックが皆、 知的好奇心をかき立てるものであるにもかかわらず、推薦しない。

  15. 長尾真他:自然言語処理

    このシリーズには分厚い本が多いが、本書が1番厚い。 このことだけで自然言語処理の難しさがわかる、というのは冗談だが、 ちょっと厚過ぎはしないだろうか。 私が関心をもった章は、次のとおり。

    2章「言語の形式的モデル」では、 『言語』という怪物と戦うための理論として、 確率モデル、有限状態機械、記号論理を取り上げている。 3章「形態素解析」では、 仮名漢字変換などで利用される、字句の区切り法を紹介している。 11章「情報の構造化と検索」では、 データベース検索においてキーワード(それは自然言語の単語で書かれる) をいかに上手に抽出するか、 データをいかに構造化するかなど説明している。

  16. 安西祐一郎:認識と学習

    この分野は、私の苦手な分野 (それ以前の問題で、全然勉強していない分野)であるので、 内容だけの紹介

    (1)パターン認識、 (2)記号処理型学習、 (3)ニューラルネットによる学習

  17. 米澤明憲、柴山悦哉:モデルと表現

    題名が漠然としているが、 「オブジェクト指向システムのプログラミング」とすれば、 内容をよく表すのではないだろうか。

    前半は、オブジェクト指向の静的な側面を取り上げている。 特に、型の理論を利用して、クラスというものを厳格にとらえようとする。 後半は、オブジェクト指向の動的な側面、 つまりメッセージ・パッシングと並行計算を取り上げる。 この2つは別個の話題なのであるが、 どちらも「混沌としたものを抽象化してきれいに扱う」 ことを指向している点で共通性を持つ。