13 ms·
Books Programmers Don't Really Read But Recommend
- phzbOx 15y agoI'm an avid reader but was disappointed with the dragon book. I felt like once finished, I still couldn't write a simple interpreter! I guess it's a good reference.. or maybe a second book, but that's definitely not the best book to get started and learn compilers. I did actually read The C++ Programming Language when I was in high school.. at that time I thought it was a very important book. Now, with the insight, how dull it was and useless!
- lightcatcher 15y agoI think many people consider CLRS (Intro to Algorithms) to be far more daunting than it actually is. I have read 80% of it (wasn't interested by some parts, maybe will go back to them) and I have several friends who have done similar read-throughs. Doing all of the proofs is a bit much, but a lot of the exercises are quite good and I would hope that most programmers were familiar with the majority of algorithms described in CLRS. Essentially, I think many people are far too intimidated by CLRS. I actually found it to be quite readable, as textbooks go. Note that I did this before actually taking any algorithms class. Perhaps the post should be rephrased to "However, unless you have at least a Masters degree in Computer Science (and in Algorithms specifically), I doubt you've HAD TO read more than a few selected chapters from Introduction to Algorithms."
- tricolon 15y agoCLRS is essential to any good undergrad CS programme.
- thelastnode 15y agoWhy? While I have worked through a decent amount of CLRS myself, I think there are much better ways to learn how to solve algorithmic problems. For example, programming competition books like Programming Challenges[1] forces students to solve real-world-ish problems according to performance constraints - a time constraint, either artificial (e.g., problem statement requires execution within 2 seconds) or actual (e.g., choosing an algorithm that is too slow means the sun will burn out before the algorithm terminates). Books and contests of this nature teach algorithmic thinking, which is far more important than the actual algorithms themselves. It also provides a context for implementing these algorithms, which means the student gets to see the more practical aspects as well: testing it on corner cases, fighting with the chosen implementation language, relying on compiler optimization, etc. If the goal of the undergraduate program is to develop practitioners of computer science, or even graduates headed for academia, algorithmic thinking is essential. I don't think CLRS is necessarily the best way to teach that, and it certainly isn't the only way. [1]: http://www.programming-challenges.com/pg.php?page=index http://www.programming-challenges.com/pg.php?page=index
- eshvk 15y agoTrue with a tiny caveat. Having worked through a lot of a "lesser" book: The algorithm design manual, what I have found missing in other books or contest driven practice is any practice of proofs of correctness. While, these are certainly probably completely practically useless in a SWE job, they do provide a good foundation for computer science undergrads to develop some mathematical maturity necessary to explore other branches of mathematics, say in grad school or at work in a more quantitatively demanding job.
- ek 15y agoIt's possible that you're confusing programmers with computer scientists. Not all programmers are computer scientists, and vice-versa. I understand that the title of the post is about books programmers recommend, but computer science extends far, far beyond programming and learning how to engineer solutions to real-world problems using algorithms. The important parts to people doing research in algorithms are well-covered in CLRS, and that's part of why it's such an excellent book. It's full of rigorous proofs and a lot of theory, but that's because the point of the text is the design and analysis of algorithms themselves, rather than the application of them. A university has an obligation to its undergraduate students majoring in computer science to teach them about computer science, and learning to think about designing algorithms, rather than merely learning about using them, is something that I would fully expect as an undergraduate majoring in computer science at any major university. I suspect this is part of why more and more universities are offering degrees in Software Engineering, where the theoretical aspects of the field are not as important.
- dkersten 15y agoI second Programming Challenges. Its one of my all time favourites because it helped me in the past and is my go-to for sample programs when learning new languages.
- SamReidHughes 15y agoWell, there are other data structures and algorithms books.
- edwinnathaniel 15y agoWhile some schools do suggest the students to buy CLRS, how many actually use it religiously as opposed to the instructors going back to their own lecture notes? At UBC, we use CLRS for 2 undergrad courses: 3rd and 4th year Algorithm courses. I'm not sure what they use in grad level. Probably still covering CLRS. That book is very thick and I have my own doubt a 3-month long semester can cover a lot from 1000 pages.
- msbarnett 15y agoThe 2nd and 3rd year undergrad CS algorithms courses at the UofA relied pretty heavily on CLRS, at least when I went through the program. That was years ago, though, and I've heard anecdotally that now that there aren't 4x as many applicants to the program as there are spaces available, it's been made less rigorous.
- sceptre 15y agoI agree completely. i find CLRS (leaving the rigorous proof aside) elaborate and easier to comprehend. People are more intimidated by the math i guess, but the algorithms per se are quite easy. And the exercises are quite good.
- tumanian 15y agoThe C++ Programming Language and the ARM(Annotated Reference Manual) won me many interviews. After reading those I could claim that I know the language. Sadly, I could never find such concise reference for Python or Java (or Erlang, but there was no documentation anyway).
- edwinnathaniel 15y agoThe Java Programming Language, 4th Ed. (heard 5th in the making). This is the equivalent to The C++ Programming Language. Written by Ken Arnold, James Gosling, etc.
- zackattack 15y ago900+ pages is concise?
- edwinnathaniel 15y agoHave you read it?
- soiryx 15y agoPython: http://www.amazon.com/Python-Essential-Reference-David-Beazley/dp/0672329786 http://www.amazon.com/Python-Essential-Reference-David-Beazl... Java: http://www.amazon.com/Java-Language-Specification-The-Edition/dp/0321246780/ref=sr_1_1?s=books&ie=UTF8&qid=1332729944&sr=1-1 http://www.amazon.com/Java-Language-Specification-The-Editio... What do you mean you can't find them?
- zackattack 15y ago688 pages is not concise.
- cpeterso 15y agoAt 1000+ pages, I don't think The C++ Programming Language is a concise book.
- nn2 15y agoI read programming pearls about halfway until I discovered that a several of the samples were using gets() and could be trivially exploited for buffer overflows. Calling programs like that "pearls" just seemed too wrong to me to go on.
- edwinnathaniel 15y agoAs to my understanding, Programming Pearls focused lies between the range of elegant code and algorithms/problem solving as opposed to secured coding practice in the C programming language.
- lwat 15y agoStill, someone like Knuth will argue that correctness should not be sacrificed for elegance.
- edwinnathaniel 15y agoFeel free to crucify John Bentley. I know I'll learn more out of the book if I don't care of the small nitpicks like "gets()".
- sanxiyn 15y agoIIRC the book actually has a section where the author explains why he uses gets(), short variable names, etc.
- mahmud 15y agoI actively disrecommend Code Complete. I bought the first edition back when I uncritically acquired everything with a Jolt Award logo. It's a pile of tautologies and common sense. It tries to teach stuff that is best learned through experience. K&R was my second C book, and I love it for its authenticity, but I learned more from Kelly & Pohl's "A Book on C". The Mythical Man Month I read in anger after a project failed. It not only resonated with me, but cheered me up. Programming Pearls can't be "read" in the usual way, it's something I flip through when facing particular problems, but generally I savor it (ended up selling my copy after my 2 year backpacking trip, back when I swore I'll never write software again .. oops!) Effective Java (C++) are practitioner lore. Their teachings have been subsumed by the language community and you can see it in code bases. My advice is to learn to use your favorite editor with a TAGS file, then go navigate through a large open source project, and extend it in some minor way. That's more profitable than enduring any book on "design". I never cared for "Pragmatic" or "Test-driven" or "Agile" publications.
- sanxiyn 15y ago> My advice is to learn to use your favorite editor with a TAGS file, then go navigate through a large open source project, and extend it in some minor way. That's more profitable than enduring any book on "design". This is the truth. On the other hand, I learned from experience that people do not take this advice when you give it. Maybe plunging into large codebase is daunting, I don't know. Now I give them http://www.aosabook.org/en/ http://www.aosabook.org/en/ and tell them to choose an interesting project and then read it.
- anthonyb 15y agoThat book looks excellent - perhaps if all large open source projects included something similar, they'd get more contributors? I suspect that jumping into code with no overview of it's structure is going to be slower than if you have a clear framework to hang things on, which might explain the reluctance. Their follow up book also looks good: http://www.aosabook.org/en/makingsoftware.html http://www.aosabook.org/en/makingsoftware.html
- anthonyb 15y ago
- xarien 15y agoThis is so true and I'm completely guilty of it. I have a signed copy of The C++ Programming Language and often find myself recommending it when in fact, I've only read bits and pieces myself.
- charlieok 15y agoFunny that SICP isn't on either of the author's lists...
- mturmon 15y agoSICP is also oft-recommended, and very hard to work your way all through. But even reading (and working through -- that's essential) selective parts is an excellent experience.
- cruise02 15y agoI'm the author of that post. SICP is definitely the book that people most often tell me I missed when they read this. I hadn't even cracked it open at the time I wrote the post, so I didn't feel qualified to comment on it. (I've started reading it since. I haven't finished it yet, but I'd still recommend it to anyone who wants to learn Scheme or functional programming.)
- Shorel 15y agoI think that's a book that you can 'read' and you can really read it. By really read, I mean do the exercises. It makes the book a totally different and more complete experience. So, this can be a book people read, but not really read. If this makes sense...
- cletus 15y agoYa know, I would put a lot of the books most programmers have read on the second list. How many have actually read Code Complete (HN is probably a bad sample)? I totally agree about Design Patterns. That is perhaps the driest (I mistyped that as "direst"; Freudian slip?) technical book (or any book for that matter) I have ever tried (and failed) to read. Thing is, technical books don't have to be that way. The early Michael Abrash books (eg [1]) are actually highly entertaining. Effective C++ and Java are eminently readable. I lot of people recommend CLRS and I've certainly studied from parts of it but I found Skiena's The Algorithm Design Manual to be far more approachable and enjoyable. If your goal is to learn I suggest that. CLRS seems more aimed at people who want or need to know mathematical proofs or are bound for postgrad CS. TAOCP and the Dragon book are classic examples of books that get recommended all the time (on SO, here and elsewhere) but I'm convinced only a handful have actually read them. [1]: http://www.amazon.com/Zen-Assembly-Language-Knowledge-Programming/dp/0673386023 http://www.amazon.com/Zen-Assembly-Language-Knowledge-Progra...
- mturmon 15y agoI work at a government lab and I see TAOCP all the time on managers' shelves, generally in quite pristine condition. Sure looks classy up there.
- defrost 15y agoI studied mathematics in the 80's, a lot of my peers read the library copies routinely, either systematically from cover to cover, for specific reference, or for fun (flip open at random, see what you get) - maths people love maths books and TAOCP is very much a maths book - since then I've rarely met anyone with am actual volume set that seems to have any idea of the contents. The Dragon book I still own, a paperbound version that's as dog eared as a book can get and still hang together as it was the reference for three of us working on a few compilers of our own back in the day. The C Book I no longer have despite having bought four to five copies :( That book's never been much of a boomerang.
- Tangurena 15y agoI worked at one of the national labs and the books I'd see on shelves were usually ones from when folks were still students. The pristine unread books were either bound copies of the person's dissertation, or books he authored.
- anonymoushn 15y agoCLRS is a great book, I have read it, and other people should read it too. The first time I tried to read it I couldn't do the necessary math, so it took a bit more than two times through to grasp it. TAOCP I generally recommend as a reference because I can only speak to its usefulness when used as a reference. Edit: By "Other people" I do not mean "Other people who are doing graduate work" or "Other people who are in a senior level algorithms course." Really anyone who plans to do a significant amount of programming should read CLRS, even if he or she is still in high school.
- rpearl 15y agoI am an undergrad and have read most of CLRS and the dragon book. And I will certainly read TAOCP once I have the money to reasonably justify spending it on the set. I wouldn't really want to ever read a book on design patterns.
- lwat 15y agoI bet you $50 you'll never finish reading even book 1 of TAOCP.
- rpearl 15y agoI don't understand this comment. Why do you care?
- lwat 15y agoI'm just saying, those books are impossible to read cover to cover.
- TheNewAndy 15y agoI've read volumes 1-3 cover to cover (I even picked up a cheque along the way). I wasn't reading for maximal knowledge retention (e.g. I would rarely do any of the exercises, though I would read them all and think about how I would solve them), but now I have a pretty good idea of what is in there and what isn't.
- Someone 15y agoI think that heavily depends on one's prior education. I found them a fairly easy read. It's just applied number theory :-)
- lwat 15y agoThey're not meant to be read cover to cover, the same way you would not read a dictionary cover to cover. Knuth himself even says so in book 1.
- klochner 15y agoThe first list includes books that professionals read 2+years into their careers, the latter is a list of books that higher-level students read while doing an undergrad or masters degree. I'm guessing people lie about the latter because: a) they're much drier, and take more discipline to read b) they indicate a more rigorous training.
- mattdeboard 15y agoI'm about a year into professional programming with no education, and decided a couple of months back to buy Intro to Algorithms. I've worked through about 3/4 of the chapter, including the exercises (with no answers :-\). It is actually not very dry at all, considering the material!
- Revisor 15y agoAs suggested elsewhere, read The Algorithm Design Manual, it's much more readable (even if not as rigorous, with math proofs and such).
- revertts 15y agoTo me, a lot of this divide is between books I read cover to cover and books I consider references or pick up for very specific sections (like "Algorithms on Strings, Trees and Sequences"). CLRS, TAOCP, and Gang of Four are all books I haven't read in their entirety, but have been indispensable for certain topics. I still recommend them to people all the time, and feel perfectly justified doing so.
- mturmon 15y agoAgreed. But, a lot of the recommendations are written not with the tone you mention, but the tone of, "yeah, I worked my way through the whole book." In fact, very few do more than read selective chapters (which is OK).
- kabdib 15y agoMy data stuctures course used AOCP but we skipped the first section on MIX, and didn't use MIX at all. "Just ignore that junk," our prof said. I have fond memories of the second half of the first volume. I've used the other two volumes as references. The fourth volume I bought, but haven't had time to read in any detail; I might never get to it. Personally I liked Sedgewick's books on algorithms ("light and fluffy and readable") though I can't stand his coding style.
- statictype 15y agoI'm surprised that GEB isn't on the list of 'recommended but not read'
- dkersten 15y agoMy current list of most recommended books (and that I have read) are, in no particular order: Seven Languages in Seven Weeks The Elements of Computing Systems: Building a Modern Computer from First Principles The Pragmatic Programmer Programming Challenges Statistics: A Gentle Introduction (not exactly a programming book, but statistics is good for everyone to know and this is book is easy to read and good at explaining the concepts) I may also recommend SICP, CTM, The Art of Multiprocessor Programming, The Joy of Clojure, the OReilly book on Intel Threading Building Blocks, Reversing: Secrets of Reverse Engineering, Test Driven Development for Embedded C and others in certain situations but the above list is a general list I would recommend regardless of the persons proficiency level or programming interests.
- Homunculiheaded 15y agoI've read a good chunk of both the Dragon Book and CLRS. I can't even understand why someone would recommend the dragon book as a 'must read', if I was going to write a compiler again (outside of class) I would definitely search for a good alternative. It's good on theory, but I've never found it particularly enlightening. If you're not actually writing a compiler I can't think of any reason to read it. The CLRS on the other hand I really recommend anyone interested in CS and programming purchase a copy of. It's not a book you read cover to cover, but get the first 1/3 well understood, and then when you have some downtime pick it up, scan the chapters, pick one the piques your interest and either learn a new algorithm or refresh on something you're getting fuzzy on. To be fair I haven't spent any serious time with other recommended algorithms books, which I should. But every few months I find my self reading the CLRS and enjoying it.
- gnuvince 15y agoDragon book is something a compiler writer should read, but after he's gone through a compiler construction book first (I like Wirth's book; short and to the point). Definitely not an intro to compilation, it would scare me away.
- bad_user 15y agoThe Dragon book is not necessarily for people wanting to write compilers. That's an easy task for simple languages that gets even simpler by the usage of modern tools. Any developer that understands regular expressions and remembers some material from their Theory of Computation classes should have no problem building compilers. The Dragon Book is however for people wanting to build parser combinators.
- 4ad 15y agoI mistakenly upvoted you instead of downvoting you. You can't parse context-free or context-sensitive languages with regular expressions. You probably mean that there are lexer generators that generate a lexer based on a regular expression specification, but you still need to provide a grammar to the parser generator if you don't write a parser by hand. To be able to produce a grammar specification for the parser generator you need to understand formal grammars. To be able to produce an useful specification you really need to understand the general parsing algorithms and how the specific parser generator works. All of this is vastly more involved than just understanding regular expressions. And this is just parsing, arguably the easiest part, not generating code or interpreting or all the other steps compilers might do. Yacc is at least 33 years old, newer tools are better in some ways, for example Bison can generate a GLR parser, but they are just as easy (or hard) to use and require the same knowledge. > The Dragon Book is however for people wanting to build parser combinators. You probably meant parser generator, parser combinator is a different thing: http://en.wikipedia.org/wiki/Parser_combinator http://en.wikipedia.org/wiki/Parser_combinator
- timr 15y agoI pretty much assume that anyone who claims to have read Introduction to Algorithms or TAOCP is using the claim colloquially. I've read parts (large parts, in the case of Introdcution to Algorithms), but neither is a book that I want to read cover-to-cover. They're best used as reference books. That said, there's definitely a huge number of people who claim to have read Design Patterns, but actually have only read about Singletons and Factories in a Java book. It's a shame, because Design Patterns is one of the most formative books I've read as a programmer. Everyone should read it -- observing the way that patterns are (mis-)used in Java is a poor substitute for wrapping your head around the insights in GoF.
- grout 15y agoMythical Man Month and Silver Bullet essay ought to be mandatory. K&R as well, and Stroustrup (both C++PL and Design and Evolution of C++). Programmers don't stand on each others' shoulders, but each others' feet.
- cruise02 15y agoAnyone who's working in industry (particularly if you're in any danger of being promoted to project lead) should read Brooks. The others are more language-dependent, but the lessons in MMM and NSB are applicable to everyone in software industry or any kind of project management.
- willvarfar 15y agoTangentially, I recently made a list of books I think every programmer would enjoy reading: http://williamedwardscoder.tumblr.com/post/19794076450/a-few-books-you-must-read http://williamedwardscoder.tumblr.com/post/19794076450/a-few... Aside, in every programming job I've been in, there's been other programmers keen to lend me Terry Pratchett books.
- capkutay 15y agoAnytime I'm a little unclear or need a refresher on a sorting algo or how a data structure is implemented, I've found CLRS to be an extremely useful resource. It has been a life saver in my algorithms class (undergrad)...I think it works best as a supplement to lectures and exercises you would encounter in any data structs/algo class. It's especially useful for exam practice. I would guess that the exercises would also be really helpful practice for job interviews..But its not the kind of book I'd sit and read cover to cover.
- LVB 15y agoI'd be tempted to add Numerical Recipes in C to the second list. I've often referred to it for various algorithmic problems thinking that it will be helpful and practical (examples in C!), but I'm usually disappointed. Most of it is targeted at very technical, math heavy problems. But hey, should my job require use of Toeplitz Matrices, NR is just an arm's length away! This is NOT at all a knock on the book, since the title makes quite clear what it's about. But for whatever reason this one seems to end up on various "good to have on your shelf" lists when it probably isn't.
- Maro 15y agoI think Numerical Recipes is more of a reference. Eg. my professor owned NRC, and he did use it, especially the CD, to take algorithms as a plug-and-play starting point when doing some numerical analysis. Of course, you can also get similar algorithms off the web, but some professors are old-school like that.
- pm90 15y agothat book contains many errors and should not be relied upon http://www.cs.umd.edu/~oleary/c660/survival.html http://www.cs.umd.edu/~oleary/c660/survival.html (look under dubious software)
- gregjor 15y agoSurprised Tufte's books aren't on the second list. I see programmers referring to Tufte but I doubt many have read his books. I recommend them. I nominate Stepanov's Elements of Programming to the second list. Beautiful, dense, and a perpetual shelf ornament. Stepanov's papers, especially the one that launched the STL, Fundamentals of Generic Programming (with James Dehnert) is a masterpiece. I have some favorites that show my age: Software Tools by Kernighan and Plauger. Can be thought of as the poor-man's Dragon book. The Practice Of Programming by Kernighan and Pike. As if the UNIX way needed any defending after almost 40 years. Reliable Software Through Composite Design and Composite/Structured Design by Glenford Myers. You have to get past the ancient languages and flowcharts. These books describe modularity and module strength and coupling and are full of good ideas that still apply. Database In Depth by C.J. Date, for programmers who haven't read Date's textbook on databases and probably don't need to. I do wish the NoSQL weenies would read Date's Introduction To Database Systems for some history and humility. Database technology has been there, done that, moved on.
- jcromartie 15y agoI have The Visual Display of Quantitative Information, and it's an inspiring read. Which other books would you recommend for developers?
- Jach 15y agoI second The Practice of Programming. I was also forced to read Pragmatic Programmer for a class in school, I was happy to find that this review sums up my thoughts perfectly about that: http://www.amazon.com/review/R3KBSGSQDBND0N/ref=cm_cr_pr_perm?ie=UTF8&ASIN=020161622X&nodeID=&tag=&linkCode= http://www.amazon.com/review/R3KBSGSQDBND0N/ref=cm_cr_pr_per... Another commenter mentioned SICP, I'd add Let Over Lambda and On Lisp which while I haven't read cover to cover I've enjoyed every section I've read so far... In the end I don't really agree with the author's conclusions that we shouldn't recommend books we haven't read at all. Passing on recommendations of others is defensible--after all, if someone asks for a recommendation they usually want one, not a response of "I don't know" or "Go do your own research!"
- gchpaco 15y agoTufte's books are actually very readable and approachable, unlike say TAOCP (which is very well written but so unbelievably dense…). I don't think it's unreasonable to expect people to actually read them.
- cjdrake 15y agoSome of the people responding to this thread might consider that they are proving "Bill the Lizard" correct :). I laughed when I read the article because I have checked out every one of the books he says programmers claim to have read (TAOCP, etc) from my company's internal library, and though I skimmed interesting parts (Go4, especially), I hardly read them.
- irahul 15y agoAmong the books "programmers have read", I have read K&R, Programming Pearls and bits and pieces of Effective Java and C++. I thoroughly enjoyed these books. The other books on the "have read" list are on my "don't bother reading" list. Code Complete, Pragmatic Programmer, Mythical Man Month et al aren't my kind of books. As far as design patterns go, I believe if you code in Python/Ruby/Perl etc, books covering them in Java/C++ are needlessly verbose and boring. I recommend Alex Martelli's talks http://www.youtube.com/watch?v=0vJJlVBVTFg http://www.youtube.com/watch?v=0vJJlVBVTFg http://www.youtube.com/watch?v=1Sbzmz1Nxvo http://www.youtube.com/watch?v=1Sbzmz1Nxvo And this book which covers design patterns using Ruby. http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452 http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/032... Both approaches actually show you practical examples of design patterns in the standard library or real world problems, and shuns patterns which aren't applicable to the language or are too trivial. These talks aren't the end-all, but they will give you a good overall knowledge, and will make further exploration easy. And from the "haven't read" list, CLRS is a good book and isn't as dense as it is generally taken to be. It does have sections on proofs, but you can skip it and jump directly to the data structure/algorithm. The pseudo code used in the book is extremely clear, and will convert to simple python in most of the cases. Use it as a reference, or read first few hundred pages. If the book isn't for you, you will know it after you have read the first 100 pages. Another book I recommend is Sedgewick's book on Algorithms. I have read the C version. It mostly covers basic data structures and some accompanying algorithms. The code is succinct(sometimes needlessly so) and more importantly, it works. It doesn't sit well with everyone, but I liked it - it helps me see the whole picture without bombarding me with a lot of code. Skiena is another obvious favorite. Dragon book is decent, but you need guidance and discipline to make anything out of it. Consult your peers or teachers while using the book, or use another book. I haven't read TAOCP and it's low on my list for now. I have read bits and pieces and I didn't find it as fascinating as I had hoped. It's dense and extensive, and can be used as reference. "Effective C++" will be a better alternative to "The C++ programming language". But I must say, when I first read "The C++ programming language", I found it fascinating - lengthy, but fascinating. That would be mainly because I was beginning programming when I first read it.
- cpeterso 15y agoChristopher Alexander's A Pattern Language: Towns, Buildings, Construction is a candidate. It is cited as the inspiration of the Design Patterns book. But it is actually a very good (though long-winded) book.
- andyjohnson0 15y agoHis book A Timeless Way of Building is also good. Nothing thats really applicable to software though, but very insightful.
- lhnz 15y agoI have been reading a Timeless Way of Building. I am enjoying it -- is it worth reading the next book?
- nwmcsween 15y agoI've read quite a few of these, the problem with most of the ones listed is simple - they are technical or seemingly so simple (K&R) that reading them all the way through is a test of attention.
- BonoboBoner 15y agoDespite the author mentioning it, I could not get through Effective Java. It was well written and informative, but I got the feeling that it mostly taught me about deficiencies of JVM or the language design.
- grey 15y agoI've always found that knowing the deficiencies of a language is the best way to know the language. Anything that works well should be pretty intuitive and comfortable, but knowing exactly where the trouble spots of a language are let you be aware when you approach them, and know how to handle them.
- alephnil 15y agoI have read none of the books on the first list, but 4 of 5 on the second, is it something wrong with me? To be more serious. All the books on the second list comes from people that were signinficant contributors to the field the book is about. That does not automatically make them good writers. All of the books on the second list is on the dryer end of the scale. I would recommend Appel's compiler book instead of the Dragon Book for example, even if it is less comprehensive. The Dragon book is written in an extremly confusing way (some oldtime compiler people have even described it as confused, esp in first edition).
- leon_ 15y agoHuh, seems I'm a strange guy. From the "everybody has read" list I just read 2 books (pragmatic programmer and the 2nd edition) but from the list "everybody recommends but no one actually reads" I only haven't read introduction to algorithms.
- stephan83 15y agoI read most from the second list, but only two from the first... hipster coder.
- calloc 15y agoI can honestly say that I have not read any single one of those books. My first C++ book was C++ for dummies, after that everything I learned was from online tutorials, from actually doing it, and then by the time I reached college my knowledge was already above what the instructors were teaching in class. I have quite a few programming books, mostly cookbooks though, that show little examples/snippets and or O'Reilly reference books that I used to purchase when starting a new language to get an idea for the syntax. The best book that I have ever bought and read was "Advanced UNIX Programming" by Marc J. Rochkind. It helped me get a much firmer grasp on Unix programming and along with it C which I was lacking at the time. I've got a copy of the Dragon book sitting on my desk, it is waiting to be read, waiting to be devoured and played with, but so far I just haven't had the time. One book I would like to read and wrap my head around is the Gang of Four book, it seems like it is important to know the various different design patterns, but so far I don't feel like I have missed out and can recognise good design practices based solely on how they feel while I am writing them.
- martininmelb 15y agoThis story about Steve Jobs is probably relevant: I was sitting in Steve's office when Lynn Takahashi, Steve's assistant, announced Knuth's arrival. Steve bounced out of his chair, bounded over to the door and extended a welcoming hand. "It's a pleasure to meet you, Professor Knuth," Steve said. "I've read all of your books." "You're full of shit," Knuth responded. (http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt http://www.folklore.org/StoryView.py?project=Macintosh&s...)
- dubya 15y agoI sort of wish this were true, though it doesn't sound like something Knuth would say, but apparently it's a myth: http://www.catonmat.net/blog/don-knuth-steve-jobs/ http://www.catonmat.net/blog/don-knuth-steve-jobs/
- andyjohnson0 15y agoFrom the article: The problem with Design Patterns is that much of the information in the book (but not enough of it) is accessible elsewhere. Maybe now, but I don't think this was true when the GoF book was published in 1995. My recollection is that there weren't a lot of books on software architecture (code- or system-level) back then because it wasn't so much of an issue. Most of us were writing monolithic C code or trying to get reuse of C++ libraries. The whole "architecture astronaut" thing hadn't got started. That is was so ahead of its time is what makes it an important book.
- cruise02 15y agoYou're absolutely right. Maybe that should have been "The problem with design patterns..." That is, it's not a problem with the book itself at all, but a problem with the message in the book being disseminated and often watered down.
- oskarth 15y ago> I often hear TAOCP described as the series of programming books "that every programmer should read." I think this is simply untrue. Before I'm burned at the stake for blasphemy, allow me to explain. Really? I find that articles, blog posts and comments like to point out that this is something people actually say. I think that is untrue. It feels like one of the standard pseudo-oppositions that people take in order to write a piece - as if it was controversial - even if it isn't. Obviously it's placed on greatest CS books list, or something that is valuable to have as a reference, but that's not the same thing as it being recommended reading for programmers.
- officemonkey 15y agoI can't believe "Structure and Interpretation of Computer Programs" isn't on that list anywhere.
- tripa 15y agoSee there: http://news.ycombinator.com/item?id=3754747 http://news.ycombinator.com/item?id=3754747
- signa11 15y agono recommendation for 'c interfaces and implementation', surprised...
- npsimons 15y agoIntroduction to Algorithms (CLRS) This book may have the most misleading title of any programming book ever published. It's widely used at many universities, usually in graduate level algorithms courses. As a result, any programmer who has taken an algorithms course at university probably owns a copy of CLRS. However, unless you have at least a Masters degree in Computer Science (and in Algorithms specifically), I doubt you've read more than a few selected chapters from Introduction to Algorithms. Really? Because I still have mine from undergrad, and when I was using it to prep for a Google on-site, I was surprised that I had forgotten how far into it we had gone (there are dog ears back to chapter 36). Of course, that class was over ten years ago, and I (unfortunately) don't get to use it much these days, being that I mostly deal with RF and E&M.
- raffi 15y agoDon't forget to add Goedel, Escher, Bach to the list of books most recommend, claim to have read, but haven't.
- noarchy 15y agoMy first programming book was K.N. King's "C Programming, a Modern Approach" That remains one of the few programming-related books I own that has endured some wear. I actually have read the GoF book, but I'm not sure that I'd recommend it to anyone.
- pbiggar 15y agoI try as hard as I can to turn even aspiring compiler writers away from the Dragon Book. You don't need a the theoretic underpinnings of 5 types of parsing to write a compiler, and I doubt anyone could use the Dragon Book to actually write a compiler. I give an emphatic thumbs up to "Engineering a Compiler" (Cooper/Torczon) and also to the Appel books. They are fantastic, readable and digestable, and actually help get a compiler written.
- sixtypoundhound 15y agoAt the risk getting flamed to a crisp for even suggesting the language or the title, I'd recommend PHP for Dummies and the companion book, everyday projects in PHP, as a starting point for a completely new web developer. It's highly digestible, covers many basic concepts (HTML, loops, control flow, variables, sessions, databases, oop), and has a number of good projects to walk through. While I've moved on to significantly more advanced topics (Python, functional programming), it took me a long way and laid a pretty solid foundation for the future. They actually went relatively deep in the details of how a website works. BTW - I'd avoid ASP.Net for dummies. Relatively little code contained in that one...