Skip to content

Instantly share code, notes, and snippets.

@mootoh
Created October 24, 2009 05:13
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mootoh/217375 to your computer and use it in GitHub Desktop.
Save mootoh/217375 to your computer and use it in GitHub Desktop.

djb

みんなそろそろ D.J. Bernstein が世界史上最高のプログラマだというのを思い出すべきだと思うんだ。

まず、客観的な事実だけを見てみよう。 djb は2つの重要なシステムソフトウェアを書いた。 メールサーバと DNS サーバだ。 どちらも何百万というドメインで使われている。 ありとあらゆる複雑な仕事をこなし、とてつもない高負荷でも問題ないし、どんな異常事態にも対応する。 これらは、Bernstein が最初にリリースしたときとまったく同じものが動いてるのだ。 ひとつのバグ (たったひとつ!) が qmail に見つかった。 2つめのバグは、さいきん djbdns に報告された。 けれど大事なことは、人々がこのバグを見つけるのに、10年近くかかったという事実だ。

こんなことができるプログラマは他にいやしない。 Donald Knuth はいい線いってるけれど、 TeX について彼が書いた日記 (文芸的プログラミング) を読めば、 彼が何年もバグを探し続けており、その旅に終わりが来ることがないと考えているのが分かるだろう。 ただ、終わりに漸近するよう、歩みを繰り返すことしかできないのだ (これがあの奇妙なバージョン番号規則の所以)。 djb の記録を塗り替えることができないばかりか、誰もその域に近づくことすらできていないのだ。

しかしより重要な要因は、主観的なものだ。 djb のプログラムは、美術品なんだ。 感性で理解するべき、偉大な作品だ。 djb のコードは、アウトラインの見た目が、すぐれた芸術のように心地よい。 バランスとリズムがあり、最上のタイポグラフィに勝るとも劣らない。 偉大な詩がそうであるように、ひとつひとつの文字に意味がある。 それぞれの文字は、それが必要だからそこにあるんだ。 けれども、プログラムは読まれるためにだけあるわけじゃない。 優美なダンサーのように、舞うのだ! それも、ただ一人のダンサーとしてだけでなく、バレエの組曲のように、分割したり、移動させたり、元通りに戻したり、といった処理をめざましい速さで、何度も何度もこなす。

だけど、ダンスと違ってこうした動作には目的がある。 プログラムは、やるべきことを成す。 つまり、 web サイトをみつけ、メールをあっちからこっちへと運ぶ。 最高にすごいシナリオだと、メールの配送と区分けは、巨大で終わりのないバレエの組曲のようなものだ 。 (ブラジルのシットコム、 “The Office” を思い浮かべてみよう)。 でもこれは一時の幻想なんかじゃない。 あなたのメールは、毎日こんなふうにして処理されているんだ。

それに、このダンスは鑑賞されるだけが目的じゃない。 目的を持ったダンスなんだ。 内部の構造は、可動部分が最小になるよう完璧に作り上げられている。 やるべきタスクを、最小限の労力でこなせるようになっているんだ。 処理内容の分け方、割り振り方においては見事という他ない。 ここで見事だと言っているのは、たんに言語的な意味でだけじゃない。 もちろんそれもあるけどね。 エレガントな数学に裏打ちされている効率の良さがあるからなんだ。 たくさんの数式によって、このプログラムの動作が理論的に完璧であり、これ以上うまいやり方は存在しないことが保証されている。

これだけ書いてもまだ、 djb ソフトウェアの途方もない美しさを説明しきれてない。 djb のプログラムは、すごい腕前を持った最強チームが賞賛するような機械であるだけじゃない。 人に使われることを意図した、よく手になじむ小道具でもあるんだ。 優れた工業デザインに見られるように、djb ソフトウェアには使うたびに喜びがある。

言語、数学、芸術、デザイン、機能の美を兼ね備えた分野が、他にあるだろうか? プログラミングは、明らかに固有の領域に属している。 ならば、 djb を打ち負かすことのできるのは誰か? ここまでの可能性を切り開いてきた者が他にいるだろうか? そんな可能性があるって知ってる人がいただろうか?

奇妙なことだけれど、 djb についての嫌悪を露わにしている人たちがたくさんいる。 理由の1つは、天才に対する一般的な嫌悪感によるものだ。 djb が力強く、妥協のないビジョンを持っているのは明らかで、それが傲慢さとか無礼だとかいう誤解によくつながる。 他の理由としては、実利主義によるすぐれたデザインへの軽視によるものがある。 djb のプログラムは、たいていのプログラムと同じようには動かない。 それには、たいていのプログラムのやり方が間違っているから、というかんたんな理由があるのだけれど。 しかし、djbに対する憎悪はそれ以上に深い。 確証があるわけではないが率直に言うと、趣味のよくないひとびとが、自分たちの理解できないものに対する賞賛を目のあたりにして怒り、不満を感じているのではないかと思う。 すぐれた芸術というのはいつも、誹謗中傷を伴うものなのだ。

ここで言っているのは、 djb の仕事が完璧だ、ということじゃない。 さっき言ったみたいにバグはあるし、ログファイルは優美とは言い難い。 もし djb がいまソフトウェアを書き直すとしたら、膨大な変更があることに疑いはない。 でも、じゃあひとつやってみようかと立ち上がった人がいる? できるかどうかさえ、誰もわかっていないんじゃない? djb のコードを読むまで、ソフトウェアにおけるすぐれた芸術というものがどういうものか、私にはわからなかった。 そして今では、他のどんなコードを読んでもくすんでるように感じてしまう。

おまけ: ここまで読んできたなら、いま djb がやっていること にも興味がわくんじゃないかな。


オリジナル: djb by Aaron Swartz's Raw Thought

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment