The first comprehensive presentation of reduction semantics in one volume, and the first tool set for such forms of semantics.
This text is the first comprehensive presentation of reduction semantics in one volume; it also introduces the first reliable and easy-to-use tool set for such forms of semantics. Software engineers have long known that automatic tool support is critical for rapid prototyping and modeling, and this book is addressed to the working semantics engineer (graduate student or professional language designer). The book comes with a prototyping tool suite to develop, explore, test, debug, and publish semantic models of programming languages. With PLT Redex, semanticists can formulate models as grammars and reduction models on their computers with the ease of paper and pencil. The text first presents a framework for the formulation of language models, focusing on equational calculi and abstract machines, then introduces PLT Redex, a suite of software tools for expressing these models as PLT Redex models. Finally, experts describe a range of models formulated in Redex. PLT Redex comes with the PLT Scheme implementation, available free at http://www.plt-scheme.org/. Readers can download the software and experiment with Redex as they work their way through the book.
Matthias Felleisen is Trustee Professor in the College of Computer Science at Northeastern University.
Robert Bruce Findler is Associate Professor of Computer Science at Northwestern University.
Matthew Flatt is Professor in the School of Computing at the University of Utah.
Matthias Felleisen and his colleagues in The PLT group are well known for their books on program design, their work on teaching programming, and for the research that has led to DrScheme, one of the most powerful and flexible programming environments ever created. In this book they turn their attention to the subject of programming language semantics, with happy results. Courses on semantics can easily become as dry as dust; in contrast, this book is nothing short of revolutionary. The first part is a very clear explanation of the basic concepts in programming language semantics, starting with abstract models and moving to progressively more concrete ones. However, the book really comes alive in the second part, where they use the PLT Redex language that they have developed to interactively explore language semantics in the same way that DrScheme allows the interactive exploration of programs. I believe that this approach will become the standard way of doing semantics research in the future, and there is no better way to take advantage of it than to read this book.
Michael Vanier, Department of Computer Science, Caltech