8 ms·
Ask HN: What are the bibles of Computer Science?
I am building out my CS book collection, and I was curious to see if there is a widely accepted group of textbooks that are considered the bibles of different CS fundamentals. For an example:
* Brian Kerrigan's "C Programming Language" for C language
* W. Richard Steven's "IP/TCP Illustrated" for networking
Thoughts?
- d0lph 10y agoWritten by the creator of the language, 1300 pages long and weighing almost 4 pounds: The C++ Programming Language, 4th Edition https://www.amazon.com/C-Programming-Language-4th/dp/0321563840 https://www.amazon.com/C-Programming-Language-4th/dp/0321563...
- tmaly 10y agoI would add Clean Code to the list just because the concepts are applicable to many languages
- ZanyProgrammer 10y agoI think Code Complete is much better-Clean Code was more about (IIRC, feel free to correct) praising the glory of agile dev than good coding practices in general.
- tmaly 10y agoI also own Code Complete. Its a good book, but I think Clean Code is a little shorter and easier to digest.
- coverband 10y agoI don't remember reading Clean Code, but reading Code Complete (in the '90s) was a real eye-opener for me. It's a very friendly book with practical advice that's still valid even after 2-3 decades...
- yeraydarias 10y agoBoth books are good, and I don't believe Clean Code is praising the glory of agile dev, it talks about technical good practices ... practices that can be applied to any objected oriented language in general, doing agile or waterfall or whatever ... IMHO.
- jonkiddy 10y agoThe Pragmatic Programmer from Andrew Hunt. Very informative book. It is a book filled with opinions/tips from experienced programmers, some of which apply and some don't. The ones that do are invaluable.
- simon_acca 10y agoKnuth's "The art of computer programming" is definitely the bible of algorithmics: https://en.m.wikipedia.org/wiki/The_Art_of_Computer_Programming https://en.m.wikipedia.org/wiki/The_Art_of_Computer_Programm...
- 0xdeadbeefbabe 10y agoThe Dream Machine is good for history and genealogy, much like the real Bible. Edit: It's more popular to ignore history, but you can find Shannon's information theory, As We May Think, Cybernetics, etc. along with historical context. It might keep you from pretending you have invented the wheel.
- jhassell 10y agoAlso see the real Bible for the ultimate in practical lifehacks: https://www.biblegateway.com/passage/?search=Proverbs+1&version=NIV https://www.biblegateway.com/passage/?search=Proverbs+1&vers...
- steveeq1 10y agoDo you mean "Dream Machines"? https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines Alan kay listed this on his list of good books: http://www.squeakland.org/resources/books/readingList.jsp http://www.squeakland.org/resources/books/readingList.jsp
- 0xdeadbeefbabe 10y agoThe Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal Thanks for that list of books from Alan Kay. He's the one that recommended The Dream Machine to me most recently.
- showerst 10y agoIntroduction to Algorithms (CLRS) - probably the closest you'll get for Algorithms, next to Knuth. It's also updated relatively often to stay cutting edge https://mitpress.mit.edu/books/introduction-algorithms https://mitpress.mit.edu/books/introduction-algorithms AI, a modern approach (Norvig & Russel) - For classic AI stuff, although nowadays it might fade a bit with all the deep learning advances. https://www.amazon.com/Artificial-Intelligence-Modern-Approach-3rd/dp/0136042597 https://www.amazon.com/Artificial-Intelligence-Modern-Approa... While it's not strictly CS, Tufte's Visual Display of Quantitative information should probably be on every programmer's shelf. https://www.amazon.com/Visual-Display-Quantitative-Information/dp/1930824130 https://www.amazon.com/Visual-Display-Quantitative-Informati...
- ng12 10y agoSICP. In addition to being an incredibly illuminating read on programming fundamentals it was also the foundation of a religion on 4chan's old programming board.
- johan_larson 10y agoWould you elaborate?
- credit_guy 10y agoNot OP, but SICP stands for "Structure and Interpretation of Computer Programs". It is available online; it is generally regarded as one of the great CS books. As for religion, I have no idea what that means.
- deleted 10y ago[deleted]
- agumonkey 10y agoI think it was already the root of the Church of Lambda Knights before that ;)
- abakker 10y agoThe Mythical Man Month - Fred Brooks It is amazing how this book can be interpreted as having predicted the necessity of Agile/DevOps long before the tooling was really available to easily enable that methodology. https://www.amazon.com/Mythical-Man-Month-Essays-Software-Engineering/dp/0201006502/ref=pd_sbs_14_t_1?_encoding=UTF8&psc=1&refRID=2MPWMC784KG14MMCTDZN https://www.amazon.com/Mythical-Man-Month-Essays-Software-En...
- mtVessel 10y agoBrooks' view is much more closely aligned with Boehm's Spiral Model than with Agile. He valued an overarching design that satisfied all stakeholders before construction. He also recommended a top-down approach to iteration, which means prototyping the entire system with each iteration, in successive degrees of refinements. I find that very different than picking features to implement with each sprint. He also found PERT charts to be invaluable, and I can't imagine he would find Kanban boards a sufficient substitute.
- baddox 10y agoWhile not a reference book or software engineering book like the rest of the suggestions, I'll throw in Godel, Escher, Bach. It's pretty difficult to explain, but if you're deeply interested in computer science and want a challenging and mind-expanding read, it's an easy recommendation.
- cr0sh 10y agoThe author's (Douglas R. Hofstadter) other two books (which kinda form a trilogy) are also great companions: The Mind's I: Fantasies And Reflections On Self & Soul I Am a Strange Loop ...and yes, they are all very challenging reads. On the "computer science" perspective, they are definitely worth reading if you are at all interested in machine learning, artificial intelligence, artificial (and actual) neural networks, and how these subjects relate to the "philosophy of mind" and similar related "hard problems" in CS and mathematics.
- belovedeagle 10y agoCalling The Mind's I "Hofstadter's" is a bit misleading; he's its co-anthologist. Nevertheless, a great read; it introduced me to Borges which is praise enough.
- baccheion 10y agoLook on Goodreads and Amazon for books with 4.2+ stars (preferrably 4.6+, but those are uncommon) ratings, then filter from there. They need to have a good number of reviews (to suggest they've been read some number of times).
- Someone 10y agoThe examples you give, for me, aren't computer science (TAOCP, SICP), but "pivotal technologies" (to those, I would, for example, add books about Algol, early Unix and git) You may consider splitting your collection in three parts: those two and software engineering (examples: the mythical man-month, the psychology of computer programming), which itself can be split into a technical and a social part. Doing that may show gaps in your library/where your interests lie.
- dmux 10y agoObject Thinking by David West.
- Jtsummers 10y agoWhat's your background? For CS, I'll concur with others on these (for algorithms): Introduction to Algorithms, Cormen et al. The Art of Computer Programming, Knuth I'll add: Introduction to the Theory of Computation, Sipser More on the math side, I found this helped me bridge the gap between Calculus (and other continuous maths) and discrete math topics: Concrete Mathematics, Knuth et al. SICP is good, and worth recommending, along with the Schemer series (Little, Seasoned, Reasoned). I have both The Reasoned Schemer and The Little Prover here at my desk. I had intended to work through them on my lunch breaks but, well, that hasn't happened yet. I don't know how much these are "bibles" versus good introductions to their topics, not really reference books. My library is at home, I'm trying to run through what all I have and would recommend in particular of that collection. On the practical, software engineering, side: Mythical Man Month, Brooks Fantastic read on real-world experiences on a large-scale project. Every essay in there is worth reading at least twice, and several are worth rereading every year just in case you forgot the lessons. I am currently wracking my brain to recall the other titles, may edit later.
- mrlyc 10y agoThe Psychology of Computer Programming by Gerald Weinberg. It considers programming as a human activity and introduces the concept of egoless programming.
- agumonkey 10y agoInteresting, did he coin the egoless term ? does the book speak about "state of flow" or similar ?
- dubious00 10y agoHow about Gang of Four? or The C Programming Language K&R
- dubious00 10y agoThe C Programming Language (sometimes referred to as K&R, after its authors' initials) || The 23 Gang of Four (GoF) patterns
- voycey 10y ago+1 for GoF - still relevant as well despite people moving against "patterns"
- randcraw 10y agoThese books are all venerable CS standards (AKA bibles) that teach principles well, though probably not the most up-to-date: "Compilers, Principles, Techniques and Tools", by Aho, Ullman, Sethi, Lam "Artificial Intelligence: A Modern Approach", by Russell, Norvig "Computer Architecture: A Quantitative Approach", by Patterson, Hennessy "Computer Networks", by Tannenbaum "Operating System Concepts", by Silberschatz
- agumonkey 10y agoAho's compiler was intimidating, but it's one of my favorite experience of the last 5 years. Not approachable, but every neuron you give is rewarded twice.
- yeraydarias 10y agoYes, it is a very complex book, but without any doubt THE BOOK if we are talking about compilers. A must if your want to know how a compiler works.
- JamesBarney 10y agoFor Software Engineering I recommend anything by Steve McConnell such as 'Code Complete', 'Software Estimation', and 'Rapid Development'.
- clentaminator 10y agoWhy's Poignant Guide to Ruby I don't consider it a bible of CS, but it's one of the most playful, imaginative and, essentially, fun, introductory programming books that I've read. The analogy of the truthiness of a value as an energy or life force that flows through your program, or Ruby's ranges depicted as accordions, are just some examples of the book's approach to visualising some of the aspects of programming that seem so rote after you've used them for a while. How useful it is to someone learning to program is questionable, as the book's style might get in the way of teaching fundamentals, but it's certainly fun to read as an experienced programmer (imho, of course).
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- agumonkey 10y agoWhat about non-bibles ? Henderson's FP book: https://www.amazon.com/Functional-Programming-Application-Implementation-Henderson/dp/0133315797 https://www.amazon.com/Functional-Programming-Application-Im... Watson's Lisp: https://www.amazon.com/Lisp-3rd-Patrick-Winston/dp/0201083191 https://www.amazon.com/Lisp-3rd-Patrick-Winston/dp/020108319...
- convolvatron 10y agoLisp in Small Pieces (Cambridge University Press, 1996 ISBN 0-521-56247-3; paperback edition (December 4, 2003) ISBN 0-521-54566-8; translated by Kathleen Callaway) is a book by Christian Queinnec on Lisp, Scheme and other related dialects, their interpretation, semantics, and compilation and contains code for 11 interpreters and 2 compilers.
- convolvatron 10y agooh yeah, this one too: The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling Raj Jain ISBN: 978-0-471-50336-1 720 pages April 1991
- kasey_junk 10y agoAm extremely disappointed that this scene in the movie Hackers has not been referenced: https://m.youtube.com/watch?v=4U9MI0u2VIE https://m.youtube.com/watch?v=4U9MI0u2VIE
- leemck 10y agoAbout 30 years ago, my VW and a thousand dollars of tools, having been stolen and stripped, I left my low budget Malibu bodysurfing, workbench with an oscilloscope, free Lincoln Heights cabin and moved to Berkeley and enrolled in the first UCB extension course for the holy grail (at the time) of learning Unix and C programming. I started building the best library of computer programming books I could buy and about 1/4 of the books mentioned here were my choice then too. My recommendation to you is extend your computer science interest by going to college and mastering the fundamentals and also in your junior and senior year join in on the most interesting academic or scientific programming projects you can find. These days a Degree is required and your employer is hoping to benefit from the esoteric work you did in college.
- flukus 10y ago"Joel on Software". Much like the bible, it's full of parables that can be interpretted in multiple ways, contains a lot of advice that is no longer relevant and contains enough good parts to cherry pick that I can consider myself a spolskyite.
- nekopa 10y agoSteven Skiena's The Algorithm Design Manual. Especially the "war stories" contained within.
- CarolineW 10y agoProgramming Pearls, by Jon Bentley The Elements of Computing Systems, by Noam Nisan and Shimon Schocken and its accompanying website: http://www.nand2tetris.org/ http://www.nand2tetris.org/
- kchauhan 10y agoFor cryptography : bruce schneier's applied cryptography
- yomritoyj 10y agoI would say that the words 'science' and 'bible' do not go well together. The books mentioned in the answers are all worth looking at, but they take you only up to the foothills of the discipline and are no substitute for reading widely and working things out on your own.
- ddoherty03 10y agoMight I add, "The UNIX Programming Environment" by Kernighan and Pike, 1984. Still the best book on how all the tools of the UNIX command line work together for someone new to the shell, culminating in a parser for a small language using lex and yacc. Just saying.
- deepaksurti 10y agoPAIP: https://www.amazon.com/Paradigms-Artificial-Intelligence-Programming-Studies-ebook/dp/B003VWBY1I/ https://www.amazon.com/Paradigms-Artificial-Intelligence-Pro... While it deals with classical AI techniques, it is worth working through this book. Especially the AI example chapters where Norvig teaches how to go from specification to implementation and iterate over the design to fix problems etc. Backed by Common Lisp which allows this quick iteration by getting out of your way, this book is one way to fall in love with programing. Warning: Once you are done with this book, be prepared to handle the less powerful systems and I am not implying here CL is the most powerful programming environment.
- briHass 10y agoFor the hardware side: "Code" by Charles Petzold. https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319 https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
- CmdrSprinkles 10y agoMight not be full bible level of importance, but if you intend to do any work on Fortran and legacy science codes, "Modern Fortran Explained" by Metcalf, Reid, and Cohen is a must. Better examples and explanations than anything you can find on stack overflow with a focus on f90 (the most commonly accepted flavour) while also discussing the useful parts of 2003.
- Lordarminius 10y agoNot CS exactly but for Linux you could do worse than Linux Bible 9th Edition by Christopher Negus
- derstander 10y agoA little unorthodox, and not exactly a bible, but I enjoyed Feynman's Lectures on Computation. His CS chops include administering the computation group (of human computers!) during the Manhattan Project and a little work on the Connection Machine (including, apparently, a new method for computing logarithms).
- EvgeniyZh 10y agoModern Operating Systems by Tanenbaum