これ、Perlにも言えてるな(苦笑)

革命の日々!-誰も読まないOSのソース・コード
結局いいたかったのは
  • Linuxはそんなにバグバグじゃないよ。コードの質たかいよ
  • でもuglyな仕様は、すごいたくさんあるよ。そこはuglyさ加減を楽しもうよ
  • C言語できなくても気にすることないよ。カーネル読んでいけばそのうち覚わるから
  • 赤松ナントカはシッタカ・うそつき

というより、ある程度以上の規模と歴史を持つソフトウェアなら、ほとんどこれが成立すると思う。

もう昨今のLinux KernelとかPerl5とかといったものは、もう原作者だって全貌を知らない。いや、そのモジュールの一つに過ぎないEncodeだってメンテナー全部知らない(爆笑)。だってあれは*.pmや*.xsだけでなくて、*.ucmまで全部読まないと「読んだ」ことにならないんだもの。

wc `perl -aple '$_=$F[0]' MANIFEST` | perl -ple '1 while s/(?d+)(?d{3})/$1,$2/'
                Lines     Words      Bytes
Encode-2.15   287,435 1,667,127 10,527,592 total
Perl-5.8.8  1,606,151 6,931,075 52,846,372 total

これをすみからすみまで読んでいられるほど長い人生の人なんてそうはいないべ?

こういった「巨大なソースコード」とつきあうにはどうしたらいいか?

読んでreadはいけない。眺めればbrowseいいのである。実は「読んでいる」というのは、「眺め方を知っている」という風に解釈すればいい。

ただ、いきなりこれをぽーんと渡されても、どこから手をつけていいかわからないだろう。

でも大丈夫。「両側」から責めればいい。

一つはボトムアップ。自分が知っている領域から切り崩して行けばいい。こうした大きなものは、単に大きいのではなくてちゃんとフラクタルな構造になっている。wordが集まってclauseになり、節が集まってsentenceになり、文が集まって段落paragraphになり....これが集まって世界worldになっているのは、ソースコードだろうが法律Legal Codeだろうが変わらない。「はじめてのプログラムが」print "hello, world!?n"なのは伊達じゃない。

しかし、それだけだとまだ世界を眺めたことにならない。そこで登場するのがトップダウン。要はその世界の構造を決めた人の言葉に耳を傾けるわけだ。CならK&R、BSDならBeastie、PerlならCamel、といった具合に その点やっぱRubyistは恵まれているよなあ。教祖の言葉を日本語できけるんだもん。

それで、ソース読みだけど、カーネルの方がPerlよりも駱駝と思うよ(←Larryの親父ギャグ)。マクロでまっくろだもん、Perl5のソースって。PugsるのにHaskell砲を使ったAudreyは、やっぱすごい美的感覚に優れていると思う。もっとも一旦SVがわかっちゃえばこっちのものなんだけどね。

私がPerlのソースを読むのは、Larryのおちゃめさに萌えたいからかな:p

あと、さらに強力なのは、「読んでる人にきいちゃう」って奴。知っている奴を知っているというのは、ある意味自分で知っているより強力だもんね。昔はこれが大変だったけど、今は検索一発だし。

重要なのは、読もうと思った時にいつでも読める事と、直そうと思った時にいつでも直せるってこと。これが当たり前のようで当たり前でなかったんだよね、実は。オープンソースとネットがもたらした一番のことは、これに尽きると思う。それ以前は「これを見たら$10萬」だったもんね。Unixのソースって貞子だったのか(爆)

それで、赤松氏なのだけど、なぜか誰もぐぐってLink載せてないようなので紹介しときます。

神戸情報大学院大学 教員紹介/赤松 徹
主な研究実績
  • 『CAP-X入門』
  • 『最短合格シリーズ/第二種情報処理技術者試験』全6冊
  • 『CASL集中ゼミ』『SQL集中ゼミ』『テクニカルエンジニア ネットワークテーマ別問題集』
  • 月刊誌『I/O』(工学社)に「CAP-X入門」7年間連載
  • 『月刊情報処理試験』(ソフトバンク)に「CASL入門」10年間連載
  • 『LinuxJAPAN』(五橋研究所)に「NetworkTIPS」5年間連載
  • 『日経Linux』に「カーネル2.6ネットワーク」を連載開始
  • CAP-Xですかそうですか。

    Dan the Source Surfer