Without a doubt one of the best technical books I have ever read.
To me, it was a missing piece of the big puzzle of "how do computers work". I read many a book to answer this question, and came away with three books:
- CODE by Charles Petzold explains the CPU
- Operating Systems: Three Easy Pieces by Arpaci-Dusseau explain OSes
- Crafting Interpreters by Robert Nystrom explains programming languages
These look great, and judging by other people's comments, are instances of a class of book I will poorly describe as "lovingly-crafted works of art on highly technical CS topics", a genre that I am always on the lookout for more examples of.
From my own experience, some examples might be:
- SICP, by Abelson and Sussman
- Paradigms of Artificial Intelligence Programming, by Norvig
By general acclaim, some examples might be:
- How to Design Programs, by Felleisen et al
- Beautiful Racket, by Butterick
- LISP In Small Pieces, by Queinnec
- The Art of Computer Programming, by Knuth
- The Elements of Computing Systems, by Nisan and Schocken
What else comes to mind? (My list is very LISPy, but that's just bc I have high awareness there.)
It's not really CS, but alongside the books you have listed (I have most of those physically and as eBooks!) I absolutely adore "The Art of Electronics" as the Bible to electronics. It's definitely helped me out immensely.
That's a great example -- I know people who have that and feel a religious zeal for it. That "religious zeal about a technical / science created with art and care" book is the feeling I'm really after.
Right, exactly: when that much care is put into a resource, I truly feel that I enjoy it more, even if the material itself might seem dry at first. Those kinds of feeling books are truly special.
100%, which reminds me: another example of books created with incredible care are anything by Douglas Hofstadter. The canonical example is Goedel, Escher, Bach; but one that I think is super under-rated is Le Ton beau de Marot -- not only does he care about the content, but the page layout, the font, everything. Truly a labor of love and obsession.
Compiler Construction Using Java, JavaCC, and Yacc[0]
In my opinion, this has been underrated book. I learned a lot from this book. I enjoyed it and plan to read it again.
If you could check it out. It contains solid explanation from theory to implementation. I'm not affiliated with the author, I just wanted to show I'm grateful for his work.
YMMV but I found them to be pretty complex and required some in depth knowledge of both assembly and C. Implementing threads/clone at the sys call level required knowing how to set up the stack and registers for the new process. If I recall correctly there was also a hard problem about virtual memory, but this was 3 years ago.
I have started reading Introduction to Computer Organization by Bob Plantz, and I think it would also tell someone a lot about how computers work. It starts with hardware and builds into Assembly and eventually higher level concepts like OOP.
Similar vein re: CPU, targeted at an undergrad level, you might enjoy _Computer Systems: A Programmer's Perspective_ by Bryant and O'Hallaron (https://csapp.cs.cmu.edu/) At least I found it a really well-written and integrative text coming from knowing C and wanting to learn the next level down well. Ties in with the OS bits on the "top side" too.
To me, it was a missing piece of the big puzzle of "how do computers work". I read many a book to answer this question, and came away with three books:
- CODE by Charles Petzold explains the CPU
- Operating Systems: Three Easy Pieces by Arpaci-Dusseau explain OSes
- Crafting Interpreters by Robert Nystrom explains programming languages
Masterfully done.