Ask HN: What fiction/non-fiction book should everyone read on the topic of CS?
29 points by Eavolution 4 days ago
This should be interpreted in the broadest sense to include books like both American Kingpin and Practical Vim as examples.
29 points by Eavolution 4 days ago
This should be interpreted in the broadest sense to include books like both American Kingpin and Practical Vim as examples.
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.
Soul of a New Machine
Showstopper
Books that pull me from the darker mood from time to time.
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.
Personally really enjoyed Code: The Hidden Language of Computer Hardware and Software
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
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.