Customer Reviews
17 of 19 people found the following review helpful:
"Check it out", Nov 1, 2022 I borrowed volume 2 to implement a special data structure. It helped me immensely in that task. But it wasn't the only resource I used. I could not justify spending the money on this book.
Short of the mathematical treatment, the knowledge certainly wasn't limited to Knuth. In fact, most (all?) of the Art of Programming is a compilation of ideas, isn't it?
I used a variety of resources. I even used to web. There are some terrific animations that show special case tree rotations for AVL trees or red-black trees out there.
Knuth will be appreciated by academics the most. Very specialized programmers, such as embedded designers, OS authors, or database designers will likely be the next biggest group of fans. Application developers will be next in line. They mostly depend on APIs to implement the topics for them. And Rapid Application Developers will hate the book. Don't care. Don't need to know. And they don't. So figure out where you are in that list and that's how much you need this book.
A modern rewrite would definitely nudge me into buying the book. But I just can't force hand on wallet ... to ... shell ... out ... bucks for a book that's already widely available in a variety of formats for free.
PROS: Likely the best mathematical treatment of a computer science subject you will find. No one ties the practicality of CS and abstraction of math better than Knuth.
Coverage of many core concepts of computer science such as data structures, big-O notation and efficiency, bit wise arithmetic algorithms, random number generators, etc.
Classic work. Impress your colleagues by idly leaving the book around. Bonus points: leave it open AND have a copy of Red Dragon nearby.
CONS: Not enough pictures. Seriously. I am a visually oriented person. Two pages of tree rotation diagrams are far more helpful than ten pages of prose.
The book is type faced as a college text. The typeface is difficult to read. The exercises litter the book and make thumbing through it a bit annoying.
MIX. This is Knuth's solution to describing algorithms in a universal programming language the audience can understand. Unforunately, the language is assembly designed for a fictional computer. So no one can understand it but equally as well. Actually, any popular assembler experience (Motorola/Intel/PIC) should span the gap nicely. But when's the last time you programmed in assembler? How come? I blew past the MIX examples and looked for better psuedocode elsewhere.
5 of 49 people found the following review helpful:
My two cents, Mar 20, 2023 Yes, using MIX is all wrong. Psuedo-code that's intuitively obvious would save us so much trouble. But, why not a "TAoCP in FORTRAN-90", a "TAoCP" in APL, a "TAoCP" in COBOL, a "TAoCP" in BASIC, a "TAoCP" in LISP, a "TAoCP" in ALGOL, a "TAoCP in Ada", a "TAoCP in C", a "TAoCP in Java", etc. ?? Think of the money to be made re-selling it in every possible langauge if there's a market for it? I might even do it myself and make some $. Actually, there's no need for a Visual Basic version, etc. because I/O, etc. is not the issue. This set is about art, about *algorithms*, so most of the high level language specific aspects are irrelevant (except for recursion, details like garbage collect, inheritance, polymorphism...). Equally irrelevant is worrying about efficient memory usage and the like. Today, memory, disk space, etc. are not scare resources. While (being from the old school) I don't believe in wasteful code, all people really want today out of algorithms is optimal speed. Time and CPU power are the only resources that is still constraints. Discussions about sort algorithms which optimize for anything else (memory space, etc.) are pointless if they aren't also the most time efficient. We don't care! Also, unless you work for the US Census or Social Security Administration, you don't care about hardware devices like tape drives, so those algorithms are just theoretical mind games. Anyway, please rewrite this set in a practical high level psuedo-code with time optimal algorithms only. But only the timeless (pun-intended) universally necessary algorithms that are always going to be useful. Stuff like searching, data structures, hashing, trade offs between techniques. In the future all people will want are parallel processing algorithms for distributed environments and perhaps eventually quantum computing algorithms for a language built on a CPU which only processes QBits. One final thing: wasn't there originally supposed to be 7 volumes and only these 3 were completed? What ever happened to the rest? Why were they abandoned? I guess I never heard.
21 of 43 people found the following review helpful:
Precisely, but let us keep our logic straight., Jan 13, 2023 From the review by Ekalavya Nishada: "It is true it uses MIX and does not cover the last 20 years of advances in computer science yet but if you cant understand MIX you have no hope of understanding the mathemtical analysis of algorithms in these books nor appreciate a quality book like this."But this is precisely the point! Indeed, w/o MIX you won't be able to really read TAoCP, right, but let us keep our logic straight. Do you need MIX for anything other than reading this book? Nope. Does it add anything to the subject matter? Nope (in fact, it detracts from it; C would be more illustrative and realistic.) Is learning it so easy as to make the issue unworthy of bringing it up? No, learning it will take quite a bit of effort. Yet it *is* a precondition to being able to read TAoCP. And, btw, it's not that MIX "doesn't cover the advances of the last 20 years" -- I suspect, it simply has nothing in common with reality, whether today or 20 years ago. Is it worth your time to dig into this piece of gratuitous esoterica simply in order to be able to read the book? Is TAoCP *that* great and indispensable? Everyone will decide on one's own, but personally I think not, not today -- there are now quite adequate alternatives that do not tax the reader unnecessarily. Life is short; its demands are many; not everyone's a tenured professor... (And to propose that the only alternative to TAoCP is "O'Reilly cookbooks" is a wild exaggeration: there are just as in-depth *yet readable* books to choose from. Twenty years ago, maybe this wasn't the case, but life didn't stop then -- our then-beloved books and us, we all have to face a threat of obsolescence ; let's not mistake our sentimental rememberances of the past for eternal verities.)
14 of 17 people found the following review helpful:
A must have for serious practitioners, Nov 28, 2022 I was amazed to see some people dissing TAoCP. I came across these books 20 years ago when I was learning FORTRAN and Pascal. I did not understand much then but since then they have proved to be the best source for solving many sticky problems be it data structures oo sorting. It is true it uses MIX and does not cover the last 20 years of advances in computer science yet but if you cant understand MIX you have no hope of understanding the mathemtical analysis of algorithms in these books nor appreciate a quality book like this. If your intellectual curiosity extends beyond the O'Reilly cook books and you *love* programming, these books definitely belong in your library. A couple of hours of reading a section or two from these books is so stimulating!
79 of 97 people found the following review helpful:
THE CS Bible? Let's be realistic and honest, Nov 15, 2022 The Art of CP (TAoCP) book set covers the core of computer science curriculum on data structures and algorithms. Not everything there is today (that would be impossible), just the core, but that's more than enough to begin with (and for most people quite sufficient in general.) This is typical Knuth: he knows his stuff, he writes very well, he's an encyclopedic mind; his texts are mathematically rich, yet at the same time not overwhelming; time and again he demonstrates this 19-th century germanic scientific style, which is to say he's incredibly detailed and exact -- one can even accuse him of pedantry, but in a good sense. He writes with a sharp, dry wit (his sense of humour makes him unique among the rest of the writers on the computing theme.) So far so good.However, all the benefits mentioned above notwithstanding, I have to say that on balance this triptych of his is impractical. It has either become outdated, or was even originally written with an independently-wealthy reader in mind, someone like an 18th century gentleman-farmer who, fully disencumbered of the vulgarity of having to earn a living, is leasurely indulging in the exercise of his mental ability for the pure intellectual challenge of it; someone with no plebeian concerns of practicality ever entering his exalted mind. The problem is with MIX. I second what the others said about it, and what's more, I refuse to accept the explanation (purportedly Knuth's) posted below by someone: the problem is not only that MIX is an assembly language (which still would be a functional malapropism in a book like that) -- no, a far more grievous problem is that MIX is a phantasm, a whimsically extravagant invention having no real-life equivalent, at least today. The mythical processor underlying this thing (5-byte words, etc) is not something that anyone below 40 years of age has ever seen, even if it does have historical analogues. The gravamen of the offence here is not that it is some real but unfamiliar processor's assembly -- after all, if you know i86 assembly, you can (kinda, sorta) read the motorola equivalent... No, it is that MIX and the fairy-tale processor architecture it is imagined to run on are *purposely made to resemble nothing* that you may have some familiarity with -- thus making the already-difficult material obfuscated beyond anything even marginally manageable for a regular computing Joe, who has a (real) life, and at any rate, can't limit his CS intake to this one work. Elucidating difficult in itself CS material via examples in assembly language of even a real (or made-up but realistic) kind is a very bad choice because the student's attention, already taxed by the subject matter itself, will be further burdened by the non-algorithmic nature of the assembly language. But to exacerbate this potential ordeal by insisting on the use of something so gratuitously eccentric and profitless for the reader as MIX is simply unconscionable. Ideally, what a good CS text of this sort will use is pseudocode. But if a writer wishes to add to his book a realistic slant, it is acceptable that he use some sort of real language -- so long as it is algorithmic; today, C is a perfect choice. Knuth counters (and he's absolutely right): there was no C when the book was written. He's also right in saying that had he written it with Pascal it would have become outdated by now. So if that was the problem, TAoCP could have been written with some sort of pseudocode; this would last forever. Of course, even using a real language would not actually be such a great problem -- we all know of similar books where the originally-chosen language was replaced when it fell in disuse: for example the numeric programming book by Teukolsky; it started with fortran and was then redone in C; this demonstrates that the language part can be brought up-to-date if necessary. Both Fortran and C are algorithmic languages that, owing to their readability, can be used instead of pseudocode. Ideally, books should be written with both pseudocode (a must, in my view), and, in order to give an example of an actual implementation, some real language (see the recent book by Goodrich; it's pseudocode throughout and a smattering of Java here and there -- perfect!) To sum it all up: measured by today's needs, The Art of CP is overrated (out of snobbery; bragging of having read it is "kewl"; meantime, the truth is, not too many people are capable of such a feat for the reasons stipulated above; when actually used, TAoCP books are read in chunks, a chapter here, a chapter there -- which is a shame, because they are very well written, and to work through them in their entirety would be much more profitable than biting off a little here and there.) I am going to be slammed by the Knuth cult followers for saying this, but I do not recommend these books. Instead, consider something similar but more practical: two titles immediately come to mind, Cormen &Co.; (a.k.a. CLR) and Goodrich (forget the title but search on the name.) Foundations of Computer Science by Aho/Ullmann (The Tortoise book) is a suitable option as well. TAoCP is potentially very good, but until someone ruthlessly excises all the bloody junk (MIX etc.) and replaces it with pseudocode or C, it will remain useless. Don't get me wrong here: Knuth is an admirable, justly venerated computer scientist, and a very good writer to boot (for example his Concrete Mathematics book is excellent). But when it comes to TAoCP, even though to mention it is very chic in some circles, we must admit the obvious: he has produced a work that's impenetrable (or, rather, the enormity of time and effort required to penetrate it makes such an attempt an unworthy investment) and therefore useless in practical terms for the majority of the potential readership.
|