Crafting Interpreters – Web Version
craftinginterpreters.com
craftinginterpreters.com
The fact he gives it away for free is amazing.
So this seems to be a strategy where everyone wins. People who can't afford it get to read it. People who can but want to see if they like it first can do that. Others who can afford it support my writing. I get a lot of readers and sales.
I stumbled onto this model completely randomly, but it seems to have worked out really well for me.
I'd like to see more books in the future about crafting relational databases (server or not). I know it's a huge endeavor, but I find techniques related to efficient file writing, data persistence, partitioning, indexing and effective datafile querying fascinating. After all, databases are also "mini" file systems.
I think I technically make the most of you buy it from Amazon, but I'm not picky. You can also call your local bookstore and ask them to order a copy. I won't make quite as much, but you support a local business, which is always good.
Truly, I can't recommend this book enough, if the topic is at all interesting to you!
(And follow it up with Code, by Charles Petzold, to see how a processor works, and Operating Systems, Three Easy Pieces by Arpaci-Dusseau for how OSs work)
Here's some of the past discussions:
* https://news.ycombinator.com/item?id=27997167 (6 months ago | 118 comments)
* https://news.ycombinator.com/item?id=22788738 (2 years ago | 74 comments)
* https://news.ycombinator.com/item?id=13406081 (5 years ago | 75 comments)
I talk about it more here: http://journal.stuffwithstuff.com/2021/07/29/640-pages-in-15...
(Not to say that it's not excellent of him to make and keep it freely available; it is!)
Also, all of the code in the book has been ported to a large number of languages:
https://github.com/munificent/craftinginterpreters/wiki/Lox-...
But his C is so clean. Is readable as far as is possible, imho.
Plus, exist some many implementations of this in as languages are, so you can go along (https://github.com/search?q=crafting+interpreters or using https://github.com/search?q=lox+interpreter).