|
Programming Languages: Build, Prove, and Compare
Hardback
Main Details
Title |
Programming Languages: Build, Prove, and Compare
|
Authors and Contributors |
By (author) Norman Ramsey
|
Physical Properties |
Format:Hardback | Pages:600 | Dimensions(mm): Height 262,Width 184 |
|
Category/Genre | Computer programming and software development Mathematical theory of computation |
ISBN/Barcode |
9781107180185
|
Classifications | Dewey:005.13 |
---|
Audience | |
Illustrations |
Worked examples or Exercises
|
|
Publishing Details |
Publisher |
Cambridge University Press
|
Imprint |
Cambridge University Press
|
Publication Date |
27 October 2022 |
Publication Country |
United Kingdom
|
Description
Computer scientists often need to learn new programming languages quickly. The best way to prepare for this is to understand the foundational principles that underlie even the most complicated industrial languages. This text for an undergraduate programming languages course distills great languages and their design principles down to easy-to-learn 'bridge' languages implemented by interpreters whose key parts are explained in the text. The book goes deep into the roots of both functional and object-oriented programming, and it shows how types and modules, including generics/polymorphism, contribute to effective programming. The book is not just about programming languages; it is also about programming. Through concepts, examples, and more than 300 practice exercises that exploit the interpreter, students learn not only what programming-language features are but also how to do things with them. Substantial implementation projects include Milner's type inference, both copying and mark-and-sweep garbage collection, and arithmetic on arbitrary-precision integers.
Author Biography
Norman Ramsey is Associate Professor of Computer Science at Tufts University. Since earning his Ph.D. at Princeton, he has worked in industry and has taught programming languages, advanced functional programming, programming-language implementation, and technical writing at Purdue, the University of Virginia, and Harvard as well as Tufts. He has received Tufts's Lerman-Neubauer Prize, awarded annually to one outstanding undergraduate teacher. He has also been a Hertz Fellow and an Alfred P. Sloan Research Fellow. His implementation credits include a code generator for the Standard ML of New Jersey compiler and another for the Glasgow Haskell Compiler.
Reviews'Norman Ramsey provides a foundational approach to understanding the key concepts in programming languages, including methodology around structure and formalism, complemented by abundant (battle-tested) exercises that help to ground the ideas. Whereas many texts on programming languages focus on surface details of a representative class of languages, this book captures key ideas that transcend specific languages, offering formal ways to think about design, reasoning, and implementation.' Greg Morrisett, Cornell University 'Survey courses on programming languages are popular, but the best way to understand programming languages is to implement them, and the best way to start is by implementing interpreters. This book describes how to implement interpreters for a wide range of languages, representing key features of real-world languages while providing the theoretical background needed to understand them. I have used pre-prints of this book for many years in my Caltech course on programming languages, and I know of no book with a comparable depth and breadth of coverage of the subject. I strongly recommend it to anyone with a serious interest in programming languages.' Michael C. Vanier, California Institute of Technology This book is a landmark work of scholarship. In a single consistent framework Ramsey covers a huge range of topics in programming language design, implementation, and reasoning. We see functional, imperative, and object-oriented languages; we study garbage collection, control operators, type inference, and module systems; we use the key intellectual tools of type theory and semantics to understand and reason about our programs; and, crucially, we build everything. This is not a discursive overview: the book is full of code, extensively indexed and cross-referenced. We emerge with concrete implementations of languages that are carefully designed to demonstrate the key intellectual landmarks of different programming styles. Most important of all, in reading this book you are travelling in the company of a master of his craft, one who has distilled into these pages a lifetime of insightful reflection on the principled design and implementation of programming languages.' Simon Peyton Jones, Epic Games
|