
Wizard Book n. Hal Abelson's, Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs (MIT Press, 1984; ISBN 0-262-01077-1), an excellent computer science text used in introductory courses at MIT. So called because of the wizard on the jacket. One of the bibles of the LISP/Scheme world. Also, less commonly, known as the Purple Book. from The New Hacker's Dictionary, 2nd edition (MIT Press, 1993)
As for books, I don't have many to recommend beyond Michaelson's book except maybe a few classics like Cormen's Introduction to Algorithms, Structure and Interpretation of Computer Programs, and Types and Programming Languages.
What have you made that was cool? And what are some books you recommend?
Obviously, this is a timeless classic. I too love the writing style and its precise, articulate prose; it sets a bar for what I expect at MIT. There is much wisdom to glean.
This note about "wishful thinking" is an important concept from the book that I rarely see mentioned, but is core to the authors' layered approach of building systems. In essence, it's a development style of hallucinating or confabulating appropriate functions and data structures during the design of your programs from the inside out, which you would implement later on. (A quite natural approach with a Lisp/Scheme REPL.)
It's also why I never understood the fuss about supposed failures in AI code generation. Some developers never read SICP, I guess.
After learning of Scheme, if you truly want to dive into the deep end of programming, the 'next step' is the book The Structure and Interpretation of Computer Programs aka SICP. By no means is it the required next step after learning of Scheme - of course - but if you're looking for the programming book to have when you're shipwrecked on a desert island, that's the one.
SICP: https://mitp-content-server.mit.edu/books/content/sectbyfn/b...
- Okasaki, Purely Functional Data Structures https://www.cs.cmu.edu/~rwh/students/okasaki.pdf
- The Garbage Collection Handbook https://gchandbook.org/
- The Dragon Book - https://faculty.sist.shanghaitech.edu.cn/faculty/songfu/cav/... (yes, it's old, but I still like the end-to-end, all-in-one intro)
- Windows Internals - https://learn.microsoft.com/en-us/sysinternals/resources/win...
- Structure and Interpretation of Computer Programs - https://web.mit.edu/6.001/6.037/sicp.pdf
- Concurrency Control and Recovery in Database Systems - https://www.microsoft.com/en-us/research/people/philbe/book/
- Crafting Interpreters - https://craftinginterpreters.com/
- What Every Programmer Needs to Know About Memory - https://people.freebsd.org/~lstewart/articles/cpumemory.pdf (the best thing Ulrich Drepper ever did)
- An Introduction to Modern Cryptography - https://eclass.uniwa.gr/modules/document/file.php/CSCYB105/R...
A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas. SICP being in Scheme is an advantage because you don't know Scheme yet; Windows Internals being about Windows teaches you generally good lessons in OS design by forcing you to contemplate a system alien to the Unix you probably know better.
It's shocking how many of these seminal books are available for free and how few people read them. Yes, yes, you can get the same information from an LLM, but an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading.
"Python for Data Analysis" by McKinney (2018)
"The Go Programming Language" by Donovan and Kernighan (2016)
"Hacker's Delight" by Warren (2013)
"Algorithm Design Manual" by Skiena (2008)
"Purely Functional Data Structures" by Okasaki (1998)
"Structure and Interpretation of Computer Programs" by Abelson and Sussman (1985)
I second the comment (https://news.ycombinator.com/item?id=48327571) recommending How to Design Programs (HTDP) and Structure and Interpretation of Computer Programs (SICP). The former has an edX course (https://www.edx.org/learn/coding/university-of-british-colum... and https://www.edx.org/learn/coding/university-of-british-colum...) and the latter has online lectures (https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CAB...)
Head First Architecture (https://www.amazon.com/Head-First-Software-Architecture-Arch...) is good.
Reading about systems thinking would be useful.
Learning programming languages that have been well designed is helpful. I suggest Programming Erlang: Software for a Concurrent World and Elixir in Action.