Ask HN: What fiction/non-fiction book should everyone read on the topic of CS?
This should be interpreted in the broadest sense to include books like both American Kingpin and Practical Vim as examples.
This should be interpreted in the broadest sense to include books like both American Kingpin and Practical Vim as examples.
Dan Brown Digital Fortress noivel about cryptoanalysis
Naming only ones I haven't seen mentioned in other comments:
- Networking for Systems Administrators, by Michael W. Lucas. Its explicit goal is to teach you just enough about networking, from the electron up, that you can talk to an actual network engineer and not make a fool out of yourself. It's a phenomenally high-ROI read if networking isn't your strong suit.
- The first 3 chapters of Mastering Regular Expressions. Regexes are up there with Vim keybindings in terms of sheer ubiquitous use no matter what stack you find yourself in. The rest of the book is excellent if you want to actually implement a regex engine.
- The Art of Unix Programming. Less technical. Gives you an idea of why exactly 'nix machines are like that, especially older commands. The 18 rules of design are worth committing to memory.
- The Linux Programming Interface. More technical. Pairs esp nicely with the above. Lots of practice C code one can run, plenty of short self-contained chapters.
- Not a book, but an online paper: https://how.complexsystems.fail . I see echoes of this everywhere I work, and it often helps me understand what kinds of "bad" things are secretly highly evolved resiliency measures.
- The Little Schemer. Just for the joy of solving problems.
Most of the others I can think of are too specialized to be of worth to everyone, but for what it's worth, William S. Vincent's Django for Beginners, APIs, and Professionals are a lovely triptych for anyone wanting to get into backend web dev.
UNIX: A History and a Memoir by Brian Kernighan.
Brian wrote The C Programming Language (the book), along with many other great books. He worked at Bell Labs during the time of Unix and it's a casual, whimsical telling of some of the history there.
This looks outstanding. Thanks for the sharing!
The Cuckoo's Egg (Clifford Stoll, 1989)
Came here to say this.
John Ousterhout's "A Philosophy of Software Design" I liked. It was supposed to be assigned reading for Berkeley's data structures class CS61B, and I don't think I really internalized the lessons within, but after re-reading it recently, I appreciated it a lot more and found the material transcends how to write code but also how to architect things as well.
When Sysadmins Ruled the Earth
Zen and the Art of Motorcycle Maintenance was a HN favorite, but seems to have dropped off the charts. It's not exactly CS, but covers the topic of tech and quality.
I really didn't like that book. Shop Class As Soulcraft is a far more lucid treatment of the topic in my opinion.
Soul of a New Machine
Showstopper
Books that pull me from the darker mood from time to time.
TAoCP is worth trying to read.
The Phoenix Project.
Don't know who you mean by "everyone," but the only two mentioned so far suitable for a broad audience are The Soul of a New Machine and The Cuckoo's Nest.
"Computer Power and Human Reason: From Judgment to Calculation" by Joseph Weizenbaum
What the Dormouse Said: How the Sixties Counterculture Shaped the Personal Computer Industry / John Markoff
Personally really enjoyed Code: The Hidden Language of Computer Hardware and Software
The Dragon Book: Principles of Compiler Design (Alfred V. Aho, and Jeffrey D. Ullman, 1986)
Soul of a New Machine (Tracy Kidder, 1981) the experience building the DG 32 bit mini.
Where Wizards Stay Up Late: The Origins of the Internet, (Katie Hafner, 1998)
MANIAC & Turing's Cathedral
A Quarter Century of UNIX, (Peter Salus, 1994)
I Am a Strange Loop (Douglas Hofstadter, 2007)
> In the end, we are self-perceiving, self-inventing, locked-in mirages that are little miracles of self-reference.
— Douglas Hofstadter, I Am a Strange Loop, p. 363
Gödel, Escher, Bach, an Eternal Golden Braid (Douglas Hofstadter, 1979)
[dead]