Programming Language Pragmatics addresses the fundamental principles at work in the most important contemporary languages, highlights the critical relationship between language design and language implementation, and devotes special attention to issues of importance to the expert programmer. Thanks to its rigorous but accessible teaching style, you'll emerge better prepared to choose the best language for particular projects, to make more effective use of languages you already know, and to learn new languages quickly and completely.

Key Features

* Addresses the most recent developments in programming language design, spanning more than forty different languages, including Ada 95, C, C++, Fortran 95, Java, Lisp, Scheme, ML, Modula-3, Pascal, and Prolog. * Places a special emphasis on implementation issues-how the techniques used by compilers and related tools influence language design, and vice versa. * Covers advanced topics in language design and implemenation, such as iterators, coroutines, templates (generics), separate compilation, I/O, type inference, and exception handling. * Reviews language-related topics in assembly-level architecture critical for understanding what a compiler does to a program. * Offers in-depth coverage of object-oriented programming, including multiple inheritance and dynamic method binding. * Devotes a special section to static and dynamic linking. * Includes a comprehensive chapter on concurrency, with detailed coverage of both shared-memory and message-passing languages and libraries. * Provides an accessible introduction to the formal foundations of compilation (automata theory), functional programming (lambda calculus), and logic programming (predicate calculus).

Table of Contents

Preface 1 Introduction 2 Programming Language Syntax 3 Names, Scopes, and Bindings 4 Semantic Analysis 5 Assembly-Level Computer Architecture 6 Control Flow 7 Data Types 8 Subroutines and Control Abstraction 9 Building a Runnable Program 10 Data Abstraction and Object Orientation 11 Nonimperative Programming Models: Functional and Logic Languages 12 Concurrency 13 Code Improvement Appendices


No. of pages:
© 1999
Morgan Kaufmann
Print ISBN:
Electronic ISBN:

About the author

Michael Scott

Michael L. Scott is a professor and past Chair of the Computer Science Department at the University of Rochester. He is best known for work on synchronization and concurrent data structures: algorithms from his group appear in a wide variety of commercial and open-source systems. A Fellow of the ACM and the IEEE, he shared the 2006 Dijkstra Prize in Distributed Computing. In 2001 he received the University's Robert and Pamela Goergen Award for Distinguished Achievement and Artistry in Undergraduate Teaching.

Affiliations and Expertise

University of Rochester, NY, USA


"Michael Scott's book could have been entitled: Why Programming Languages Work. It takes a fresh look at programming languages by bringing together ideas and techniques usually covered in disparate language design, compiler, computer architecture, and operating system courses. Its comprehensive and integrated presentation of language design and implementation illustrates and explains admirably the many deep and profitable connections among these fields." - Jim Larus, Microsoft Research