Rating: Summary: A must have for serious practitioners Review: 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!
Rating: Summary: every programmer must have Review: if you consider yourself a "programmer" you must have, and not just have - you must read these books!
Rating: Summary: Definitive but Daunting Review: It is with good reason that these books are so well-respected in the field. These books have enough depth for several years of careful study and will be quite rewarding for anyone who takes the time. Still, there are a couple of things to keep in mind before jumping in:(1) These books are not for the mathematically weak-at-heart. The first section, of over 100 pages, is on mathematical preliminaries. While it is true that there are many later sections that can be understood without this background, to truly get the most from these books will take some mathematical maturity, (2) The algorithms and programs in the book will be difficult to understand to the modern reader, since they are written in an unstructured (i.e. GOTO-centric) style. Program code is given in assembly language for a fictional computer called MIX. Knuth may have his reasons for sticking with this form, but the reader should be aware that some extra work will be required to follow along. Aside from these caveats, these books come highly recommended.
Rating: Summary: Definitive but Daunting Review: It is with good reason that these books are so well-respected in the field. These books have enough depth for several years of careful study and will be quite rewarding for anyone who takes the time. Still, there are a couple of things to keep in mind before jumping in: (1) These books are not for the mathematically weak-at-heart. The first section, of over 100 pages, is on mathematical preliminaries. While it is true that there are many later sections that can be understood without this background, to truly get the most from these books will take some mathematical maturity, (2) The algorithms and programs in the book will be difficult to understand to the modern reader, since they are written in an unstructured (i.e. GOTO-centric) style. Program code is given in assembly language for a fictional computer called MIX. Knuth may have his reasons for sticking with this form, but the reader should be aware that some extra work will be required to follow along. Aside from these caveats, these books come highly recommended.
Rating: Summary: Overlong Nonsense Review: Knuth covers th emost obscure aspects of computing science with a pedants zeal. The pointless waffleing prowse hides little or no understanding of computing in a modern enviroment. Any man who uses TEX, let alone invents it deserves not our admiration but our sincerest pity. If you want a book that actually helps you with a task rather than dresses up the subject in obscure techno babble then get a Nutshell guide from O'Reilly.
Rating: Summary: A Classic, Comprehensive and Timeless Treatise Review: Knuth is no doubt the authority on the subject. This timeless classic is bound to make the student (Yes you ought to be a dedicated one..no casual reading here!) proficient in the art and science of constructing programs. This is both a textbook that teaches you how to approach the art of programming and a lifelong reference to which you keep going back to. There are tons of books on data structures, programming, algorithms ...right? wondering Why you want to pick this one? well...because, almost every book traces back to this!! To be fair to the other books on the subject, one must admit that this book is not for everyone. If your needs are to get up to speed on say, developing web applications or database applications that does what most applications do, then you should pick a book focussed on those areas. This collection is aimed at someone who wants to get a thorough grinding on the art of writing programs of *ALL* kinds. Be it a memory management module, or a task scheduler or a efficient graph implementation or a database engine or a webserver or ...well the list is virtually endless. Being independant of any domain you are interested in, but treating each and every aspect of programming to an extraordinary detail, that you can apply to any possible domain imaginable is what makes this a timeless classic. This books develops considerable amount of math needed for quantitatively analysing the programs for its time and space complexity. Interestingly it uses assembly as the language. you can see the author's opinion in one of the comments here, which I think makes sense. The exercises come in quite a range. Trivial one minute problems to unsolved research problems! (No..Seriously). To summarize, this is a great text for some one embarking on a long journey into truely mastering the art of computer programming !
Rating: Summary: Full of little gems Review: Knuth is obviously in the eduction business. This is a book written for learning from. It's very easy to ignore the parts that are too detailed for your needs and not feel like you've missed something. My favourite parts are his historical notes. These are the reward for ploughing through a section, some of them quite facinating. I'm a compiler designer. Compilers like most other big applications are built on stacks, queues, lists, trees, etc. These books will teach you how to implement these structures solidly and effeciently. Alot of my time at work involves reading research papers on optimisations. I need to understand how algorithms are analysed and how to compare two algorithms. These books give the mathematical tools needed to perform that job. Some criticise his using a machine language for examples. I personally think that this is a good thing. Seeing something done in assembly shows you how easy it really is. Sometimes hhigh level languages with all their abstractions make things look more complex than they need be.
Rating: Summary: Excellent Academic Book Review: Knuth's set of books on the Art of programming are excellent academic books. However, I should like to warn everyone that they are not practical programming books. For one thing, they examine each subject in extreme detail. Someone looking for a quick review of sorting, for example, will find page after page of mathmatical formulae and definitions, detailing not only sorting in general but total orderings, keys, data structures, etc. Also, don't expect to steal any code from this book. All the algorithms are written in MIX, a hypotheical assembler language for an abstract machine. In fact MIX is so out of date, and the abstract machine so primitive, Knuth is promising to update both - but not very soon. In short - these are great books. But they're not light reading and they are geared more for academic study rather than practical use.
Rating: Summary: Knuth's words on why assembly language Review: Many readers are no doubt thinking, ``Why does Knuth replace MIX by another machine instead of just sticking to a high-level programming language? Hardly anybody uses assemblers these days.'' Such people are entitled to their opinions, and they need not bother reading the machine-language parts of my books. But the reasons for machine language that I gave in the preface to Volume 1, written in the early 1960s, remain valid today: One of the principal goals of my books is to show how high-level constructions are actually implemented in machines, not simply to show how they are applied. I explain coroutine linkage, tree structures, random number generation, high-precision arithmetic, radix conversion, packing of data, combinatorial searching, recursion, etc., from the ground up. The programs needed in my books are generally so short that their main points can be grasped easily. People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird. Machine language is necessary in any case, as output of many of the software programs I describe. Expressing basic methods like algorithms for sorting and searching in machine language makes it possible to carry out meaningful studies of the effects of cache and RAM size and other hardware characteristics (memory speed, pipelining, multiple issue, lookaside buffers, the size of cache blocks, etc.) when comparing different schemes. Moreover, if I did use a high-level language, what language should it be? In the 1960s I would probably have chosen Algol W; in the 1970s, I would then have had to rewrite my books using Pascal; in the 1980s, I would surely have changed everything to C; in the 1990s, I would have had to switch to C++ and then probably to Java. In the 2000s, yet another language will no doubt be de rigueur. I cannot afford the time to rewrite my books as languages go in and out of fashion; languages aren't the point of my books, the point is rather what you can do in your favorite language. My books focus on timeless truths. Therefore I will continue to use English as the high-level language in TAOCP, and I will continue to use a low-level language to indicate how machines actually compute. Readers who only want to see algorithms that are already packaged in a plug-in way, using a trendy language, should buy other people's books.
Rating: Summary: BETTER BOOKS EXIST, KNUTH IS NOT GOD Review: People buy Knuth's books for snob appeal, which is to say that they like to put the 3-book set on their shelves as an advertisement for their own intellegence. What they don't realize is that truly talented individuals will see beyond this kind of cheap PR stunt. "Look, I read Knuth... boy, I must be a genius!" Donald Knuth obviously has offered extra credit to students who provide him with glowing reviews on amazon. "Oh geeze, this is the best book ever. Bow down and kiss his feet." For all we know, he may even offer a cash reward. This is just one of those cases where the myth of Knuth has overshadowed reality. Is Knuth well known? Yes. Has Knuth been around forever. Yes. Has knuth published countless articles? Yes. Are his books used in day-to-day coursework at top-ten engineering schools. NO, THEY ARE NOT. For data structures, most *working* professors would refer you to Cormen, Leiserson, and Rivest (or maybe Robert Sedgewick). For scientific computing, most *active researchers* would suggest a book like Michael Heath's. For random numbers, you'd be better off with Kelton and Law's book on simulation. For computer architecture, everyone uses Patterson and Hennessey. See a pattern here? The truth is that fields mature, and textbooks get better and better. Knuth has decided that it's too much work to stay current; he'd rather stick to 6-bit MIX assembler code and his precious universal truths. Well, Professor Knuth, I have news for you: there are more recent books out there that do a much better job at stating "universal truths" with the added benefit of being easily readable. I don't buy the excuse that it's too much work to re-write code examples in different languages. Isn't this what graduate students were made for Prof. Knuth? Hell, you don't even have to pay them that much. Just try not to speak down to them, oh great one. I also don't buy the excuse that he uses MIX so that the reader can look at the finer details of performance and memory consumption. Isn't this the same man who said that "premature optimization is the root of all evil?" In other words, don't optimize; use a better algorithm. You don't need to look at assembly code to analyze algorithms, O(n) analysis should suffice...at least, it's more of a "universal truth" approach. By trying to write a complete survey of computer science, Knuth trys to be everything to everyone. In doing so, he does nothing as well as he could have (and certainly not as well as the textbooks currently being used). What he has ended up with is an expensive white elephant, that will look pretty while it collects dust. Stop making excuses Professor Knuth. Get off your...organ and get back to work.
|