New Edition
Programming Language Pragmatics,
Edition 4
Editors:
By Michael Scott
Publication Date:
11 Dec 2015
Programming Language Pragmatics, Fourth Edition, is the most comprehensive programming language textbook available today. It is distinguished and acclaimed for its integrated treatment of language design and implementation, with an emphasis on the fundamental tradeoffs that continue to drive software development.
The book provides readers with a solid foundation in the syntax, semantics, and pragmatics of the full range of programming languages, from traditional languages like C to the latest in functional, scripting, and object-oriented programming. This fourth edition has been heavily revised throughout, with expanded coverage of type systems and functional programming, a unified treatment of polymorphism, highlights of the newest language standards, and examples featuring the ARM and x86 64-bit architectures.
The book provides readers with a solid foundation in the syntax, semantics, and pragmatics of the full range of programming languages, from traditional languages like C to the latest in functional, scripting, and object-oriented programming. This fourth edition has been heavily revised throughout, with expanded coverage of type systems and functional programming, a unified treatment of polymorphism, highlights of the newest language standards, and examples featuring the ARM and x86 64-bit architectures.
Key Features
- Updated coverage of the latest developments in programming language design, including C & C++11, Java 8, C# 5, Scala, Go, Swift, Python 3, and HTML 5
- Updated treatment of functional programming, with extensive coverage of OCaml
- New chapters devoted to type systems and composite types
- Unified and updated treatment of polymorphism in all its forms
- New examples featuring the ARM and x86 64-bit architectures
Preface
- Changes in the Fourth Edition
- The Companion Site
- Design & Implementation Sidebars
- Numbered and Titled Examples
- Exercise Plan
- How to Use the Book
- Supplemental Materials
- Acknowledgments for the Fourth Edition
I: Foundations
1: Introduction
- 1.1 The Art of Language Design
- 1.2 The Programming Language Spectrum
- 1.3 Why Study Programming Languages?
- 1.4 Compilation and Interpretation
- 1.5 Programming Environments
- 1.6 An Overview of Compilation
- 1.7 Summary and Concluding Remarks
- 1.8 Exercises
- 1.9 Explorations
- 1.10 Bibliographic Notes
2: Programming Language Syntax
- 2.1 Specifying Syntax: Regular Expressions and Context-Free Grammars
- 2.2 Scanning
- 2.3 Parsing
- 2.4 Theoretical Foundations
- 2.5 Summary and Concluding Remarks
- 2.6 Exercises
- 2.7 Explorations
- 2.8 Bibliographic Notes
3: Names, Scopes, and Bindings
- 3.1 The Notion of Binding Time
- 3.2 Object Lifetime and Storage Management
- 3.3 Scope Rules
- 3.4 Implementing Scope
- 3.5 The Meaning of Names within a Scope
- 3.6 The Binding of Referencing Environments
- 3.7 Macro Expansion
- 3.8 Separate Compilation
- 3.9 Summary and Concluding Remarks
- 3.10 Exercises
- 3.11 Explorations
- 3.12 Bibliographic Notes
4: Semantic Analysis
- 4.1 The Role of the Semantic Analyzer
- 4.2 Attribute Grammars
- 4.3 Evaluating Attributes
- 4.4 Action Routines
- 4.5 Space Management for Attributes
- 4.6 Tree Grammars and Syntax Tree Decoration
- 4.7 Summary and Concluding Remarks
- 4.8 Exercises
- 4.9 Explorations
- 4.10 Bibliographic Notes
5: Target Machine Architecture
II: Core Issues in Language Design
6: Control Flow
- 6.1 Expression Evaluation
- 6.2 Structured and Unstructured Flow
- 6.3 Sequencing
- 6.4 Selection
- 6.5 Iteration
- 6.6 Recursion
- 6.7 Nondeterminacy
- 6.8 Summary and Concluding Remarks
- 6.9 Exercises
- 6.10 Explorations
- 6.11 Bibliographic Notes
7: Type Systems
- 7.1 Overview
- 7.2 Type Checking
- 7.3 Parametric Polymorphism
- 7.4 Equality Testing and Assignment
- 7.5 Summary and Concluding Remarks
- 7.6 Exercises
- 7.7 Explorations
- 7.8 Bibliographic Notes
8: Composite Types
- 8.1 Records (Structures)
- 8.2 Arrays
- 8.3 Strings
- 8.4 Sets
- 8.5 Pointers and Recursive Types
- 8.6 Lists
- 8.7 Files and Input/Output
- 8.8 Summary and Concluding Remarks
- 8.9 Exercises
- 8.10 Explorations
- 8.11 Bibliographic Notes
9: Subroutines and Control Abstraction
- 9.1 Review of Stack Layout
- 9.2 Calling Sequences
- 9.3 Parameter Passing
- 9.4 Exception Handling
- 9.5 Coroutines
- 9.6 Events
- 9.7 Summary and Concluding Remarks
- 9.8 Exercises
- 9.9 Explorations
- 9.10 Bibliographic Notes
10: Data Abstraction and Object Orientation
- 10.1 Object-Oriented Programming
- 10.2 Encapsulation and Inheritance
- 10.3 Initialization and Finalization
- 10.4 Dynamic Method Binding
- 10.5 Mix-In Inheritance
- 10.6 True Multiple Inheritance
- 10.7 Object-Oriented Programming Revisited
- 10.8 Summary and Concluding Remarks
- 10.9 Exercises
- 10.10 Explorations
- 10.11 Bibliographic Notes
III: Alternative Programming Models
11: Functional Languages
- 11.1 Historical Origins
- 11.2 Functional Programming Concepts
- 11.3 A Bit of Scheme
- 11.4 A Bit of OCaml
- 11.5 Evaluation Order Revisited
- 11.6 Higher-Order Functions
- 11.7 Theoretical Foundations
- 11.8 Functional Programming in Perspective
- 11.9 Summary and Concluding Remarks
- 11.10 Exercises
- 11.11 Explorations
- 11.12 Bibliographic Notes
12: Logic Languages
- 12.1 Logic Programming Concepts
- 12.2 Prolog
- 12.3 Theoretical Foundations
- 12.4 Logic Programming in Perspective
- 12.5 Summary and Concluding Remarks
- 12.6 Exercises
- 12.7 Explorations
- 12.8 Bibliographic Notes
13: Concurrency
- 13.1 Background and Motivation
- 13.2 Concurrent Programming Fundamentals
- 13.3 Implementing Synchronization
- 13.4 Language-Level Constructs
- 13.5 Message Passing
- 13.6 Summary and Concluding Remarks
- 13.7 Exercises
- 13.8 Explorations
- 13.9 Bibliographic Notes
14: Scripting Languages
- 14.1 What Is a Scripting Language?
- 14.2 Problem Domains
- 14.3 Scripting the World Wide Web
- 14.4 Innovative Features
- 14.5 Summary and Concluding Remarks
- 14.6 Exercises
- 14.7 Explorations
- 14.8 Bibliographic Notes
IV: A Closer Look at Implementation
15: Building a Runnable Program
- 15.1 Back-End Compiler Structure
- 15.2 Intermediate Forms
- 15.3 Code Generation
- 15.4 Address Space Organization
- 15.5 Assembly
- 15.6 Linking
- 15.7 Dynamic Linking
- 15.8 Summary and Concluding Remarks
- 15.9 Exercises
- 15.10 Explorations
- 15.11 Bibliographic Notes
16: Run-Time Program Management
- 16.1 Virtual Machines
- 16.2 Late Binding of Machine Code
- 16.3 Inspection/Introspection
- 16.4 Summary and Concluding Remarks
- 16.5 Exercises
- 16.6 Explorations
- 16.7 Bibliographic Notes
17: Code Improvement
A: Programming Languages Mentioned
B: Language Design and Language Implementation
C: Numbered Examples
ISBN:
9780124104099
Page Count: 992
Retail Price
:
£70.99
9780120884780; 9780124045781; 9781558602861; 9781558608719
Access to teacher/student resources is available to registered users with approved inspection copies or confirmed adoptions. To review this material, please request an inspection copy.
- Additional Resources.docx
- Figures-PDF
- Figures-PPT
- Lecture Slides
- Chapter01_ Introduction_4e.ppt
- Chapter02_Programming_Language_Syntax_4e.ppt
- Chapter03_Names_Scopes_and_Bindings_4e.ppt
- Chapter04_Semantic_Analysis_4e.ppt
- Chapter05_Target_Machine_Architecture_4e.ppt
- Chapter06_Control_Flow_4e.ppt
- Chapter07_Type_Systems_4e.ppt
- Chapter08_Composite_Types_4e.ppt
- Chapter09_Subroutines_and_Control_Abstraction_4e.ppt
- Chapter10_Data_Abstraction_and_Object_Orientation_4e.ppt
- Chapter11_Functional_Languages_4e.ppt
- Chapter12_Logic_Languages_4e.ppt
- Chapter13_Concurrency_4e.ppt
- Chapter14_Scripting_Languages_4e.ppt
- Chapter15_Building_a_Runnable_Program_4e.ppt
- Chapter16_Run-time_Program_Management_4e.ppt
- Chapter17_Code_Improvement_4e.ppt
Upper-level undergraduate and graduate-level computer science students, programmers, systems and software engineers
Related Titles