Programming Language Pragmatics, 2/e

Michael L. Scott

  • 出版商: Morgan Kaufmann
  • 出版日期: 2005-11-21
  • 售價: $1,235
  • 語言: 英文
  • 頁數: 912
  • 裝訂: Paperback
  • ISBN: 0126339511
  • ISBN-13: 9780126339512
  • 已過版

買這商品的人也買了...

商品描述

Description

Thoroughly updated to reflect the most current developments in language design and implementation, the second edition

  • Addresses key developments in programming language design:

    + Finalized C99 standard
    + Java 5
    + C# 2.0
    + Java concurrency package (JSR 166) and comparable mechanisms in C#
    + Java and C# generics

  • Introduces and discusses scripting languages throughout the book and in an entire new chapter that covers:

    + Application domains: shell languages, text processing and report generation, mathematics and statistics, “glue” languages and general purpose scripting, extension languages, scripting the World Wide Web

    + Design concepts: names and scopes, string and pattern manipulation, high level data types, object orientation

    + Major languages: Perl, PHP, Tcl/Tk, Python, Ruby, JavaScript, XLST

  • Updates many sections and topics:

    + iterators
    + exceptions
    + polymorphism
    + templates/generics
    + scope rules and declaration ordering
    + separate compilation
    + garbage collection
    + threads and synchronization

    New pedagogical features

    Design & Implementation boxes

    + Highlight the interplay between language design and language implementation

    Test Your Understanding review questions

    + Help students assess their understanding of key points of a section

    In More Depth CD supplements

    + Present more advanced or peripheral material for students who would like to extend their knowledge

    Explorations

    + Provide students with additional exercises that are open-ended, research-type activities

    New reference features

    + Over 900 numbered and titled examples help the student to quickly cross-reference and access content for initial study and later review.

    + Indices (in the printed text) for both the Design and Implementation boxes and the numbered examples.

    + CD search engine for both the printed text and the supplemental sections.

    + Live links on the CD to Web-based language tutorials, reference manuals, and compilers and interpreters.


    On the CD

    + In More Depth sections and sub-sections that are introduced in the book and presented on the CD
    + In More Depth Exercises and Explorations for students wanting additional challenges
    + Links to Web-based language reference manuals and tutorials
    + Links to Web-based compilers and interpreters
    + Text files containing the code fragments featured as examples in the book
    + Search engine to search both the main text and the CD-only content

    Instructor support

    + Password-protected site for adopters who request the password from a sales representative
    + Solutions to most exercises
    + Figures from the book in several formats
    + Lecture slides prepared by other instructors
  •  

    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

    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

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

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

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

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

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

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

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

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

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