Programming Language Pragmatics - 2nd Edition - ISBN: 9780126339512, 9780080515168

Programming Language Pragmatics

2nd Edition

Authors: Michael Scott Michael Scott
eBook ISBN: 9780080515168
Imprint: Morgan Kaufmann
Published Date: 7th November 2005
Page Count: 912
Tax/VAT will be calculated at check-out Price includes VAT (GST)
73.95
38.99
54.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

The innovative approach of the first edition of Programming Language Pragmatics provided students with an integrated view of programming language design and implementation, while offering a solid teaching text on timely language topics in a rigorous yet accessible style.

The new edition carries on these distinctive features as well as the signature tradition of illustrating the most recent developments in programming language design with a variety of modern programming languages.

Key Features

  • Addresses the most recent developments in programming language design, including C99, C#, and Java 5
  • Introduces and discusses scripting languages throughout the book as well as in an entire new chapter
  • Includes a comprehensive chapter on concurrency, with coverage of the new Java concurrency package (JSR 166) and the comparable mechanisms in C#
  • Updates many sections and topics, including iterators, exceptions, polymorphism, templates/generics, scope rules and declaration ordering, separate compilation, garbage collection, and threads and synchronization
  • Highlights the interaction and tradeoffs inherent in language design and language implementation decisions with over 100 "Design and Implementation" call-out boxes
  • Adds end-of-chapter "Exploration" exercises—open-ended, research-type activities
  • Provides review questions after sections for quick self-assessment
  • Includes over 800 numbered examples to help the reader quickly cross-reference and access content

Readership

undergraduate computer science students; computing professionals

Table of Contents

Part 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

  2. Programming Language Syntax 2.1 Specifying Syntax 2.2 Scanning 2.3 Parsing 2.4 Theoretical Foundations

  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 Binding of Referencing Environments 3.6 Binding Within a Scope 3.7 Separate Compilation

  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 Decorating a Syntax Tree

  5. Target Machine Architecture 5.1 The Memory Hierarchy 5.2 Data Representation 5.3 Instruction Set Architecture 5.4 Architecture and Implementation 5.5 Compiling for Modern Processors

Part II Core Issues in Language Design

  1. 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

  2. Data Types 7.1 Type Systems 7.2 Type Checking 7.3 Records (Structures) and Variants (Unions) 7.4 Arrays 7.5 Strings 7.6 Sets 7.7 Pointers and Recursive Types 7.8 Lists 7.9 Files and Input/Output 7.10 Equality Testing and Assignment

  3. Subroutines and Control Abstraction 8.1 Review of Stack Layout 8.2 Calling Sequences 8.3 Parameter Passing 8.4 Generic Subroutines and Modules 8.5 Exception Handling 8.6 Coroutines

  4. Data Abstraction and Object Orientation 9.1 Object-Oriented Programming 9.2 Encapsulation and Inheritance 9.3 Initialization and Finalization 9.4 Dynamic Method Binding 9.5 Multiple Inheritance 9.6 Object-Oriented Programming Revisited

Part III Alternative Programming Models

  1. Functional Languages 10.1 Historical Origins 10.2 Functional Programming Concepts 10.3 A Review/Overview of Scheme 10.4 Evaluation Order Revisited 10.5 Higher-Order Functions 10.6 Theoretical Foundations 10.7 Functional Programming in Perspective

  2. Logic Languages 11.1 Logic Programming Concepts 11.2 Prolog 11.3 Theoretical Foundations 11.4 Logic Programming in Perspective

  3. Concurrency 12.1 Background and Motivation 12.2 Concurrent Programming Fundamentals 12.3 Shared Memory 12.4 Message Passing

  4. Scripting 13.1 What Is a Scripting Language? 13.2 Problem Domains 13.3 Scripting the World Wide Web 13.4 Innovative Features

Part IV A Closer Look at Implementation

  1. Building a Runnable Program 14.1 Back-End Compiler Structure 14.2 Intermediate Forms 14.3 Code Generation 14.4 Address Space Organization 14.5 Assembly 14.6 Linking 14.7 Dynamic Linking

  2. Code Improvement 15.1 Phases of Code Improvement 15.2 Peephole Optimization 15.3 Redundancy Elimination in Basic Blocks 15.4 Global Redundancy and Data Flow Analysis 15.5 Loop Improvement I 15.6 Instruction Scheduling 15.7 Loop Improvement II 15.8 Register Allocation

A. Programming Languages Mentioned

B. Language Design and Language Implementation

C. Numbered Examples

Bibliography

Index

Details

No. of pages:
912
Language:
English
Copyright:
© Morgan Kaufmann 2006
Published:
Imprint:
Morgan Kaufmann
eBook ISBN:
9780080515168

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

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