ハッカー紹介: Poul-Henning Kamp "君達のやり方は間違っている"

「ハッキングのやり方」を探しいてる少年達へ: この記事はオンライン不法侵入方法の説明じゃないです。コンピュータセキュリティーは「アップルパイの作り方」のようにレシピを読んですぐに真似できるようなものじゃない。特殊な世界観と長年の経験をつまないと身につかない技です。もし、「コンピュータで知恵と技の限界に挑戦する」という意味の「ハック」に関心があるひとは以下、読んでください。


acmのサイトにこんなタイトルの記事が出た。
http://queue.acm.org/detail.cfm?id=1814327

この数十年間の間、Knuth様をはじめとするコンピュータサイエンティストが最適としてきたあるアルゴリズムを10倍はやくする方法があるというのだ。こんな大胆なことを言う奴は誰だ? その名はPoul-Henning Kamp。Jordan Hubbard http://en.wikipedia.org/wiki/Jordan_Hubbard に続いてFreeBSDの二代目リーダー(?)を15年つとめ、FreeBSDに大量のシステムコードを貢献した男だ。

http://en.wikipedia.org/wiki/Poul-Henning_Kamp

ルータメーカーD-Linkが彼の管理するNTPサーバを乱用したとして、喧嘩した話は有名。
http://en.wikipedia.org/wiki/NTP_vandalism

「bike shed」という表現がオープンソースプロジェクトの議論でよく出る。これは彼が作り出した(あるいはこの業界に広めた)言葉だ。何で「駐輪場の色」
なのか?その話が面白い。随分前に読んだんだがこんな話だったと思う: あるジャーナリストが政治かビジネスのプロジェクト管理について書いた本で、デンマークの議員の決議の様子を書いた下りがあった。原発のエキスパートが技術的なプレゼンを長々とした後、議員達は全員一致ですみやかに決議した。次の議題が「駐輪場の色」だった。これには各議員が「青がいい」いや「赤だろう」と譲らず決らない。どうして国家の安全にかかわる大問題を議論もせずに決めるのに、「どうでもいいようなこと」となるとデッドロックになるのか?ジャーナリスはこう分析した: 理解できな難しいことには口を出す余地がない。わかったフリをして賛成するのが得策だ。しかし、人間の心理としてやはり、問題の重要性とは別に意思決定に参加したいというのがあるらしい。簡単で理解のできる問題になると皆な、待ってましたとばかりに飛び込むのだ。この本を読んで感銘を受けたPHKはソフト開発も誰でも意見できる「どうでもいいようなこと」ですすまなくなることを「駐輪場の色問題」と呼ぶようになった訳。

update: 駐輪場(自転車小屋)の色問題をソフト界に広めた最初のポスト。1999年にPHKがfreebsd-hackersのメールリストに投稿したもの。 http://www.freebsd.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers

FreeBSD引退後は「varnish」http://en.wikipedia.org/wiki/Varnish_cacheというhttp proxyを開発しユーザランドで活躍している。varnishの高速さは大好評で特にreverse proxyとして、squidにかわる定番となりつつあるようだ。

彼のpet peeveはバーチャルメモリがあたかも無いようにシステムソフトを構築する開発スタイルだ。以前の記事ではsquidの例を挙げて「70年代風プログラミング」と呼んでいる。

"You are doing it wrong" 「おまえらのやり方、間違っている」

このポストhttp://queue.acm.org/detail.cfm?id=1814327がその意味を技術的レベルで説明してくれる。彼が言いたいのはこういうことだと思う: OSがバーチャルメモリという素晴しいシステムを提供しているんだから「bare metal」上で物理的なメモリを操作するようなコーディングをするな。 VMをうまく利用し、それと干渉しないようにすれば簡単に高性能がシステムができる。

コンピュータサイエンスのアルゴルズム分析は数学的には正しいが、VMという近代的な計算環境を考慮に入れていないので、現実的には不適合と言っている。これが "You are doing it wrong" と彼にいわしめるところだ。Knuthのような神のアルゴリズムが適用されるべきではない、というのは無謀な宣言のように思えるが、PHKが言っているのだから一読の価値はある。

具体的にはHeapにB-Treeの要素を取り込んだ「B-Heap」というデータ構造を使うことにより、現実的なプロダクション環境で既存のHeapの10倍のパフォーマンスを出すということをアルゴリズム分析やチャートを使って証明しているのだと思う(テングはまだ精読・理解に至っていない)。

詳細に関心のある方は原文を呼んでください。
http://queue.acm.org/detail.cfm?id=1814327

PS: Poul-Henning Kamp氏はKnuth氏の分析が間違っていたとは決して言っていない。彼を「天才」と呼びリスペクトしている。ただ、VMのある近代的な環境が、古典アルゴリズムの仮定しているものと違い、あてはまらなくなったと主張しているにすぎない。