【お蔵出し】コンピュータ書紹介:高い本編

3年くらい前に書いたコンピュータ書の紹介文が発掘されたので、せっかくなので貼っておきます(一部手直し済み)。

こういうのはレギュレーションが問題で、この時は「いい本だけど高い本」でした。今でも当然ながらお勧めですが、「買いたい」というよりは「買わせたい」本かも。

ちなみにこの中では1冊だけ自分では持ってない本があります(それ以外にも買ったんだけど本棚の億に埋もれて発掘できない本も多々あります……)。

ヘネシー&パターソン『コンピュータアーキテクチャ 定量的アプローチ 第4版』

コンピュータアーキテクチャ 定量的アプローチ 第4版 (IT Architects’ Archive)

コンピュータアーキテクチャ 定量的アプローチ 第4版 (IT Architects’ Archive)

通称『ヘネパタ』本。コンピュータアーキテクチャの代表的教科書の最新版。

同著者による『コンピュータの構成と設計』(通称『パタヘネ』本)が入門寄りである一方、こちらは上級者向けになっている。そしてこの第4版は『最初の版以来、最も重要である』と著者が述べる通り、プロセッサの性能改善が鈍化した21世紀において、マルチコアの並列処理の扱いを大きく取り上げるようになったのが特徴的。またCPUというかプロセッサの話がメインではあるが、メモリやストレージについても紹介されている。

なお、本文だけで十分厚いのに、付録CD-ROMにはさらに数十ページあるPDFがいくつも収録されているのはまさに驚嘆。付録D『組み込みシステム』ではプレステ2とSANYOのデジカメがケーススタディとして出てきて興味深い。

セイフ・ハリディ, ピーター・ヴァン・ロイ『コンピュータプログラミングの概念・技法・モデル』

コンピュータプログラミングの概念・技法・モデル (IT Architects' Archiveクラシックモダン・コンピューティング)

コンピュータプログラミングの概念・技法・モデル (IT Architects' Archiveクラシックモダン・コンピューティング)

ガウディ本ともCTMCPとも呼ばれる、プログラミングの教科書本SICPことエーベルソン&サスマン『計算機プログラムの構造と解釈』をぐっとモダンにした感じで、いわば「21世紀のSICP」と呼んでも過言ではないはず。

プログラミングの本としては、最初は状態のない関数型プログラミング的な宣言的計算モデルから始まり、半分くらい進んだ辺りでようやく状態を導入し、オブジェクト指向についても説明する、という順序になっている点が興味深い。

本書で使われている言語はOzという(わりと)マイナーなものだが、SICPを読むためにSchemeを勉強する人もいるくらいだからそこは気にしない方向で。並列処理などの現代的な要素にも目配せされているところがうれしい。

エイホ、セシィ、ウルマン、ラム『コンパイラ―原理・技法・ツール 第2版』

コンパイラ―原理・技法・ツール (Information & Computing)

コンパイラ―原理・技法・ツール (Information & Computing)

泣く子も黙るコンパイラの代表的教科書。第1版の刊行から10年以上たち、著者にモニカ・S・ラムを加えて改訂されたのが本書。

第1版と比べるとずいぶんとモダンになってるなあ、と感慨深い。とりあえずコンパイラなるものに興味があって勉強したいという方には、本書を一通り読んでおけばコンパイラの基本は身についたと思ってもよいはず。

第2版は第1版よりも分量が増えたにもかかわらず、物理的な厚さは減り、さらに値段も安くなるという良心設計がうれしい。訳語は比較的カタカナを使わないようにしているのでめずらしい向きもあるかもだが、慣れればそれほど読みづらくないはず。

D. Knuth『The Art of Computer Programming』(第1巻、第2巻、第3巻)

The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition 日本語版 (ASCII Addison Wesley Programming Series)

The Art of Computer Programming Volume1 Fundamental Algorithms Third Edition 日本語版 (ASCII Addison Wesley Programming Series)

The Art of Computer Programming (2) 日本語版 Seminumerical algorithms Ascii Addison Wesley programming series

The Art of Computer Programming (2) 日本語版 Seminumerical algorithms Ascii Addison Wesley programming series

The Art of Computer Programming Volume 3 Sorting and Searching Second Edition 日本語版 (Ascii Addison Wesley programming series)

The Art of Computer Programming Volume 3 Sorting and Searching Second Edition 日本語版 (Ascii Addison Wesley programming series)

アルゴリズムの古典的教科書。さすがに古臭いとか、アルゴリズムを勉強するだけならコルメン『アルゴリズム・イントロダクション』とかの方が手軽でよいのでは? という意見もあるが、「古典」はまず風格からして違う。数式が手加減なしに出てきたり、たまにコードだと思ったらMIXのアセンブラみたいなコードだったりと、いろんな意味でそのレベルの違いに呆然とする。加えて人生初寄稿誌がMADだったという著者ならではの小粋なアメリカンジョークが(くだらなくて)たまらない。

いかにも古典らしい古典であり、プログラミング方面ではこういう風に読める本はなかなかないので、プログラミングでご飯を食べようという人なら一度は本気で取り組みたい。というか正直いつまで手に入るか分からないので今のうちに買っておきたい。

ピーター・ノーヴィグ『実用CommonLisp』

実用 Common Lisp (IT Architects’Archive CLASSIC MODER)

実用 Common Lisp (IT Architects’Archive CLASSIC MODER)

AI界の重鎮、ピーター・ノーヴィグが書いたプログラミングの教科書。もっともAIに興味のない方には、リンカーンゲティスバーグ演説PowerPointで再現したパロディネタの「ゲティスバーグPowerPointプレゼンテーション」の作者、という方が通りがよいかも。

ノーヴィグなので題材は当然AIプログラミングなのだが、IBMシステムエンジニアリングに従事し、UMLやRUPのガイド本などの翻訳も手掛けた訳者が「(本書のサンプルが)システム開発実践者の設計パターンとプログラミングスタイルに普遍的な影響を与える古典的プログラム群だと革新できる」などなどと書いているので安心して読んで欲しい。「『大人』向けSICP」とでも言えるかも(『大人』の意味も本書参照のこと)。

ケン・ランディ『CJKV日中韓越情報処理』

CJKV日中韓越情報処理

CJKV日中韓越情報処理

コンピュータにおける多言語(特に日本語)処理についての代表的な本。あのCJK本にベトナム語のVが加わり、さらに最強さを増したのが本書であり、文字コードを知るには避けては通れない。これだけの本を、CJK文化圏の人ではない著者に書かれてしまったのはいかがなものか、という話が出版当時にはあったのも懐かしい思い出。

まあ正直に言えば矢野啓介『文字コード技術入門』とUnicodeのPDFをもろもろと入手した方が安上がりな気もするが、網羅的な説明という意味では本書にはかなわない。いざという時のために棚に置いておきたい一冊。

バートランド・メイヤー『オブジェクト指向入門 第2版』全2巻

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects' Archiveクラシックモダン・コンピューティング)

Eiffelの著者メイヤーによるオブジェクト指向の本。なお「入門」というタイトルは日本語版のみで、ぜんぜん入門書じゃないのに注意。また「契約に基づく設計(Design by Contract、DbC)」の概念を紹介していることでも有名。

第1版が翻訳されてから幾星霜、一時期は「もう訳されないのでは?」と懸念する声もあったが、何とか第2版が2冊とも出版されてめでたい限り。オブジェクト指向プログラミング全般については教科書的・原理的な本が非常に少ない中、この一冊(じゃなくて2冊だけど)の存在が光っている。

高橋浩和、小田逸郎、山幡為佐久『Linuxカーネル2.6解読室』

Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

たまには翻訳ものではない本も。Linuxカーネルの解説書。Linuxカーネルについて、その基礎からプロセス・メモリ管理・ファイルシステム・ネットワークと、広くそして深く、必要に応じてソースも引用しつつ解説していく。

日本人著者による本にはあんまりないスタイルで、Linuxに関わるプログラマ、あるいはLinuxでサービスを運用するエンジニアならぜひ読んでおきたい一冊。

Jon Kleinberg、Eva Tardos『アルゴリズムデザイン

アルゴリズムデザイン

アルゴリズムデザイン

TAOCPと同様、アルゴリズムについての教科書的な本。

TAOCPでは個々の小さな問題に対するアルゴリズムを細かく掘り下げていくスタイルだったが、コンピュータが社会の至る所で使われるようになった現在、本書では応用に主眼を置いて、いわば「現実の問題解決にこそアルゴリズム的な考え方が役立つ」といった視点で書かれているのが興味深いところ。一見変わらないように見えるアルゴリズムの世界でも、時代が進むにつれてダイナミックに変わっていくのだなあと痛感する一冊。

ティーブ・マコネル『Code Complete』(全2巻)

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

CODE COMPLETE 第2版 下 完全なプログラミングを目指して

設計からコーディング、デバッグまで、プログラマの営為すべてに対して網羅的に紹介する本で、プログラマなら黙って一度は読んで欲しい必読書。

変数や関数の名前のつけ方からテストまで、プログラマがプログラムを作成する上で必要となるあらゆることをあますところなく紹介。もちろんこの辺りは完全な正解というものがあるわけではなく、著者流のやり方のそれぞれには賛否両論あるはずだが、それは個々の事情によるところもあり、とにかく他にはここまで網羅的な本がないんだからしょうがない。むしろ本書をたたき台として、各自あるいはチームでの開発の指針を考えるきっかけとするのが理想的な読み方だろう。

サムエル・P・ハービソン3世、ガイ・L・スティール・ジュニア『Cリファレンスマニュアル』

S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル

S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル

その名の通り、Cのリファレンスマニュアル本。

Cの場合、入門書や、Cを取り巻く(C以外のことを含めて)全体を解説する本は多々あれど、Cそのものについての本ではこれに勝る物はおそらくないので、仕事でCを書く人の職場なら「仕方ないから買っておく」べき本。そうじゃなくてもCに触れる機会があるなら、いざという時のために持っておいて損はないはず。