ユビキタスの街角

Tuesday, May 27, 2008

Knuth先生にアルゴリズムを教えたよ

Donald Knuth先生の 弟子の播口さんに誘われて、 Knuth先生と夕食を御一緒させていただいた。 185cm以上はある大きな人で、想像よりも若かった。 1938年生まれだからまだ70歳らしい。 とても頭が良さそうな顔をしている。当たり前か。

世間話の中で先生の執筆環境について聞いてみた。

M: 「文章書きとかどういう環境でやってるですか?」
K: 「大きなマシンも使ってるけど文章とかはLinuxノーパソでEmacsだね」
M: 「Emacsなんですか。仕様が変で困ったりしませんか?」
K: 「変な機能は使わないからね。自分で色々カスタマイズしてるし」
K: 「たとえば行に色をつけるElispを使ってる。参考文献リストとか書くときに、 大事なのとそうじゃないので色を変えるんだ」
K: 「CWEBを書くための仕組みも作ってる。まだ書いてないモジュールのリストは全部 木構造でダンプしてあって、後でそのリストから適当に選びながら実装していくんだ」
K: 「それからキーボードマクロなんかも活用してる。こうやって(??どうやって??) ファンクションキーにいろんな機能を割り当てたりするんだ」
M: 「私はキーボードマクロの自動定義てのを使ってるんですョ」
K: 「自動?」
M: 「たとえば“abcabc”と入力してから「繰り返しキー」を叩くと“abc”が自動定義されるんです」
K: 「へー。どうやるの?」
M: 「入力履歴の中に繰り返し部分があったら自動定義しちゃうんですよ」
K: 「へー。でも“bbaabbaa”みたいなときはどうするの?」
M: 「一番長いのを登録します。この場合は“bbaa”ですね。“a”じゃなくて。」
K: 「なるほど」
M: 「このソフト今度あげます〜」

予想通り現在もガンガンプログラムを書いているようだ。 もっぱらアルゴリズム等の検証用であって配付する性質のものはないらしいが。 CWEBは本当に使ってるようだ。 つまりCをメインに使っているらしい。 CWEBとChangeLogとMakefileとを駆使して各種環境用のソースを自動生成するみたいなことも言っていた。 こういうやり方はTeXの昔からそう変わってないようだ。

ちなみにエンドユーザプログラミングについても少し話を振ってみたのだが興味無さそうだった。 まぁそうだろうねぇ...

それにしてもとても感じの良い人だった。気さくな天才素晴らしい!