Donald Knuth
569
In other words, there’s still so much more beyond any five pages of my
book that you can make a lifetime’s worth of study, because there’s just that
much in computer science. Computer science doesn’t all boil down to a
bunch of simple things. If it turned out that computer science was very
simple, that all you needed to do was find the right 50 things and then learn
them really well, then I would say, “OK, everybody in the world should
know those 50 things and know them thoroughly.”
But it isn’t that way. I’ve got thousands of pages and exercises, and I write it
down and put it in the book so that I don’t have to have it all in my head. I
have to come back to it and learn it again. And I have the answers to the
exercises because I know that ten years from now I won’t remember how
to do the darn thing and it will take me a long time to reconstruct it. So I
give myself at least the clues to how to reconstruct stuff.
I’m constantly torn between saying, “Well, this is too complicated; you’d
better not talk about it at all,” and the other feeling that people are saying,
“But all you’ve put in your book is just so trivial; there’s nothing good.” I can
argue at any particular time that I should cut everything out or that I have
way too little.
What it really boils down to is, all of the really cool things that can be
explained in a half a page have to be in my book, on some half a page. And
all the things I’ve seen that are just too good to be left out. So I find out that
the section I just wrote about binary decision diagrams, it turned out that I
had more than 260 exercises because there just was more and more stuff
that seemed to me there would be more than a trivial audience for. But I’m
not saying everybody is the audience for all 260 of these things. Still, I know
there are a large number, for each of these, that are going to appreciate it.
I consider it amazing that some people do go cover to cover in my books. In
most cases I know that people are going to pick and choose the parts that
they like. But they know that if they dig further then they’ll get something
that has only one subset of jargon describing it instead of all different kinds
of notations and terminology—if I didn’t write the books it would be much
harder for people to find stuff out. That’s what turns me on.
Also, I try to explore the territory in a way that is most relevant to a
practical programmer rather than the most academic cachet for getting