D. E. Knuth (クヌース) について

本を読んでいるとき,あるいは人と会って話しているとき,その人の思い描く世界を見てみたいといった思いにとらわれることがある.たとえば,本についていえば,“The Art of Computer Programming”を読んでいるときなどである.このエントリでは,その本の著者である Donald E. Knuth(ドナルド・クヌース)について,雑感のようなことを書いてみたい.


コンピュータに関わりのある者で,D. Knuth のことを聞いたことがないものはいないのではないか.チューリング賞を受賞した,偉大な計算機科学者であるが,特に,TeX システムの開発と,“The Art of Computer Programming”(以下,慣例により TAOCPと略す)の著者として有名だろう.この TeX (私の場合は主に LaTeX) と TAOCP には,学生の頃からお世話になり,また苦労させられた.


TAOCPは,乱暴に言ってしまえば,アルゴリズムの専門書・百科事典である.しかしながら,一般的なアルゴリズムの専門書とはだいぶ趣を異にしている.このTAOCPについては,和田英一先生の解説(「20世紀の名著名論“The Art of Computer Programming”」,情報処理,vol.47, no.3, p.315, 2006年3月)がその特徴をよく伝えており素晴らしいので,ここに引用しておきたい:


Life Workとはこういうのを指すのであろう.第1巻の上梓は1968年.著者30歳の時だ.その時から全体で7巻12章の計画ができていた.爾来38年,南総里見八犬伝の28年を凌駕する星霜を経て未だ道半ば,刊行中である(注:2006年当時).

 一気に最後(7巻)まで書き下すのでなく,すぐ第1巻の改訂を始め,かつ正確を期すべく,TeX やMetafontまで開発し,その後の版からはそれを使って製版している.1,2巻は第3版,3巻(6章まで)は第2版まで来た.ところが4巻は噂は前からあったが,なかなか姿をみせず,やっと2005年になって,分冊4の2(7.2~7.2.1.2節),4の3(7.2.1.3~7.2.1.5節)が出た.(中略)

 己は何でも知っているという基調の完全主義の書である.往古の本まで引用されている.アルゴリズムの説明に必要な定理は残さず書き,証明も手抜きしない.たまにはこの部分は問題某を見よとあり,そのためか問題には詳細な解答がついている.そこにも重要なことが述べてあるので,解答も読まねばならない.

 本書で特徴的なのはアルゴリズムの手間のO記法に出てくる定数を決めようとする態度である.つまりnがどのくらいまではアルゴリズムAがよく,その後はアルゴリズムBがよいというように.

 それゆえ本書ではMIXという機械語を定義し,アルゴリズムはすべて自然言語(英語)で記述後,MIXで実装し,実行時間を正確に算出する.


私はアルゴリズムの専門家という訳ではないのだが,アルゴリズムのあるトピックについて深く調べようとすると,このTAOCPをひもとかざるを得ないことは多々あり,つまみ食いのように読んできた.読むたびに,本書の徹底性や厳密性には感銘を受ける.ただ,上記にもあるMIXという機械語がたいへん独特なもので(上記解説によれば,MIXのことを「奇怪語」と言う人もいるそうだ),しばらく間をあけて読むと, MIXによるアルゴリズム記述を読むのに苦労させられる.TeXのプログラミングもそうだが,Knuth は独特なセンスを持っているようである(この点については,以前「Guy Steele Jr. について」というエントリで簡単に触れた).


Knuth が TAOCPを執筆し始めたのは1962年と言われており,1, 2, 3巻の初版が出版されたのは,それぞれ 1968, 1969, 1973年であった.4巻の刊行が始まったのが2005年であるから,3巻から4巻(の一部)を出版するまで30年以上かかったことになる.Knuth も高齢であるし,ひょっとしたら4巻以降は出版されないのでは,と危惧したこともあった.また,Knuth は,完全主義者故に TeX や Metafont を開発したが,これに10年ほどかかっている.もし TeX を開発せずにTAOCPに専念していたら,といった思いは,多くの人が考えたことではないか.そういったことから,第4巻の刊行が始まったときは,たいへん深い感慨を抱いたものだった.


TAOCPは,執筆開始からほぼ50年近い年月を費やしている,まさにライフワークである.畢生の大事業といってもいいだろう.以前,松井簡治が大日本国語辞典の編纂に45年をかけたという話をこのブログのエントリに書いたことがあるが,非凡な学者が,非凡の努力を気の遠くなるような時間継続してなしとげたものがTAOCPである.このことを思い,重くて分厚いハードカバーのTAOCPの一冊を手に取ると,大げさに言えば,敬虔な気持ちにとらわれるのである.


もちろん,このような,Knuth の思い描くTAOCPの全体像を早く見てみたいというのは,読者よりも Knuth 本人が強く感じていることだろう.たとえば,TAOCP 1巻第3版の Knuth 自身による序文から引用してみる:


The Art of Computer Programming is, however, still a work in progress.  (中略) My files are bursting with important material that I plan to include in the final, glorious, fourth edition of Volume 1, perhaps 15 years from now; but I must finish Volumes 4 and 5 first, and I do not want to delay their publication any more than absolutely necessary.


(拙訳)

しかしながら,The Art of Computer Programming は,今もなお執筆中の著作である.(中略)私のファイルは,おそらく今から15年後に出版される,第1巻の最終版であり栄光ある第4版に含むことを予定している,重要な題材で溢れかえっている. しかし,まずは4巻と5巻を完成させなければならない.私は,その出版を,どうしても必要とされる以上には遅らせることを望まない.


この序文が書かれたのは,1997年である.当時すでに60歳になんなんとするKnuthが,その15年後に最終版となる予定の第1巻,および,4, 5巻の完成を目指しているのである.著者の TAOCP にかける思いに胸を打たれざるを得ない.また,Knuth は敬虔なクリスチャンとして知られている.そのKnuthが,第4版を「glorious edition」と書いたとき,おそらく万感胸にせまりくるものがあったのではないだろうか.


スケジュールでは,Knuth が77歳となる2015年までに,1, 2, 3 巻の最終版,および4巻,5巻が出版される予定になっている.TAOCPのページによれば,“Volumes 1--5 represent the central core of computer programming for sequential machines; the subjects of Volumes 6 and 7 are important but more specialized.” とのことである.そして,God willing,これは文字通り神の思し召しがあればということだろう,5巻の完成後,6巻以降を出版していきたいと述べている.年齢のこともあり,Knuth 自身も5巻までの出版を,一つの区切りと考えているのではないか.だが私は,5巻まではもちろん,6巻以降のTAOCPも読んでみたい.Knuth のライフワークの完成を見届けたいと思う.そんな息詰まるような,祈るような思いを,私だけでなく世界中の多くの人がしているのではないかと思うのである.





追記 (2023年1月14日)

和田英一先生の以下の記事が非常に興味深かったです:

Knuth: The Art of Computer Programming の話 | IIJ Engineers Blog



コメント

このブログの人気の投稿

LaTeX メモ - 数式における「|」 (縦線, vertical bar)の扱い(その2)

人間はどんなところでも,どんな時でも何歳からでも学ぶことができる

ブログを始めるにあたって - 継続は力

へんろう宿 (井伏鱒二)

イエスは地面に何を書いていたか