未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

コードを読む力。

誰も読まないOSのソース・コード(http://itpro.nikkeibp.co.jp/article/OPINION/20060406/234744/)ということで、ソースを読みましょうという話をしている。いろいろ細かい突込みどころはあるけどここでは言わない。http://slashdot.jp/linux/article.pl?sid=06/04/07/1435230でもいろいろ議論されている。
カーネル読書会という変な名前のオフラインミーティングをやっている。興味のある方はぜひ参加してほしい。わたしがカーネル読書会をはじめたきっかけは、コードを読むのが楽しいという変態(?)な自分としては一人でしこしこ読んでいてもつまらないからこの楽しさを誰かと分かち合いたいというところから来ている。コードを読むことを趣味にしている人なんて多くないからこそ集ってみんなでわいわいやれば面白いだろうし続くかもしれないという動機だ。出張読書会と称していろいろなところに出て行って楽しさを伝えているつもりなんだけどなかなか新人が増えると言うほどまでにはいっていない。だけど続ける。面白いから。
最初の動機は上記のように仲間が欲しいとか楽しいとかそういうところではあるが、リクルートの一環として楽しいだけではちと弱いのでいろいろ宣伝文句を考えた。

プログラマの基礎体力

プロのプログラマとしての基礎体力は間違いなくソースコードを読む力だ。大学の教養課程でプログラミングを教えるならソースコードを読む方法を教える必要があると思うのだが、どうだろうか?そのようなカリキュラムを持つ大学、専門学校はどれだけあるのだろうか?教えて欲しい。
優れた作家は優れた読書家である。大量の読書をして咀嚼して自分の肉と血から作品を紡ぎだす。その基礎体力は読書量だと思う。
優れたプログラマを作るカリキュラムというのがあったとしたらその必修科目に、「ソースコードの読み方」というのが絶対必要だと思う。ソースコードの読み方というのは単に表現しているプログラミング言語の文法を知るということではない。それはもちろんある程度は必要だが、そこに書いてあるコードの動的構造を静的に理解するという事である。プログラムの意味を理解するという事である。字面にとらわれず虚心で理解することである。
ソースコードが汚いとか見にくいとか分かりにくいとか文句を言うのではなく例え仮に百歩譲ってそうだったとしてもプロたるプログラマはその状態をすべて受け入れた上で虚心で理解することである。そこに書いてあるコメントですら批判的に受け入れた上でプログラムの挙動を理解するのである。
そのような理解する力がプログラマの力である。そしてコードを読む方法というのはテクニックがあってそれを共有することは不可能ではないと思っている。そのようなテクニックを広く共有する場としてカーネル読書会が育ってくれればと思っている。
CODE blog -- https://www.codeblog.org/
ひらメソッド -- http://hira.main.jp/wiki/pukiwiki.php?%A4%E8%A4%A6%A4%B3%A4%BD