This textbook is intended as a guide for programming-language designers
and users to better help them understand consequences of design
decisions.
The text aims to provide readers with an overview of the design space
for programming languages and how design choices affect implementation.
It is not a classical compilers book, as it assumes the reader is
familiar with basic compiler implementation techniques; nor is it a
traditional comparative programming languages book, because it does not
go into depth about any particular language, instead taking examples
from a wide variety of programming languages to illustrate design
concepts. Readers are assumed to already have done at least a bit of
programming in functional, imperative, and object-oriented languages.
Topics and features:
- Provides topic-by-topic coverage of syntax, types, scopes, memory
management and more
- Includes many technical exercises and discussion exercises
- Inspires readers to think about language design choices, how these
interact, and how they can be implemented
- Covers advanced topics such as formal semantics and limits of
computation
Suitable for advanced undergraduates and beginning graduates, this
highly practical and useful textbook/guide will also offer programming
language professionals a superb reference and learning toolkit.