"This book tackles the task of describing programming languages effectively and efficiently. The authors adopt a principle-based approach that allows readers to recognize how fundamental computer science concepts take form in each of the presented programming languages. This allows readers to experience how each language includes some subset of these concepts, and thus becomes suitable for different tasks. In this approach, functionality emerges as the embodiment of these fundamentals. Readers are then encouraged to find commonalities and themes in the material by following exercises, which also provide the means to further the study of any one of the presented languages. The final chapter links all of the material explicitly through a series of recurring themes of interest to software engineers and computer scientists. Although the book can be useful to any technical and academic audience, it will be better suited for upper-division undergraduate students, graduate students, or professionals seeking further development."
―L. Benedicenti, Choice, May 2017
"All in all, this book makes for a great browse, an interesting read if one wishes to learn about different programming paradigms and languages, and a very clear and well-organized textbook. The language is crisp and concise, and assumes a familiarity with programming. I teach an upper-undergraduate module on the principles of programming languages, and plan to make use of this book extensively to help give students insights into the vast but interesting landscape of programming languages."
―Sara Kalvala, ACM Computing Reviews, May 2017