views:

277

answers:

2

I will soon start writing a book on a certain subset of algorithms. Many people, including myself, praise The Art of Computer Programming to the top of their lungs, believing these volumes are a work of art in mathematics and computer science. However, I can't put my finger on what it is that makes TAOCP mythically great, mostly when compared to Cormen (quite math-heavy itself) or others of a more practical kind (Algorithms in Java, C++, etc.). Alas, I don't have the geniality of Don Knuth, so I can only hope to stand on the shoulders of giants. So, for those who have actually read TAOCP, what is it that makes it great?

Distilled Properties: A reference book (which includes history), painstakingly created (tracking middle names of authors, writing them in their own language), it was the first of its kind (first one in the later 60s), exhaustive (this one is hard), he [Knuth] offers prizes for errors, digs up history no one else remembers, encyclopaedic, authoritative, good-natured, humorous... I'm sure there are other characteristics, but these are indeed a start, and a good one. Thanks to everybody.

+9  A: 

That's a great question, though admittedly a very subjective one.

While I have no wish to belittle Knuth's greatness (especially since he created LaTeX), I have no doubt that part of the popularity of TAOCP comes from the fact that it was one of the earliest books on algorithms that were aimed at the general (though scientifically-oriented public). While the book has many qualities, being first helps. Look at how everyone still buys the Design Patterns book, even though there are today much better resources on DPs.

Knuth managed to take a lot of the knowledge that at the time was either captured in scientific papers or in academic practice and distill it into an excellent "recipe book" where you could find what you needed and how to use it even without understanding the concerns. You could use it to learn algorithms, but also as a reference book. Even people who weren't computer scientists were buying it. I remember as a teenager being surprised to find an ancient tome of TAOCP in Hungarian in my grandfather's bookshelf, even though my grandfather was a mechanical engineer who just had an interest in sciences and didn't know how to program a computer.

CLR is a great book for what it is - a college textbook. When I go back to it now to look for specific details, it often leaves me wanting because to understand a specific algorithm I often have to go back a lot of pages to earlier steps, fragments, and subproblems. Between exercises, examples, etc., it is not as useful as a reference.

If I could offer you one tip, I would say this: decide what the goal is of your book and how it will be used before you start writing it. IF it's a textbook that's meant to be read cover to cover, that's fine, but accept that it won't be a good reference. If it is a reference, accept that you may have to repeat text that may make it an annoying cover to cover. Like most technical books, you can't have both. Unless you are Don Knuth :)

Uri
tiny nitpick: Knuth didn't create Latex, he created Tex. Leslie Lamport made the set of macros that make up LaTex.
HenryR
+3  A: 

What are the enduring properties of a book on algorithms?

Its dust jacket will remain in pristine condition because (despite always meaning to) you never take it off the top shelf. My volumes of Knuth are in remarkable shape for their age!

anon
+1 for abject honesty. I use the bound set of Knuth to keep my Skiena from falling over.
Bill the Lizard
+1 LOL. That's a brilliant answer. It's funny because it's true.
cletus