[英]Donald E. Knuth(高德納):總有一些事超越我們的理解(圖靈訪談)

楊帆發表於2011-12-16

圖靈訪談之八:專訪Donald E. Knuth(高德納)

電腦科學泰斗Donald E. Knuth(高德納)歸隱已近20載,不問世事,潛心修訂並繼續創作煌煌鉅著《計算機程式設計藝術》(The Art of Computer Programming)多卷本。 圖靈社群藉卷4A影印版出版之機,有幸邀得大師接受關於此書的訪談,並在多位社群成員留言提問的幫助下,完成了這次珍貴的訪談。

歡迎閱讀中文版

以下訪談內容為英文原文,歡迎有意者翻譯中文版。本文參與社群iTran樂譯專案。


iTuring: Chinese programmers consider you as a divine person in Computer Science. Yet China is a state of atheism. That’s very interesting. We are quite clear about your TAOCP writing process, and we know that your lectures on the general subject of relations between faith and science were very popular. We are very interested in the relation between them. Can you talk about how your faith and God help with your TAOCP writing?

Knuth: Because Computer Science is awesome and beautiful, I try to explain the parts of it that I know, in the best possible ways. Obviously I myself have no supernatural qualities, but I do enjoy telling stories that seem to have been waiting to be told. Book writing is like story telling.

On the other hand, even though Computer Science is wonderful, it isn't everything! I believe there are mysteries that lie beyond human understanding. Religion is a very personal thing, and it involves concepts that can never be proved, so I don't expect anybody else to agree with my own views on matters of faith. The main connection between my religious life and my scientific life is that I think God wants me to create things that will inspire other people to create other things.

iTuring: You spent decades on TAOCP. On behalf of all Chinese readers that have benefited or will soon benefit from it, we’d like to express our sincere thanks to you. The creation of this piece of work spans half a century till now, and this reminds us of Goethe writing Faust. Surprisingly, it still could follow the structure you built at first. So how did you build such a foundation? How do you assure your writing progress?

Knuth: Yes, it's true that I've been writing computer programs almost constantly for more than fifty years, at an average rate of more than one per week. For example, I just checked my computer and see that I've written 74 programs so far this year, as I continue to learn and explore. Of course some of those programs were short and simple, but others kept me quite busy. The process of programming naturally suggests a structure on which to build a knowledge of Computer Science. When Peter Naur and I met each other for the first time in 1967, we discovered that we had each come up with exactly the same basic outlines of the subject, independently.

After 50 years I should of course have finished TAOCP long ago. Yet I still have many accumulated notes, which will require 20 or more years to write down properly. So it amuses me that you ask how I've been able to make "progress".

What little progress I have made can be ascribed mostly to the use of "batch processing" instead of "swapping in and out": Usually I'm at work intensively on only one thing at a time. Twice a year I pause, for two or three weeks, to read the journals that have arrived in the mail; journals come in about eight times per week, and my secretary puts them into boxes. After perusing them to learn about trends, I add notes to my files, telling me what I should read in future when I'm concentrating on some other topic.

At present I'm totally engrossed in the fascinating area of "SAT solvers"; 20 of my most recent programs have been oriented to studies involving that topic. By learning the material myself, I hope I'll be better able to communicate the essential ideas to nonexperts, and to tie them together with other applications, than if I had specialized in SAT-solving all my life. Fortunately I'm now in touch with the leading experts, and they've volunteered to help debug what I write.

iTuring: We heard that, you are still handwriting the manuscript and then editing it on computer. Your TeX system has changed the publishing industry. But why do you still hand write instead of writing on computer? We are curious about that. When commenting on TAOCP 4A, Dr. Dobbs said “This latest opus is as densely packed a title as the previous TAOCP books have been; and given the density of both the content and presentation, Volume 4A is one of the few computer books these days that demands to be read in traditional ink on paper format. The sheer amount of mathematical notation in the book would make all electronic editions sans a PDF version just a collection of non-reflowable JPEGs interspersed with a sprinkling of text.” Have you ever thought about what digital writing and reading would be like in the future?

Knuth: My speed of writing by hand matches my speed of thinking, so it is not at all a "bottleneck." I can type faster than I can think; that leads to synchronization problems when I try to compose nontrivial material at the keyboard. (In fact, I wrote out the answers to your ten questions by hand first. Now I'm typing that rough draft into my Mac, polishing the style whenever possible as I go.)

Speed is usually not the most important criterion. Science cannot always be learned quickly or explained quickly. I know that my books are not easy to read ... but they could have been a lot, lot harder, if I hadn't written them slowly and carefully.

iTuring: You talked about black box in Coders At Work, saying, “It’s nice to have these black boxes but, almost always, if you can look inside the box you can improve it and make it work better once you know what’s inside the box.” We feel that it implies Hackers spirit. If that is the case, could you please describe the Hacker’s spirit in your mind?

Knuth: The Hacker's Spirit is best described in Steven Levy's wonderful book Hackers. It involves viewing a problem simultaneously at many levels, and finding new ways to combine basic concepts.

iTuring: You claimed to be a geek and say “one of the chapters in my book (Selected Papers on Fun and Games) on fun and games is called ‘geek art’”. Most Chinese readers haven’t had the luck to read this book. So would you please introduce the meaning and essentials of "geek art"?

Knuth: Really, you ought to translate that book!!

In brief, a piece of Geek Art is a work of art that appeals to me not only because of its beautiful colors and texture and form, but also because it has a technical aspect that satisfies the other half of my brain.

For example, one of the most cherished items in my collection of Geek Art was a gift that Bob Sedgewick presented to me when he completed his PhD thesis about Quicksort in 1975. It's a magnificent double-weave textile that embodies one of the mathematical patterns that he discovered as part of his research. He wove it by hand on a loom. Similarly, my wife once made for me a gorgeous quilt based on the fascinating pattern of Eisenstein primes. Last year I myself spent odd moments making some interlaced "Celtic knight's tours" from brightly colored string, cherry wood, and brass pins.

Many of my friends have also developed a taste for Geek Art. I've heard that Nathan Myhrvold has commissioned hundreds of such items, many of which were made especially for his home.

iTuring: Your TeX system is open source. And you are considered to be an important practitioner of open source. In a previous interview, you said “The success of open source code is perhaps the only thing in the computer field that hasn’t surprised me during the past several decades.” So how do you think the open source campaign would develop in the next few decades?

Knuth: Please never ask me to predict the future, or to believe what others say about it.

With respect to open source, however, there is one thing that I hope will happen (and I'm surprised that it hasn't happened already). Namely, I hope people will make it easier for users to customize their open-source distributions so that everybody can have systems that are fine-tuned to their own computers, by compiling from source code that the users own, instead of by just installing binaries. Open source has an untapped potential to be substantially better than any closed systems, because proprietary prepackaged binaries have to assume the worst case with respect to available hardware. For example, emacs works nice and fast for me, but I suspect that it would run considerably faster yet if I had not been afraid to compile it for my own machine. I did not have time to learn all the low-level intricasies of the Ubuntu distribution. (I did once recompile the Linux kernel --- but only when a wizard was holding my hand.)

iTuring: Although TAOCP is your major works, many people think TeX on which you spent ten years affected the world more. What do you think? Can you summarize the relation between Algorithm Research and actual programming, and their respective role?

Knuth: I don't like to rank one kind of useful activity over another. For instance, biologists shouldn't spend all their time studying cures for cancer and other high-profile diseases. If some of them would only make major advances to a lesser problem --- like eliminating dandruff, say --- they might in fact make more people happier more of the time!

In the long run, the fact that TeX enables literate programming might turn out to affect more people's lives in a positive way than anything else that I've ever done, because literate programs tend to be so much better for their users.

But let's not compare apples to oranges. I think every aspect of life is worth improving, and I'm glad that I've been able to live in a place and time where I've been able to contribute in a variety of different ways.

iTuring: The Chinese version of Concrete Mathematics: A Foundation for Computer Science (2nd Edition) will also be published by Turing. Can you talk about your purpose of writing it and its relation to TAOCP?

Knuth: Concrete Mathematics is a "manifesto" of how I think many aspects of mathematics ought to be taught and learned. The basic skills of algebraic formula manipulation have always been key for me. Such things are discussed in TAOCP, but only much more briefly; I was able to go into more details in my classes at Stanford, and those classes are encapsulated in this book.

iTuring: "高德納" seems the only foreign name you have. It produces a sense of intimacy for Chinese readers. We just know it was given by Frances Yao before your visit to China in 1977. What is the story behind it?

Knuth: Frances told me that she chose Gao as surname because I'm tall, and because the consonants G and K are similar. The De-Na part is, of course, a nice takeoff on Donald, with a respectable meaning. She gave the name Gao Jing-Lan to my wife Jill.

And my children John and Jen also came with us to China, aged 12 and 11 --- they played nonverbal games with Chinese children in the city parks. Frances named them Gao Xiao-Qiang and Gao Xiao-Zhen (see the index to Volume 2).

iTuring: We have translated your introduction of the organ and have read your comparing writing to playing the organ. Would you like to talk about the impact of music on your life and research?

Knuth: Music is my main avocation, and it is featured in four chapters of Selected Papers on Fun and Games. In odd moments, after I've already done more than a day's work on TAOCP and need a break, I've recently begun (somewhat tentatively) to try my hand at composing new organ music, finally acting on some plans that I made in the 1960s. Even though I know that other people can do such things much better than I, an inner voice tells me to sing!

iTuring: Last, We’d like to convey the most gracious greetings from all Chinese readers. Wish you good health! We’re looking forward to the next volume of TAOCP.

Kunth: Thanks again for your stimulating questions.


更多精彩,加入圖靈訪談微信!

相關文章