コンピュータ・サイエンスの体系的知識

コンピュータ・システム -プログラマの視点から-を50日かけて読んだ。

内容としては、アセンブリからCPUの論理回路、仮想メモリやリンカなど多岐にわたる。

低レイヤを体系的に学ぶが、本のタイトルにもある通り、どうやって使うことで効率的なプログラムを書けるのかという使用者の視点で各章が締め括られるのが良い。

具体的には、アセンブリ言語とCPUの論理回路を学ぶことで、コンピュータの命令がどのように実行されるかを知る。 それらを元に考えると、コンパイラの最適化によってループアンローリングされやすいコードが分かる。

メモリとキャッシュの仕組みを知った上で、時間的局所性と空間的局所性を考えたコードが書けるようになる。

キャッシュメモリに関しては、この動画のシリーズがわかりやすく面白い。