I have read CLRS (the second book in your list); it's really great as an introductory text as it spans a lot of areas. For example, sorting/searching is a chapter in CLRS, while it's a volume in itself in TAOCP (The Art Of Computer Programming). Also, CLRS is written in the style of a textbook, rather than a reference and a newbie would find it easier to follow. And, TAOCP is more of an in-depth reference to practically everything that has been researched in that field so far.
A lot more than you would think - there are plenty of programmers out there that can't tell you the tradeoffs between the different approaches, and they can get away with it, because it appears to work (see thread synchronization, cross-site scripting, data-base injection, null pointers, pointer overflow, etc, etc) until somebody demonstrates that it doesn't.
A rather superficial status symbol, I'd say: owning a book does not equate to knowing or understanding its contents.
I purchased my copies individually (back when I was a student and I could ill afford them) and, ignoring Knuth's suggesting algorithm for reading the series, read the "interesting" sections quite carefully. I still use them for reference and occasionally find time to re-read parts of it.
Pretty ineffective status symbol, too. How many people whom you might want to impress are going to see exactly what's on your bookshelves, and know enough to recognize Knuth as impressive? I'll hazard a guess that most people for whom those are true also know enough to be more influenced by other more meaningful things than what books you happen to have on your shelves.
(I bet some people do buy Knuth as a sort of status signal to themselves, though.)
I've read parts of vol. 2, especially about random number generation. I found it in a library book sale for a quarter. THAT made my day. :)
I've found a suspiciously high percentage of the people who have totally! read the Art of Computer Programming are unable to answer even basic questions about MIX, by the way.
Well, they're difficult books to read to begin with. Knuth himself would be surprised if someone has read and understood them all. At the same time, I find they're hyped up a bit (like SICP). There are plenty of other really good algorithms books IMHO.
At http://news.ycombinator.com/item?id=1266502 someone cites a particular occasion on which Knuth supposedly denied the story. As I remarked then, "full of shit" seems quite an unknuth expression.
That's pretty reasonable with MIX, given that it's a terrible language that was obsolete before it was invented and that all the algorithms are described in English as well.
That's because there is a big difference between reading and understanding.
Reading can just mean reading word by word, symbol by symbol then putting the book on the shelf. That ends up happening a lot with material that has a lot of formulas and theorems. It could take days for some to understand just a couple of pages.
So basically I not surprised at all that you've met so many people who've read the volumes, but didn't all the subtleties.
I think reading the volumes is the next step in status show-off step after buying and putting them on the shelf.
Also, as many have pointed that MIX is just too obscure. Not knowing much about doesn't really indicate a lack of theoretical knowledge. I would personally skipped over those chapters.
I was more thinking along the lines of, "Oh yeah, I've read them all. Wait, MIX? What's that?"
I've seen several equally dense, informative CS books (such as Dick Grune's _Parsing Techniques: A Practical Guide_), but Knuth has a specific sort of cachet among xkcd-quoting geek hipsters, so people namedropping him, make a pretense of having read them all the way through, etc.
I read and understood volumes 1 to 3 front-to-back.
I do not think it is that hard to understand, compared to e.g. complex analysis or number theory. Didn't work hard enough on some the exercises, but certainly understood all the simpler ones. I would not recommend reading this to every (would-be) programmer or computer scientist, though. Especially for those wanting to program on 1GHz+ CPUs with 1GB+ RAM, there are things that are more immediately useful. Also, even for the low-level stuff the content of the books is getting seriously dated (e.g. due to the absence of multi-threaded algorithms)
I keep them around as a reminder that Computer Science is math. Being able to reason and think mathematically is an important skill for any programmer.
A person can go pretty far doing web work and using scripting languages, but when you get into serious programming (heavily concurrent, resource-critical, real-time, etc) you need to understand the fundamentals.
Having Knuth up on the shelf reminds me to take a second and say, "Hey, think this through some more. Knuth probably figured it out already."
I have to admit I haven't read the books, lower head in shame. It was too expensive when I was a poor student. Interestingly years later at work there were some Romanian exchange students doing summer internship. When they left, we bought gifts for them. A coworker and I bought the 3rd Volume to give to one of them. That really made her day.
I read the first book and didn't find it particularly good. You don't learn a lot from them. You do learn a lot of irrelevant details (like how his machine language works).
Hey, I am not disputing that the content isn't worth while. I just would rather have it in paperback (which is already out, I believe) so it's cheaper and easier to flip through. But I guess that is just my personal preference.
Can somebody elaborate on the use cases of such a set? Are these volumes more theoretical and academic or practical? Is ownership more of a symbol or are they genuinely interesting to read, given a cramped startup lifestyle? What level of formal comp sci education does the author assume?
Not skepticism, just genuine curiosity and intrigue. I don't have a formal CS background, so forgive me for the naiveté if this is obvious stuff.
This will likely not help you build your startup unless you need a really strong understanding of Programming concepts. In the words of the wise Wikipedia:
"The famous offer of a reward check worth "one hexadecimal dollar" (100HEX base 16 cents, in decimal, is $2.56) for any errors found, and the correction of these errors in subsequent printings, has contributed to the highly polished and still-authoritative nature of the work, long after its first publication. Another characteristic of the volumes is the variation in the difficulty of the exercises. The level of difficulty ranges from "warm-up" exercises to unsolved research problems, providing a challenge for any reader."
For some people, it will be a status symbol. But honestly, you shouldn't be buying these books unless you actually want to learn something. Just saying you have the books will do you no good and is just a waste of paper.
I cashed one of those checks once, after photo-copying it first of course. Seems like I paid a lot less for the boxed set of 3 volumes about 13 years ago. I would like to pre-order the hardbound vol 4a.
I often hear TAOCP described as the series of programming books "that every programmer should read." I think this is simply untrue ... TAOCP was not written to be read from cover to cover ... It's very dense and academic, and the examples are all in assembly language.
These books are more than a status symbols for aggressive learners. I've poured through many chapters in these books and it really challenged me and continues to solidify a lot of concepts about computer programming.
I particularly remember enjoying being enlightened on where Big-O came from and what is really means in the mathematical world. Really helps me derive Big-O notations from my programs.
That's still in progress (and, given that Knuth is more than seventy years old and still has at least 3 books to go before he will begin to revise them, odds are such a revised set will never be released).
Does anyone if you can buy a cardboard mockup of the boxed set that would look like the real thing when placed on your bookshelf next to "Teach Yourself Ruby in 21 Days"? I'm thinking $5.
58 comments
[ 2.8 ms ] story [ 112 ms ] threadHow many of you actually read these books carefully?
2. There's nothing wrong or status-symbol-y about using books of this sort for reference, and reading only the bits one needs.
http://www.amazon.com/Algorithm-Design-Jon-Kleinberg/dp/0321...
http://www.amazon.com/Introduction-Algorithms-Third-Thomas-C...
I have read CLRS (the second book in your list); it's really great as an introductory text as it spans a lot of areas. For example, sorting/searching is a chapter in CLRS, while it's a volume in itself in TAOCP (The Art Of Computer Programming). Also, CLRS is written in the style of a textbook, rather than a reference and a newbie would find it easier to follow. And, TAOCP is more of an in-depth reference to practically everything that has been researched in that field so far.
Does TAOCP cover any of those?
There are also going to be a lot of pointer based tricks that you don't get unless you really understand pointers.
I purchased my copies individually (back when I was a student and I could ill afford them) and, ignoring Knuth's suggesting algorithm for reading the series, read the "interesting" sections quite carefully. I still use them for reference and occasionally find time to re-read parts of it.
(I bet some people do buy Knuth as a sort of status signal to themselves, though.)
I've found a suspiciously high percentage of the people who have totally! read the Art of Computer Programming are unable to answer even basic questions about MIX, by the way.
(Knuth denies this ever happened.)
Reading can just mean reading word by word, symbol by symbol then putting the book on the shelf. That ends up happening a lot with material that has a lot of formulas and theorems. It could take days for some to understand just a couple of pages.
So basically I not surprised at all that you've met so many people who've read the volumes, but didn't all the subtleties.
I think reading the volumes is the next step in status show-off step after buying and putting them on the shelf.
Also, as many have pointed that MIX is just too obscure. Not knowing much about doesn't really indicate a lack of theoretical knowledge. I would personally skipped over those chapters.
I've seen several equally dense, informative CS books (such as Dick Grune's _Parsing Techniques: A Practical Guide_), but Knuth has a specific sort of cachet among xkcd-quoting geek hipsters, so people namedropping him, make a pretense of having read them all the way through, etc.
A person can go pretty far doing web work and using scripting languages, but when you get into serious programming (heavily concurrent, resource-critical, real-time, etc) you need to understand the fundamentals.
Having Knuth up on the shelf reminds me to take a second and say, "Hey, think this through some more. Knuth probably figured it out already."
The life's work of the greatest genius in CS and a set of knowledge that will last you more than your lifetime.
Anyway, don't most people buy those as shelf decorations?
Kindle edition $100
Empty slipcase with fake spines to impress your friends $50
Not skepticism, just genuine curiosity and intrigue. I don't have a formal CS background, so forgive me for the naiveté if this is obvious stuff.
"The famous offer of a reward check worth "one hexadecimal dollar" (100HEX base 16 cents, in decimal, is $2.56) for any errors found, and the correction of these errors in subsequent printings, has contributed to the highly polished and still-authoritative nature of the work, long after its first publication. Another characteristic of the volumes is the variation in the difficulty of the exercises. The level of difficulty ranges from "warm-up" exercises to unsolved research problems, providing a challenge for any reader."
For some people, it will be a status symbol. But honestly, you shouldn't be buying these books unless you actually want to learn something. Just saying you have the books will do you no good and is just a waste of paper.
But beware that it has a high information density and that it is for the mathematically inclined.
To digest in small portions :-)
I often hear TAOCP described as the series of programming books "that every programmer should read." I think this is simply untrue ... TAOCP was not written to be read from cover to cover ... It's very dense and academic, and the examples are all in assembly language.
(From http://www.billthelizard.com/2008/12/books-programmers-dont-...)
I particularly remember enjoying being enlightened on where Big-O came from and what is really means in the mathematical world. Really helps me derive Big-O notations from my programs.