A Book I Overlooked


I realized this morning that I left Programming Languages: An Interpreter-Based Approach out of the acknowledgments for Software Design by Example:

cover of 'Programming Languages' by Kamin

I learned almost everything I know about how programs actually work from reading it. The first chapter builds a tiny little language—basically, a calculator for simple arithmetic expressions. Each subsequent chapter adds a feature like lists, variables, or functions, but rather than presenting a single design Kamin talks through alternatives. How could variable scoping work? How should it work, and how do implementation details and ease of use affect each other? Its approach was one of the inspirations for 500 Lines or Less, and it’s one of the few books I would put beside Kernighan’s classics for the clarity of its prose. My copy disappeared years ago, but if you can find one, it still has a lot to teach.