What Makes the Intro to Crafting Interpreters so Good?
One of my favorite programming books is Crafting Interpreters by Bob Nystrom. It teaches you how to build a programming language from scratch. Along the way, you learn about text parsing, data structures, virtual machines, and several other skills that make you a stronger developer.
I was re-reading the book recently and realized that its introduction is delightfully effective. Developers are terrible at writing introductions, so it’s worth studying what makes the Crafting Interpreters intro so compelling.
Here’s the first paragraph of the book:
I’m really excited we’re going on this journey together. This is a book on implementing interpreters for programming languages. It’s also a book on how to design a language worth implementing. It’s the book I wish I’d had when I first started getting into languages, and it’s the book I’ve been writing in my head for nearly a decade.
What makes a good introduction?🔗
When you’re deciding whether to read a technical book, you typically have two questions:
- Is this relevant to me?
- Is this worth my time?
A good introduction answers those questions quickly and clearly.
How does Crafting Interpreters perform against these criteria? I’ll break the opening paragraph down bit-by-bit:
I’m really excited we’re going on this journey together.
At first, this seems like a waste of a line. It doesn’t tell the reader anything about what they’ll learn or why it’s valuable. This sentence could be the opening line to any book ever, so why say it at all?
This line is subtly effective, and I’ll explain why soon.
This is a book on implementing interpreters for programming languages. It’s also a book on how to design a language worth implementing.
These lines are a direct answer to, “Is this relevant to me?” They tell you exactly what you’re going to learn from this book. If you’re interested in programming languages, you’re in the right place.
There are many books about programming languages, compilers, and interpreters, so why would you read this particular one?
It’s the book I wish I’d had when I first started getting into languages, and it’s the book I’ve been writing in my head for nearly a decade.
This is the knockout punch.
I find this line extremely compelling. If I’m interested in learning about languages, of course I want to learn from a guy who’s been thinking about these things for ten years!
I also deeply appreciate when developers write for their past selves. There’s so much institutional knowledge in software that’s inaccessible simply because nobody bothered to go back and explain it. I love it when people stop and smooth out the path for whoever follows.
This line is also effective at clarifying who the book is for. The mention of “first getting started” means this book is for programmers who are at the novice or early intermediate stages of learning language design.
This is not the Dragon Book🔗
For most developers, creating your own programming language from scratch feels impossible. It’s the type of thing a genius at Bell Labs can do in the 1970s but not something that’s within reach of a regular developer whose workday consists of team standups and chasing bugs around a web app.
One of the most popular books about creating a programming language is Compilers: Principles, Techniques, and Tools, which people typically refer to as the “Dragon Book.”
Here’s the first sentence of the Dragon Book:
Programming languages are notations for describing computations to people and to machines.
“Notations for describing computations?” Does it get more stuffy and academic?
I can’t imagine anyone I know explaining programming as the act of creating “notations for describing computations.” That language may resonate with some developers, but when I read it, I think, “This book is written for computer science theorists and not regular developers like me.”
I now return to the opening sentence of Crafting Interpreters, which initially felt like a waste of a line:
I’m really excited we’re going on this journey together.
How does the line feel now? Unpretentious, accessible, and welcoming. It’s what a child might say to you on a trip to the zoo.
Bob Nystrom is telling you that it’s okay that you’re a regular person and not a Computer Science PhD. Compilers and interpreters don’t have to be scary — a regular developer like you can build one with a good guide.
What makes the intro so good?🔗
Returning to the question of what makes the intro to Crafting Interpreters so good, it boils down to these four things:
- It tells you what you’ll learn.
- It explains why you might care to learn it.
- It establishes the casual, approachable tone of the book.
- It achieves all of the above in the first four sentences.
If you haven’t read Crafting Interpreters, I highly recommend it. The full book is available for free online, but there are also print and ebook versions. I’m not even interested in language design, but I still found the book extremely valuable and engaging.
To give you a sense of the care that Bob Nystrom put into his book, he hand drew all 181 illustrations. The lettering in the illustrations looks like a font, but that’s because he spent hours and hours practicing his freaking penmanship for this book! How many software authors can say that?


