ひらメソッドを読んでみた。

最近、人気の高いコードリーディング手法であるひらメソッドを読んでみました。

ひらメソッドの重要ポイントは、

  • ボトムアップに関数を読んでいく
  • 安心して忘れることができる環境
  • 記憶しなければならない箇所を絞り込むことができる

ってところですね。

今までの僕のコードリーディング手法を振り返ると・・・

lsの場合

  • 「lsのコードを読んだことのない奴はプログラマじゃない!!」と、青木さんが言ってたので、GNU lsソースコードを入手。
  • GNU lsが読みにくかったので、FreeBSDのlsのソースコードを読んでみることに。
  • lsのusage()から読んだ。
  • (void) fprintf("Usage: ls ...");という謎のコードを発見。
  • manを読んで、fprintfの戻り値を確認した。

確信した

この手法は間違っていない!!

lsのusage()からボトムアップで進んでいけば、カーネル全体が把握出来るのではないか!と思った。

ついでに、

Rubyの場合

  • RHGを見て面白そうだと思った。
  • Rubyのソースを入手。
  • Rubyのクラス構造体を発見。(全体像を見渡せた)
  • RHGを見たら超重どころであった!!
  • ++演算子の実装に疑問を持った。
  • yylex()を読んでみた。
  • ++演算子が定義されていない事を発見。
  • 構文解析を理解するために、電卓作ってみた。

確信した

この手法も間違っていない!!

Rubyのyylex()からボトムアップで進んでいけば、カーネル全体が把握出来るのではないか!!と思った。

トップダウンで進み、ボトムアップで読む

ボトムまで辿り着きました。後はアップするだけ。

でも、

アプリからやると、zshも読まないといけなくなるな・・・(汗

ってことは、Konsoleも読む必要がある。

すると、xtermも読む必要がある。

そういえば、KDEを読まなければいけなくて。

そうなると、Xを読む必要もある。

そうだ、libcも。

gccも。

おぉぉぉい。カーネルに辿り着くまでに何年かかるんだ!!!!!!!!!!!!!!

やる。

やるっきゃない!

ひらメソッド大作戦。

  • lsのusage()を起点に。
  • Rubyのyylex()を起点に。
  • カーネルのブートを起点に(挫折ポイント)

カーネルを読む!

  • 僕が死ぬまでかけて!!
  • 超まったりペースで(重要)