Hello everyone,
What are some good books on compilers that you would recommend?
Which book made it all click for you?
This one is talked about a lot but I have not read it personally: https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools
I had this one for my compiler course https://www.cs.princeton.edu/~appel/modern/ I don't recall exactly how I felt about the quality of the book but I think it was decent.
This one is also very well known https://craftinginterpreters.com
I think it would be my top recommendation.
An alternative to the tiger book (the second of Anton's links) is Compiling with Continuations, also by Andrew Appel which I've also heard good things about.
https://www.cambridge.org/core/books/compiling-with-continuations/7CA9C36DCE78AD82218E745F43A4E740
I've read the first half of craftinginterpreters and I've liked it. Was a good intro to the concepts and made me understand how is parsing possible.
I feel quiet unsure about the approach that was taken in the first half of the book, using generated java code to build Expression classes that implement the visitor patter for the evaluation of code. That led to code that was hard to grok and debug.
It really felt like he was trying to shoehorn good oop design that fit Java into the interpreter codebased, which - I personally think - was a mistake.
The 2nd part was more promising, where he built the same interpreter with performance in mind, using C, relying on the knowledge built up in the first half. I didn't finish that part, so can't speak to that. His writing style is very enjoyable he's good at explaining.
From what I've heard from different sources like compiler authors, the Dragon Book is way too theory based for a first book. If you're interested in the theory, that's your source, but I'd still recommend a more practical one first.
I've heard good things about https://thorstenball.com/books/
He has 2 book, one for an interpreter and one for a compiler. I've only read Thorsten's blog, not his books but I'd actually start with his interpreterbook if I was in the positon of wanting to read my first book on this topic. It's a full walkthrough of the implementation in Go. The book is 10years old and go is still the same language, so you won't feel the time on it.
A new one that helped me was: "Essentials of Compilation: An Incremental Approach in Racket" by Jeremy Siek, also available in Python. It uses the Nanopass style and starts by getting a compiler that works end-to-end very quickly, and then adding more features to it.
https://iucompilercourse.github.io/tutorial-web-page/
Interesting, nanopass sounds smart for teaching
Not sure how much this overlaps with "compilers" but "Types and programming languages" by Benjamin C. Pierce was highly recommended by Gleam's Louis Pilfold.
Last updated: May 01 2026 at 12:45 UTC