Programming Language Pragmatics - 4th Edition - ISBN: 9780124104099, 9780124104778

Programming Language Pragmatics

4th Edition

Authors: Michael Scott
eBook ISBN: 9780124104778
Paperback ISBN: 9780124104099
Imprint: Morgan Kaufmann
Published Date: 10th December 2015
Page Count: 992
Tax/VAT will be calculated at check-out Price includes VAT (GST)
96.32
64.95
54.99
89.95
Unavailable
Price includes VAT (GST)
× Read this ebook on your PC, Mac, Apple iOS and Andriod mobile devices and eReader

This ebook is protected by Adobe Content Server digital rights management.

For more information on how to use .acsm files please click the Ebook Format Help link.

Institutional Access

Secure Checkout

Personal information is secured with SSL technology.

Free Shipping

Free global shipping
No minimum order.

Description

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.

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

Readership

Upper-level undergraduate and graduate-level computer science students; programmers, systems and software engineers

Table of Contents

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

Details

No. of pages:
992
Language:
English
Copyright:
© Morgan Kaufmann 2016
Published:
Imprint:
Morgan Kaufmann
eBook ISBN:
9780124104778
Paperback ISBN:
9780124104099

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