»
Programming Language Pragmatics
 
 

Programming Language Pragmatics, 4th Edition

 
Programming Language Pragmatics, 4th Edition,Michael Scott,ISBN9780124104099
 
 
Up to
25%
off
 

  

Morgan Kaufmann

9780124104099

9780124104778

992

235 X 191

The most comprehensive programming language textbook available today, featuring an integrated treatment of language design and language implementation. Users will find this a solid resource to help them understand the most important issues driving modern software development.

Print Book + eBook

USD 107.94
USD 179.90

Buy both together and save 40%

Print Book

Paperback

In Stock

Estimated Delivery Time
USD 67.46
USD 89.95

eBook
eBook Overview

DRM-free included formats : PDF

USD 67.46
USD 89.95
Add to Cart
 
 

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

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.

Readership

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

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

Programming Language Pragmatics, 4th Edition

  • About the Author
  • Dedication
  • Foreword
  • 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
    • 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
    • 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
    • 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
    • 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
  • Bibliography
  • Index
 
 
Free Shipping
Shop with Confidence

Free Shipping around the world
▪ Broad range of products
▪ 30 days return policy
FAQ

Contact Us