Sunday 9 April 2006

プログラムを読むこと



毎年、修士対象にプログラムの読み会をやってます。和田英一先生のまねです。今までに読んだのは、

 Java Virtual Machine (Kaffe)
 nkf (他のを読む練習に)
 named
 Linux Kernel
 gcc (2回)
 Linux Kernel (TCP/IP)
 Emacs (含む elisp 講習会)
 gdb
 Squeak

印刷しません。Emacs と etags でだいたいやってます。global とかも使う。HTMLに変換して読むのもやるがだめだめだね。Linux Kernel はそれでは読めないので、qemu+gdb でtraceしながら。Java のプログラムは、まだ、読んだことないな。自分では Eclipse は少し読んだ。

割りと最低だったのが named 。DEC の職業プログラマが書いたらしく、いわゆる構造化プログラミングっぽく書いてあって、読みにくいこと夥しい。

gcc は面白いが難しい。何年かかけて読むものだね。論文も必要か。parser は易しい。だが、4.0 で変更になった。Yacc も自分では実は読んでたりするんで「Yacc なんてだめだよ」と思っていたので、それが証明されたのはうれしいです。

Linux kernel も量が多いので2回でも、まだ、ちょっと足りない。TCPも入口までだったし、メモリ管理は読んでないし。スケジューラとかは意外にやさしい。

期待外れだったのが gdb 。module 呼出しの塊で、どうってことない。アルゴリズムとかで見るものが余りない。時間が余ったので、kernel のAPIの方も読みましたが、そっちはしっちで、VM経由でどうやってデータをやり取りするかって言う細かいことが多くて。動かすのは大変だろうけどね。ソース読んで初めて、プロセスに直接接続できるってのを知ったのは恥ずかしいことかも。

Squeak は、全然違う。でも、Smalltalk 時代のことを結構知っていたので、僕はスムースに入れたが、他の学生はどうだったんだろう? 自分自身で書いたVMとか、やっぱり面白いいね。さわりのみ。

今年は何読もうか? 本がある Ruby とか Perl 6 (あるのか?!) とかいう説もあるが気が進まず。

スウェデーン人の同期の人は学生時代「読み会より書き会やったら?」とか言ってたけど、準備が大変なんだよ。

No comments: