Essentials of Programming Languages
Essentials of Programming Languages (MIT Press, 2001. 2nd edition, ISBN 0-262-06217-8) is a book by Daniel P. Friedman, Mitchell Wand and Christopher T. Haynes on implementing programming languages and includes interpreters written in Scheme.
EoPL is a text book that surveys the principles of programming languages from an operational perspective. It starts with an interpreter for a simple functional core language and then systematically adds constructs. For each addition, for example, variable assignment or thread-like control, the book illustrates an increase in expressive power of the programming language and a demand for new constructs for the formulation of a direct interpreter. The book also demonstrates that systematic transformations, say store-passing style or continuation-passing style can eliminate certain constructs from the language in which the interpreter is formulated.
The second part of the book is dedicated to a systematic translation of the interpreter(s) into register machines. The transformations show how to eliminate higher-order closures; continuation objects; recursive function calls; and more. At the end, the reader is left with an "interpreter" that uses nothing but tail-recursive function calls and assignment statements plus conditionals. It becomes trivial to translate this code into a C program or even an assembly program. As a bonus, the book shows how to pre-compute certain pieces of 'meaning' and how to generate a representation of these pre-computations. Since this is the essence of compilation, the book also prepares a course on the principles of compilation and language translation, a related but distinct topic.
Like Structure and Interpretation of Computer Programs, EoPL represents a significant departure from the prevailing text book approach in the 1980s. At the time, a book on the principles of programming languages presented four to six (or even more) programming languages and discussed their programming idioms and their implementation at a high level. The most successful books typically covered Algol 60 (and the so-called Algol family of programming languages); Snobol; Lisp; and Prolog. Even today a fair number of text books on programming languages are just such surveys, though their scope has narrowed.
EoPL is now in its third edition, including additional topics such as 'types' and 'modules'. It has incorporated ideas on programming from HtDP, another text book that breaks with tradition.