udrepper: Memory and Cache Paper
赤帽の人の論文です。
enbugさんはとっくに紹介されておられます。Drepperさんのblogで知りましたが、チェック間隔が2週間なもんで。
あれですよ。いまどきは、プログラマからメモリは見えない存在になっていますから、この論文読ませても効果が出にくいでしょう。
システムプログラマとアプリプログラマの対立がそこかしこで感じられます。
分かりやすい例では、JavaプログラマとC/C++プログラマです。
小さなマイコンのアセンブラから初めた我々にとって、C/C++は高機能マクロアセンブラの延長戦であり、JavaはBASICインタプリタの洗練にしか見えません。
しかしJavaやC#から始めた人、もっと言えばPHPやRubyから始めた人にとってメモリは直接アクセスできない何かでしかなく。
マイコン野郎の頭の中のメモリのイメージを可視化する必要があると、もう何年も前から考えています。
言葉で書くと、変数や文字列や構造体はメモリの断片としてフラットなメモリ数直線上に並んでいます。数直線の上には半透明の点線でポインタが示されます。お分かりいただけるでしょうか。
UMLのコラボ図と大して変わらないこの図ですが、ベースが、チューリングマシンの紙テープ様である点が違います。UMLでは、そこが隠蔽されているわけで、本質に近づけるわけですが、もう一方の本質、つまり内部の動作、からは遠のいてしまっているのです。
加えていえば、HDD上やネットワーク上のデータもこの紙テープと同じです。私はストリームという概念があまり好きではありませんが、つまりバイト列、ビット列です。