Skip to product information
1 of 1
Regular price £56.89 GBP
Regular price £64.99 GBP Sale price £56.89 GBP
Sale Sold out
Free UK Shipping

Freshly Printed - allow 8 days lead

Programming Languages
Build, Prove, and Compare

Teaches students about great programming-language ideas and how to use them in programming practice.

Norman Ramsey (Author)

9781107180185, Cambridge University Press

Hardback, published 27 October 2022

600 pages
26.2 x 18.4 x 5 cm, 1.65 kg

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

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.

Preface
Acknowledgments
Credits
Tables of judgment forms, important functions, and concrete syntax
List of symbols and notation
Introduction
Part I. Foundations: 1. An imperative core
2. Scheme, S-expressions, and first class functions
3. Control operators and a small-step semantics: ?Scheme+
4. Automatic memory management
5. Interlude: ?Scheme in ML
6. Type systems for Impcore and ?Scheme
7. ML and type inference
Part II. Programming at Scale: 8. User-defined, algebraic types
9. Molecule, abstract data types, and modules
10. Smalltalk and object orientation
Afterword
Bibliography
Key words and phrases
Concept index.

Subject Areas: Computer programming / software development [UM]

View full details