This book unites two approaches to teaching programming languages, one based on a survey of languages and the other on writing definitional interpreters. It has been used as a textbook at over fifteen institutions worldwide, and is referenced by non-academic users on the Web. The book is updated approximately every year. You can learn about the differences between versions, and get the accompanying software, from the book's Web site.
PLAI is a superb successor to EOPL, Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes' Essentials of Programming Languages. The explanations are clear and deep and the code is beautiful.
Amazing book about building programming languages with a very easy-going process of building interpreters. Even if you never plan on designing a programming language, it can be very instructive (if you take programming seriously)