『Write Great Code: Volume I: Understanding the Machine』を読んだ。副題に注目。予想していた以上にマシンの話だった。
自分たちが書くあらゆるプログラムは、それが現実界で動いている以上、必ず物理的な実体を持つコンピュータの上で動いている。こう動いてほしいと願って書いたコードがどんな風に解釈され、表現され、実行されるかということを、この本ではごくごくマシンの側から描いてくれる。C言語が一種の高級言語という範疇に収められているところから、その立ち位置を想像されたし。
今自分が書き、走らせているプログラムは様々な抽象の上に構築されているのだけれど、それらのあらゆる抽象化を取り去って、数値や文字列といった、プログラムが扱うデータはどんな風にメモリ上に配置されるのか。CPU への命令はどんな風にビット列として表されるのか、それを CPU はどんな風に処理するのか。メモリやディスクへの IO はどんな風に行われ、どんな風に高速化が試みられているのか。一台のマシンの中ではどんな機器が協調して働いているのか。などなど、もちろん知らなくてもプログラムを動かすことはできるが、知っていれば効率のよいコードを書けるだろう知識を広く扱っている。
プログラミングに欠かせないプロセスとして抽象化された概念が、実のところどのように現実的・物理的に実現されるか、垣間見ることができたのはとてもおもしろかった。特に CPU の働き、キャッシュの仕組みを見ると、ものすごく複雑な仕組みの上で自分のプログラムが動いていることを知って、感謝の念が湧いてくる。マシンの歓声を聞くことも、もしかしたらできるのかもしれないという気がしてくる。
この本では、こういったマシンの働きを知ることがグレートなコードを書くことにつながると言っている。実際のところ、現在のかなり抽象度の高い環境でこの知識たちが直接活用できるとは思えないけれど、例えば OS の働きを知るのにこういった土台のことを知っていることは重要だろう。出版年が古く(2004 年)、扱われるトピックも具体的な名前は古いところが時おり見られるが、本質的な部分はまだまだ通用するはず。
最近日本語訳も Kindle化 されたらしいです。洋書はこのボリュームで 2000 円しなくて安い。
Write Great Code: Volume I: Understanding the Machine: 1
- 作者: Randall Hyde
- 出版社/メーカー: No Starch Press
- 発売日: 2012/08/16
- メディア: Kindle版
- この商品を含むブログを見る
Write Great Code〈Vol.1〉ハードウェアを知り、ソフトウェアを書く
- 作者: Randall Hyde,鵜飼文敏,まつもとゆきひろ,後藤正徳,トップスタジオ
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2005/12
- メディア: 単行本
- 購入: 2人 クリック: 129回
- この商品を含むブログ (105件) を見る
この本の次によむならこの本でもよく挙げられているパタヘネか Linux カーネル(再読)かネットワーク低レイヤの本かな(どんな本がいいのか知らない)。
- 作者: デイビッド・A・パターソン,ジョン・L・ヘネシー,成田光彰
- 出版社/メーカー: 日経BP社
- 発売日: 2011/11/17
- メディア: 単行本
- 購入: 7人 クリック: 19回
- この商品を含むブログ (8件) を見る
- 作者: 高橋浩和,小田逸郎,山幡為佐久
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/11/18
- メディア: 単行本
- 購入: 14人 クリック: 197回
- この商品を含むブログ (118件) を見る