Fog Creek Software
Discussion Board




Is Knuth overrated?

In a previous topic ("How relevant is optimization"), someone brought up an old quote attributed to Donald Knuth - "Premature optimization is the root of all evil". Now whether or not he actually wrote that - I've seen it attributed to other prominent computer scientists - it got me thinking...

Does anybody know whether Knuth actually has any practical experience in real-world software production (outside the academic environment)? I wouldn't try to deny the great contributuion to the field that "The Art of Computer Programming" represents. Other publications of his that I've read have also been interesting from a purely acedemic/scientific perspective.

But, has he ever had to work under a deadline, to produce something for a customer who can't even express what they want clearly? The only "products" I've ever heard associated with him were TeX and Metafont, neither of which was developed in a commercial environment.

Back in the day, Knuth was offering an exponentially-increasing reward (starting at $0.01) to anybody who found bugs in TeX, which he believed was "essentially defect-free" on release. He gave up up on that when the reward  started to get into real money.

Who is the Knuth of commercial software development? Who speaks for the laborers in the code mines?

-Mark

Mark Bessey
Tuesday, July 29, 2003

Steve McConnell.  Author of "Code Complete" and "Rapid Development", as well as other usefull, but less incredible books.

Ted Graham
Tuesday, July 29, 2003

Kind of like asking if Einstein is overrated because he spent no time putting his physics to use producing television sets.  Knuth is a scientist answering fundamental questions about the nature of computing.  Trying to evaluate him as a code monkey is just silly.

anon
Tuesday, July 29, 2003

Anon: Amen.

Sebastian Wagner
Tuesday, July 29, 2003

"He gave up up on that when the reward  started to get into real money."

The reward for the next bug is a mere $327.68, and it WILL be paid to anyone who reports it.

It seems you do thoroughly qualify for a troll.

Johnny Bravo
Tuesday, July 29, 2003

While we're on the subject of holy cows, I have to admit that I don't find The Art of Computer Programming all that useful. I find the explanations of algorithms and data structures in Cormen, Leiserson & Rivest, Skiena or Sedgewick a lot more comprehensible and easy to apply. Also, I have to strongly disagree that assembly language for an imaginary CISC computer is the most appropriate way to explain algorithms. It's possible (even likely) that I'm just not smart enough to appreciate Knuth's work fully, but I find his magnum opus pretty opaque.

Edwin
Tuesday, July 29, 2003

Knuth's work is extremely dense.  If your job is to apply these algorithms to the task at hand, he's probably not the best resource to go to.  If your job is to figure out the next great substring searching algorithm or something, though, you'll probably want to have his work close to hand, if for no other reason than to see how Knuth "thinks about" problems like this.

anon
Tuesday, July 29, 2003

Johnny Bravo:

My posting wasn't intended as a troll, though I did intentionally choose a provocative subject line.

And Knuth has definitely changed the terms of his "cash for bugs" offer. The current reward of $327.68 is FIXED. If he'd stayed with the constant doubling every year, the per-bug payments would now be in the hundreds of thousands of dollars each (according to the figures he published in a 1989 paper).

-Mark

Mark Bessey
Tuesday, July 29, 2003

If by overrated, you mean we shouldn't take every cute saying of his as the Word of Deity, or that brownnosing and hero-worship is idiotic, sure.  But should he apologize for having an opinion because some geek beats his coworkers over the head with it?

tempfile
Tuesday, July 29, 2003

Remember that Knuth's major works were done some 30+ years ago, and the fact that much of it still remains relevant says a lot.  So I'd say NO, he's not overrated. Unless you listen to people who say he's the greatest mind of all time.

T. Norman
Tuesday, July 29, 2003

i'm taking a data structures class right now which has 2 of his TAOCP books as required text, and the class is done in all HLASM.  I think the books are good, but sometimes i have problems following the way his algorithms are layed out.  On the other hand, they're still being printed.....

grover
Tuesday, July 29, 2003

Yes, in my opinion, Knuth is overrated.

Just read another book on algorithms, and you'll save yourself a lot of time.

Michael K.
Tuesday, July 29, 2003

I don't know if I'd say he's overrated, but the practical everyday value of his books is certainly questionable.

It is important to recognize that he is a CS academic, not someone trying to train people in practical programming, like Bruce Eckel, et al.

Mister Fancypants
Tuesday, July 29, 2003

As one of my collegues used to say when asked about her research:
- Is this great stuff?
- Yes, it's great for those who understand!

So, the usefulness of Knuth' books is in the eyes of the beholder.

And to continue the discussion, some books highly praised by code monkeys quite a few people will find useless as well ...

Mr Curiousity
Tuesday, July 29, 2003

I have found Knuth to be VERY valuable in my work. Of course, my work tends to focus on doing tasks in very small amounts of memory in the most efficient way possible.

Of course, I read papers on new algorithms, and attempt to come up with an analysis of algorithms proposed by other developers to make sure they're relatively efficient. (Knuth essentially started the field of algorithm analysis, and was very prominant in the field of computer arithmetic.)

Using a smart hashing algorithm versus an AVL tree for a stateful packet-filtering engine embedded in a kernel can easily mean 1.6 million concurrent connections versus 800,000...

And as to the CISC machine language -- Knuth defines his machine and his language that he's going to be using. His philosophy is that his books should be just as relevant today as they are 200 years from now. He's a mathematician, mathematicians define their axioms. Will C++ still be a dominant language, and will we still be using deterministic turing machines? I surely hope not.

SG
Tuesday, July 29, 2003

"It seems you do thoroughly qualify for a troll."

There goes that "Troll" label getting thrown around again...
http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=57819&ixReplies=29

Cletus
Tuesday, July 29, 2003

Knuth is an incredible computer scientist because he's done first-rate theoretical research and developed top-notch software. I hope to work on a project as significant at TeX at some point in my career.

That being said, most programmers will find other books about algorithms to be more helpful. Other scientific or engineering subjects are similar: books and articles for a broader audience are the best place to start. When want a more advanced treatment, you can find the material written by the original researchers.

Julian
Wednesday, July 30, 2003

"Oracle PL/SQL" p.368

"Oracle corporation used the algorithm in 'The Art of Computer Programming, Volume 3' by Donald Knuth to generate phonetic representation."

In reference the the Soundex function that allows you to compare strings based on phonetics.

One example of a practical implementation of Knuth's work.

But yeah, how quickly we come to take for granted that which was fought for. 

We can afford to be code monkeys and spend our time solving silly little problems, because the hard ones were long ago solved and given to us for free.

braid_ged
Wednesday, July 30, 2003

Understanding Knuth is fundamental to understanding some very specific algorithms, especially relating to strings (and which always makes me wonder why people create yet another string library for their runtime).

Understanding Shannon for communication theory, noise, signal, capacity is also fundamental and has applications way outside propogating signals.

Understanding Turing is fundamental in understanding finite automata.  If you don't know what that class of animal is and how its applied then don't bother debugging another process loop until you've discovered and understood it.

Understanding Chomsky is still fundamental to understanding generative grammars.  Sometimes the best solution to a problem is the language and grammar its described in, that includes creating your own language to do it.

None of that is to say that that understanding can't be accomplished by reading their successors, their intermediate translators, if you will.

Simon Lucy
Wednesday, July 30, 2003

In a simple analogy, Knuth is to algorithms what an anatomy textbook is to medecine. Most people will find the "Readers Digest Guide to Family Health" more relevant, but that doesn't mean its a better book.

David Clayworth
Wednesday, July 30, 2003

Excellent answer David - I wish I would have thought of it first.

Other books are great when you just want to quickly implement an algorithm, but Knuth is great when you need to understand why/how the algorithm functions the way it does. If you're involved with getting algorithms as small and fast as possible, there's no substitute for Knuth.

Most people don't need Knuth anymore - most compilers come with a basic library that already has all of the basics implemented - this wasn't always the case. I hope the people constructing the standard libraries read Knuth, though.

RocketJeff
Wednesday, July 30, 2003

The initial poster, in fact, built an artificial difference between "theoretical" and "real-world" (i.e. commercial, deadlined) software development.

Questioning the significance of Knuth in software development is the first step, the next step is "I can do better!". The seduction to throw away long researched experience has always been there, and will persist.

Johnny Bravo
Wednesday, July 30, 2003

Also, note the title. It does not read "Knuth's brother-in-arms?", but "Is Knuth overrated?". It implied that one might happily skip over Knuth's work even when the task at hand has been solved (and proven to be correct and the optimum) by Knuth in complete. Which might just provoke a demand for "Teach Yourself Algorithms in 21 days".

Johnny Bravo
Wednesday, July 30, 2003

"Teach Yourself Algorithms in 21 days".

Chapter 1 - Time Dilation

braid_ged
Wednesday, July 30, 2003

No, he is not overrated by any means.

aaa
Friday, August 15, 2003

*  Recent Topics

*  Fog Creek Home