Design Concepts in Programming Languages

Franklyn A. Turbak and David K. Gifford with Mark A. Sheldon (2008). Design Concepts in Programming Languages. MIT Press.

I read portions of this textbook in draft form, and it's a near-encyclopedic take on programming language semantics, which includes what other textbooks on the subject are missing: a plethora of concrete examples and exercises, in the context of a series of small but practical programming languages. The book's friendly and informal tone makes even the most forbidding and formal topics seem accessible.

The linked page includes a table of contents and sample chapter.

(Disclaimer: the first author taught me most of what I know about computer science when I was an undergraduate at Wellesley.)