SQLiteのコードリーディングとか。

社内の若手(20代)のエンジニアと話をしていたら、マジメにソフトウェアのお勉強をしたい、とのこと。
色々とオススメしつつ、実装を読んでみると得るもの多いよとかいうお話ついでに、「RDBMSの実装を読んでみたら?」と無責任サジェスチョン(!)。

ちょうど探索アルゴリズムがという話が出たり、彼はDB周りにからむことも多そうなので、RDBMSのコードならOSに近いlayerも見えるし、B-treeとかlogicも分かるし、SQLの言語処理系も見えるしと、幅も広いし実用的だし、役に立ちやすいという意味でも良いかな、と。..
さて、お勉強という用途なら何が良いかな、、とさくっと探してみて、SQLiteあたりなら、量も現実的だし、ドキュメントもコード内のコメントも比較的キレイにまとまっていたので、薦めてみる。:)

テスト用のコード

ちなみに、SQLiteはテストコードが本体より長い、それくらいQualityに気をつかっているんだよーという話はさくっときいたことあったのだけれど、、、

As of version 3.8.0, the SQLite library consists of approximately 84.3 KSLOC of C code. (KSLOC means thousands of "Source Lines Of Code" or, in other words, lines of code excluding blank lines and comments.) By comparison, the project has 1084 times as much test code and test scripts - 91452.5 KSLOC.

「長い」というか、1000倍だった。

リファレンス

ここらへんも併せて読んでおけば、ちゃんと読めるんじゃないのかなー、と。

低レイヤを偲びつつ

OSに近いレイヤについては、必要に応じて一度はこういった本とかも目を通しておくと良いと思う。 手元に置いておく使い方でもいいし。

第3版になって、MacOS X(Darwin)についての記述も増えたりと、updateされている感じ。
翻訳は、安定の大木先生。:)
Kindle版もあるので、さくっとOneClickしてみたり。

(余談) アメリカのエンジニアリングなインタビューあれこれ

どうやら彼は、グループ会社の海外拠点(USA)のインタビューを受けてみたものの、そこでの面接はいわゆるシリコンバレー的な、アルゴリズムに関する質問が中心で、ことごとく答えられそうで答えられなかったのがキッカケらしい。