Table of Contents
I. Foundations 1. Introduction 2. Programming Language Syntax 3. Names, Scopes, Bindings 4. Semantic Analysis 5. Target Machine Architecture II. Core Issues in Language Design 6. Control Flow 7. Data Types 8. Composite Types 9. Subroutines and Control Abstraction 10. Data Abstraction and Object Orientation III. Alternative Programming Models 11. Functional Languages 12. Logic Languages 13. Concurrency 14. Scripting Languages IV. A Closer Look at Implementation 15. Building a Runnable Program 16. Run-time Program Management 17. Code Improvement
Authors
Michael Scott Professor and past Chair, Computer Science Department, University of Rochester, USA.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.
Jonathan Aldrich Institute for Software Research and Computer Science Department, School of Computer Science, Carnegie Mellon University, Pittsburgh, PA, USA. Jonathan Aldrich works at the intersection of programming languages and software engineering. His research explores how the way we express software affects our ability to engineer software at scale. A particular theme of much of his work is improving software quality and programmer productivity through better ways to express structural and behavioral aspects of software design within source code.Professor Aldrich has contributed to object-oriented typestate verification, modular reasoning techniques for aspects and stateful programs, and new object-oriented language models. For his work specifying and verifying architecture, he received a 2006 NSF CAREER award and the 2007 Dahl-Nygaard Junior Prize (press release, article). Right now he's excited to be working on the design of Wyvern, a new modularly extensible programming language.