5 ms·
I've read the books on both of those lists, among many others. Not because these are all required reading, but because I've had a long career and I've fought t
by nanolith 10y ago
I've read the books on both of those lists, among many others. Not because these are all required reading, but because I've had a long career and I've fought to continually improve my knowledge in Computer Science. It seems rather arrogant of the author to decree that one list is canon and the other list is not. Each of those books has its use. Does this mean that someone needs to read any of those books to be good at software? Probably not. But, studying each of those books will improve skills in the particular domains that the books cover.
Also, why is it suddenly in vogue to bash TAOCP and CLRS? When I read these sorts of posts, I generally think that the author really means, "I didn't understand these books, so therefore, they must be crap." I started reading TAOCP very early in my career, and Knuth's low-level approach of analysis has served me quite well over the years. It's why, for instance, I don't balk when I need to optimize a computationally heavy algorithm on an 8-bit microcontroller, or when I have to hand-tune a cryptographic algorithm to avoid cache side channel attacks, I can approach the problem logically. Knuth is an excellent teacher for the right sort of student. He's not for everyone, and there's nothing wrong with that. Software ceased being a one-size-fits-all field decades ago. For that reason, among many others, decrees of what is canon or not -- such as the one made by the author of this post -- are nothing but bunk.
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- phaus 10y agoHe praises almost all of the books on the second list, he just thinks a large percentage of the people that recommend them haven't read much of them. He also doesn't seem to make the claim that the first list represents "canon" and that the second list represents "non-canon". The first list is a list of great books that are easily understood by most students. Many of the books on the second list are far more advanced. I agree that some students can learn using any of these resources. However, most people would struggle with books like TAOCP.
- nanolith 10y agoHe gives some rather backhanded praise for TAOCP, if you can consider noting that a set of books look impressive on a bookshelf as praise. For instance, "I've used my set several times when I was stuck and couldn't find help anywhere else. But TAOCP is always my reference of last resort. It's very dense and academic, and the examples are all in assembly language." He insinuates pretty strongly that the first set of books is the canonical set with this statement: "If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list, so I won't spend time reviewing each one individually." While not being explicit, he's being pretty implicit regarding his judgement of value for these books. I don't necessarily agree that TAOCP is especially difficult, but I did say in my original comment above that TAOCP is not for every student. For the right student, working on the right set of problems, I would not hesitate to recommend TAOCP.
- phaus 10y agoYou only mentioned the parts of his statement about TAOCP that, when taken out of context, seem to prove your point. He did note that it looks impressive on a shelf, but he also followed it up with "and it is impressive." Furthermore, he goes on to state that it is so comprehensive that if you have a computer science problem that falls in a category covered by one of the published volumes of TAOCP, and you cannot find a solution in TAOCP, that a solution likely does not exist. That's pretty high praise IMO. >It's very dense and academic. Is it not a dense text written in an academic style by an academic known for dense, academic writing? Its likely the greatest reference in existence, but it isn't an easy book to read at all. If it doesn't seem like a challenging read to you, then as the author already stated, you aren't one of the people that he was talking about. >He insinuates pretty strongly that the first set of books is the canonical set with this statement: "If you're interested enough in programming that you're reading this blog, you've probably read most, if not all of the books in this list, so I won't spend time reviewing each one individually." IMO, his statement doesn't attempt to canonize them at all. If you look at both lists, one list is obviously far more accessible to the average programmer than the other list. It doesn't make them better, just suitable for different people. >For the right student, working on the right set of problems, I would not hesitate to recommend TAOCP. I'm not saying that you're wrong. However, the article is about books that are often recommended to beginners. Most people will struggle if they start with TAOCP.
- deleted 10y ago[deleted]
- stillworks 10y ago> Also, why is it suddenly in vogue to bash TAOCP and CLRS? I guess for the same reasons people want to bash the current interviewing institution in place. Personally, I go with "it is what it is, deal with it if you want THAT job" Back to the context, I think I find CLRS much more approachable than TAOCP. It relies on pseudo-code and fairly simple mathematical symbology to formalise the algorithms it is treating. With TAOCP I have tried by can't get past the language of the imaginary CPU which it uses. Also, there are other simply excellent texts on Algorithms which I personally found much more useful than TAOCP (in decreasing order of "easiness") - Python Algorithms - The Algorithm Design Manual - CLRS - Algorithms in Java (somehow I found CLRS easier to follow than this) - And then I found this recently, "Algorithms on Strings,Trees and Sequences: Computer Science and Computational Biology" (one should have at least gone through the first two recommendations before starting with this one to make it easier to read this one) Disclaimer : I have a growing interest in learning Algorithms due to the requirements of interviews, however I have come to believe that the knowledge will go a long way.
- blub 10y agoMy understanding is that the author is arguing that these books shouldn't be recommended reading for everyone. I bought Knuth's TAOCP and the Cormen book in high-school to prepare for programming competitions. I never read TAOCP and probably never will, it was simply too complex for what I needed. CLRS was significantly easier to understand and I was able to read subchapters. Today I use neither, but rather recommend Skiena, Sedgewick or other specialised books. Not because TAOCP and CLRS are bad, but because these other books are more approachable and also get the job done.
- AJRF 10y ago"I've read the books on both of those lists, among many others." - I knew this would be the top comment. HN is fast becoming a parody.
- chatterbeak 10y agoI think I can write a Perl Script to generate the top comments on any YC thread. The other ones, applicable to all are: "This site doesn't work with NoScript on" and "It's paywalled!"
- astrostl 10y agoIn this moment, they are euphoric.
- sireat 10y agoAre you seriously claiming that you have read both TAOCP and CLRS cover to cover? This is precisely the claim that the original article is talking about. The article is not claiming that TAOCP and CLRS are bad books. The article simply argues that more people claim to have read the books than actually have read them. Most of us have read "some" of TAOCP and CLRS. These are fantastic but rigorous reference works. Generally you do not read reference books cover to cover
- OskarS 10y agoI read most of both of TAOCP and CLRS when I was in my late teens and early twenties. I couldn't follow the most difficult mathematical bits, but I don't think it's THAT unusual to have worked through most of both of them.
- damontal 10y agoTAOCP has four volumes. Its not just a single book. Did you work through all four volumes?
- OskarS 10y agoThe first three. Fourth wasn't out back then.
- Retric 10y agoIn high school read/studied Ivan Hortan's beginning C++ one summer which what an awesome foundation for collage programming courses. Now, I thought it as well worth it and recommended that book to several people. But here is the thing it took most of a summer, and I stopped around page 700 or so. Further I am not recommending someone read it, I am suggesting they spend a few months studding C++. TAOCP is not a book it's 1/3 of a masters degree in paper form. Suggesting someone read it is like sugesting they get a MS useful, bit not quite the same as recommending a normal book.
- bigtunacan 10y agoYou are taking your personal experience; that apparently you do not read reference books cover to cover and then applying it to others. Personally I DO read reference books cover to cover on a regular basis. I understand not everyone does this, but I don't make judgements or assumptions of others based on this. I'm have almost an obsessive need to read these things cover to cover. When I hit something I don't understand I reread it until I do or I go look up related materials until I understand it.
- varjag 10y agoIt is strange that someone who read through all of TAOCP and comprehended it would read that blog post so selectively.
- miloshadzic 10y agoI'd never bash CLRS but people suggest in strange situations. It's definitely not a good introduction to algorithms. It does makes sense as a reference and of course as a course textbook. As a book to actually read, Kleinberg/Tardos is much better.
- bbarn 10y agoThanks for the review. I just ordered both.