Save up to 30% on Elsevier print and eBooks with free shipping. No promo code needed.
Save up to 30% on print and eBooks.
Programming Language Pragmatics
2nd Edition - November 7, 2005
Author: Michael Scott
Language: English
eBook ISBN:9780080515168
9 7 8 - 0 - 0 8 - 0 5 1 5 1 6 - 8
The innovative approach of the first edition of Programming Language Pragmatics provided students with an integrated view of programming language design and implement…Read more
Purchase options
LIMITED OFFER
Save 50% on book bundles
Immediately download your ebook while waiting for your print delivery. No promo code is needed.
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.
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
Part I Foundations1. 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 Syntax2.1 Specifying Syntax2.2 Scanning2.3 Parsing 2.4 Theoretical Foundations3. Names, Scopes, and Bindings3.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 Scope3.7 Separate Compilation 4. Semantic Analysis4.1 The Role of the Semantic Analyzer 4.2 Attribute Grammars4.3 Evaluating Attributes4.4 Action Routines 4.5 Space Management for Attributes 4.6 Decorating a Syntax Tree5. Target Machine Architecture5.1 The Memory Hierarchy 5.2 Data Representation5.3 Instruction Set Architecture 5.4 Architecture and Implementation 5.5 Compiling for Modern ProcessorsPart II Core Issues in Language Design6. Control Flow 6.1 Expression Evaluation6.2 Structured and Unstructured Flow6.3 Sequencing6.4 Selection6.5 Iteration6.6 Recursion6.7 Nondeterminacy7. Data Types 7.1 Type Systems7.2 Type Checking7.3 Records (Structures) and Variants (Unions)7.4 Arrays7.5 Strings7.6 Sets7.7 Pointers and Recursive Types7.8 Lists7.9 Files and Input/Output7.10 Equality Testing and Assignment8. Subroutines and Control Abstraction 8.1 Review of Stack Layout 8.2 Calling Sequences8.3 Parameter Passing 8.4 Generic Subroutines and Modules8.5 Exception Handling8.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 Inheritance9.6 Object-Oriented Programming RevisitedPart III Alternative Programming Models 10. Functional Languages 10.1 Historical Origins10.2 Functional Programming Concepts10.3 A Review/Overview of Scheme10.4 Evaluation Order Revisited10.5 Higher-Order Functions10.6 Theoretical Foundations10.7 Functional Programming in Perspective11. Logic Languages 11.1 Logic Programming Concepts11.2 Prolog11.3 Theoretical Foundations 11.4 Logic Programming in Perspective 12. Concurrency12.1 Background and Motivation 12.2 Concurrent Programming Fundamentals 12.3 Shared Memory 12.4 Message Passing 13. Scripting13.1 What Is a Scripting Language?13.2 Problem Domains13.3 Scripting the World Wide Web13.4 Innovative FeaturesPart IV A Closer Look at Implementation 14. Building a Runnable Program 14.1 Back-End Compiler Structure 14.2 Intermediate Forms14.3 Code Generation 14.4 Address Space Organization 14.5 Assembly 14.6 Linking 14.7 Dynamic Linking15. Code Improvement15.1 Phases of Code Improvement15.2 Peephole Optimization15.3 Redundancy Elimination in Basic Blocks15.4 Global Redundancy and Data Flow Analysis15.5 Loop Improvement I15.6 Instruction Scheduling15.7 Loop Improvement II15.8 Register AllocationA. Programming Languages MentionedB. Language Design and Language ImplementationC. Numbered ExamplesBibliographyIndex
No. of pages: 912
Language: English
Edition: 2
Published: November 7, 2005
Imprint: Morgan Kaufmann
eBook ISBN: 9780080515168
MS
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
Professor and past Chair of the Computer Science Department at the University of Rochester