読者です 読者をやめる 読者になる 読者になる

『はじめて読む486』ではじめて理解するコンピュータ

本書はひらさんにお薦めされた本で、ひらさん曰く
「システムレベルのx86を知るには、下記を読めば良いと思います。
非常にわかりやすい解説です」だそうです。

はじめて読む486―32ビットコンピュータをやさしく語る

はじめて読む486―32ビットコンピュータをやさしく語る

金曜日の仕事中にこの本をペラペラと拾い読みしはじめたのですが、あまりの面白さに最初から一気に読み込んでしまいました。
私の大好きな本である『RHG』と同等か、それを越える面白さがこの本にはあります。

いまいち理解できなかったコンピュータの動き

たまにSEGV、しますよね?
SEGVって「セグメンテーションフォルト」なわけですが、これはなんで起きるのかわかりますか?
そもそもセグメントってなんでしょ…。

私はそういうのをgoogle先生に聞いたりしてなんとなく勉強してきたわけですが、いまいち理解しきれませんでした。
ソフトウェアのレベルから理解しようとした点、歴史を学ばなかった点に、理解できなかった理由があった、と本書を読んで感じました。

本書の素晴らしいところは、ハードウェアの目線からOSを語るところ、そして、その技術が必要となる歴史を語るところにあります。

ハードウェア目線で語るOS

CPUの話をしっかりと理解させた後に、それを使ってOSの機能をどのように実現するかが書かれています。
アプリケーションソフトウェアの面からOSを理解するアプローチは間違っていたんだなぁと思いました。
やー、近道しようとすると理解が遅れますねぇ。遠回り大事。

whyがある

本書が素晴らしいのは「なぜそれが必要になったのか?(why)」が書いてあることだと思います。

私がプログラミングしはじめたのは、32ビットコンピュータからなので、歴史を知りません。16ビット時代の64Kバイトの壁とか知りませんでした。
「いやぁ、昔は大変でさぁ」と言われることはあっても、具体的は何が問題だったのか、というのはあまり伝えられていないように思います。
そりゃ、今は関係ない話だし、聞かされてもしょうがないというのもありそう。

ただ、「この機能なんであるんだっけ?」という疑問を解決するためには、過去の問題点を知らないといけません。
そういう意味で歴史を知るのは重要なんです。

実装まで踏み込んでいる

本書は「機能解説 -> 実装」という流れでそれぞれの機能が説明されています。
いかにも私好みな本ですね(ゴクリ

機能解説の部分がとても理解しやすく書かれており、例え話のうまさには感嘆しました。
その後にどういう風に実装するか丁寧に書かれているので、具体的なイメージがしやすいですね。

特に素晴らしいのはメモリ関連の解説

私が特に感銘を受けたのはメモリ関連の解説部分です。
セグメント方式 -> ページング方式という段階を踏んだ説明がとてもわかりやすい。
今までこの辺りを理解できなかったのは私のせいじゃなくて、解説のせいだったんじゃないかと、本気で思いました。

あと、仮想記憶の「箱に手を突っ込む」という例えは素晴らしいです。

しっかりとした理解感

読了後すぐは自分がもってるコンピュータが「おぉ、なんかこいつのことわかる」みたいな感覚になるんじゃないでしょうか。

でも、これ16年前の本なんですよね。
あぁ、すごいなぁ。こういう本を書いてみたいもんです。