وبلاگ بلیان

Programming Language Pragmatics

معرفی کتاب «Programming Language Pragmatics» نوشتهٔ Michael Lee Scott، منتشرشده توسط نشر Elsevier/Morgan Kaufmann Pub.; Morgan Kaufmann; Elsevier Science [distributor] در سال 2009. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Programming Language Pragmatics» در دستهٔ بدون دسته‌بندی قرار دارد.

Programming Language Pragmatics is the most comprehensive programming language textbook available today. Taking the perspective that language design and language implementation are tightly interconnected, and that neither can be fully understood in isolation, this critically acclaimed and bestselling book has been thoroughly updated to cover the most recent developments in programming language design. With a new chapter on run-time program management and expanded coverage of concurrency, this new edition provides both students and professionals alike with a solid understanding of the most important issues driving software development today. Classic programming foundations text now updated to familiarize students with the languages they are most likely to encounter in the workforce, including including Java 7, C++, C# 3.0, F#, Fortran 2008, Ada 2005, Scheme R6RS, and Perl 6. New and expanded coverage of concurrency and run-time systems ensures students and professionals understand the most important advances driving software today. Includes over 800 numbered examples to help the reader quickly cross-reference and access content. Foundations Introduction The Art of Language Design The Programming Language Spectrum Why Study Programming Languages? Compilation and Interpretation Programming Environments An Overview of Compilation Lexical and Syntax Analysis Semantic Analysis and Intermediate Code Generation Target Code Generation Code Improvement Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Programming Language Syntax Specifying Syntax Tokens and Regular Expressions Context-Free Grammars Derivations and Parse Trees Scanning Generating a Finite Automaton Scanner Code Table-Driven Scanning Lexical Errors Pragmas Parsing Recursive Descent Table-Driven Top-Down Parsing Bottom-Up Parsing Syntax Errors Theoretical Foundations Finite Automata Push-Down Automata Grammar and Language Classes Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Names, Scopes, and Bindings The Notion of Binding Time Object Lifetime and Storage Management Static Allocation Stack-Based Allocation Heap-Based Allocation Garbage Collection Scope Rules Static Scoping Nested Subroutines Declaration Order Modules Module Types and Classes Dynamic Scoping Implementing Scope Symbol Tables Association Lists and Central Reference Tables The Meaning of Names Within a Scope Aliases Overloading Polymorphism and Related Concepts The Binding of Referencing Environments Subroutine Closures First-Class Values and Unlimited Extent Object Closures Macro Expansion Separate Compilation Separate Compilation in C Packages and Automatic Header Inference Module Hierarchies Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Semantic Analysis The Role of the Semantic Analyzer Attribute Grammars Evaluating Attributes Action Routines Space Management for Attributes Bottom-Up Evaluation Top-Down Evaluation Decorating a Syntax Tree Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Target Machine Architecture The Memory Hierarchy Data Representation Integer Arithmetic Floating-Point Arithmetic Instruction Set Architecture Addressing Modes Conditions and Branches Architecture and Implementation Microprogramming Microprocessors RISC Multithreading and Multicore Two Example Architectures: The x86 and MIPS Compiling for Modern Processors Keeping the Pipeline Full Register Allocation Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Core Issues in Language Design Control Flow Expression Evaluation Precedence and Associativity Assignments Initialization Ordering Within Expressions Short-Circuit Evaluation Structured and Unstructured Flow Structured Alternatives to goto Continuations Sequencing Selection Short-Circuited Conditions Case/Switch Statements Iteration Enumeration-Controlled Loops Combination Loops Iterators Generators in Icon Logically Controlled Loops Recursion Iteration and Recursion Applicative- and Normal-Order Evaluation Nondeterminacy Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Data Types Type Systems Type Checking Polymorphism The Meaning of “Type” Classification of Types Orthogonality Type Checking Type Equivalence Type Compatibility Type Inference The ML Type System Records (Structures) and Variants (Unions) Syntax and Operations Memory Layout and Its Impact With Statements Variant Records (Unions) Arrays Syntax and Operations Dimensions, Bounds, and Allocation Memory Layout Strings Sets Pointers and Recursive Types Syntax and Operations Dangling References Garbage Collection Lists Files and Input/Output Interactive I/O File-Based I/O Text I/O Equality Testing and Assignment Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Subroutines and Control Abstraction Review of Stack Layout Calling Sequences Displays Case Studies: C on the MIPS; Pascal on the x86 Register Windows In-Line Expansion Parameter Passing Parameter Modes Call by Name Special Purpose Parameters Function Returns Generic Subroutines and Modules Implementation Options Generic Parameter Constraints Implicit Instantiation Generics in C++, Java, and C# Exception Handling Defining Exceptions Exception Propagation Implementation of Exceptions Coroutines Stack Allocation Transfer Implementation of Iterators Discrete Event Simulation Events Sequential Handlers Thread-Based Handlers Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Data Abstraction and Object Orientation Object-Oriented Programming Encapsulation and Inheritance Modules Classes Nesting (Inner Classes) Type Extensions Extending without Inheritance Initialization and Finalization Choosing a Constructor References and Values Execution Order Garbage Collection Dynamic Method Binding Virtual and Nonvirtual Methods Abstract Classes Member Lookup Polymorphism Object Closures Multiple Inheritance Semantic Ambiguities Replicated Inheritance Shared Inheritance Mix-In Inheritance Object-Oriented Programming Revisited The Object Model of Smalltalk Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Alternative Programming Models Functional Languages Historical Origins Functional Programming Concepts A Review/Overview of Scheme Bindings Lists and Numbers Equality Testing and Searching Control Flow and Assignment Programs as Lists Extended Example: DFA Simulation Evaluation Order Revisited Strictness and Lazy Evaluation I/O: Streams and Monads Higher-Order Functions Theoretical Foundations Lambda Calculus Control Flow Structures Functional Programming in Perspective Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Logic Languages Logic Programming Concepts Prolog Resolution and Unification Lists Arithmetic Search/Execution Order Extended Example: Tic-Tac-Toe Imperative Control Flow Database Manipulation Theoretical Foundations Clausal Form Limitations Skolemization Logic Programming in Perspective Parts of Logic Not Covered Execution Order Negation and the “Closed World” Assumption Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Concurrency Background and Motivation The Case for Multithreaded Programs Multiprocessor Architecture Concurrent Programming Fundamentals Communication and Synchronization Languages and Libraries Thread Creation Syntax Implementation of Threads Implementing Synchronization Busy-Wait Synchronization Nonblocking Algorithms Memory Consistency Models Scheduler Implementation Semaphores Language-Level Mechanisms Monitors Conditional Critical Regions Synchronization in Java Transactional Memory Implicit Synchronization Message Passing Naming Communication Partners Sending Receiving Remote Procedure Call Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Scripting Languages What Is a Scripting Language? Common Characteristics Problem Domains Shell (Command) Languages Text Processing and Report Generation Mathematics and Statistics “Glue” Languages and General Purpose Scripting Extension Languages Scripting the World Wide Web CGI Scripts Embedded Server-Side Scripts Client-Side Scripts Java Applets XSLT Innovative Features Names and Scopes String and Pattern Manipulation Data Types Object Orientation Summary and Concluding Remarks Exercises Explorations Bibliographic Notes A Closer Look at Implementation Building a Runnable Program Back-End Compiler Structure A Plausible Set of Phases Phases and Passes Intermediate Forms Diana The gcc IFs Stack-Based Intermediate Forms Code Generation An Attribute Grammar Example Register Allocation Address Space Organization Assembly Emitting Instructions Assigning Addresses to Names Linking Relocation and Name Resolution Type Checking Dynamic Linking Position-Independent Code Fully Dynamic (Lazy) Linking Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Run-time Program Management Virtual Machines The Java Virtual Machine The Common Language Infrastructure Late Binding of Machine Code Just-in-Time and Dynamic Compilation Binary Translation Binary Rewriting Mobile Code and Sandboxing Inspection/Introspection Reflection Symbolic Debugging Performance Analysis Summary and Concluding Remarks Exercises Explorations Bibliographic Notes Code Improvement Phases of Code Improvement Peephole Optimization Redundancy Elimination in Basic Blocks A Running Example Value Numbering Global Redundancy and Data Flow Analysis SSA Form and Global Value Numbering Global Common Subexpression Elimination Loop Improvement I Loop Invariants Induction Variables Instruction Scheduling Loop Improvement II Loop Unrolling and Software Pipelining Loop Reordering Register Allocation Summary and Concluding Remarks Bibliographic Notes Programming Languages Mentioned Language Design and Language Implementation Numbered Examples Bibliography Index Programming Language Pragmatics, Third Edition, is the most comprehensive programming language book available today. Taking the perspective that language design and implementation are tightly interconnected and that neither can be fully understood in isolation, this critically acclaimed and bestselling book has been thoroughly updated to cover the most recent developments in programming language design, inclouding Java 6 and 7, C++0X, C# 3.0, F#, Fortran 2003 and 2008, Ada 2005, and Scheme R6RS. A new chapter on run-time program management covers virtual machines, managed code, just-in-time and dynamic compilation, reflection, binary translation and rewriting, mobile code, sandboxing, and debugging and program analysis tools. Over 800 numbered examples are provided to help the reader quickly cross-reference and access content. This text is designed for undergraduate Computer Science students, programmers, and systems and software engineers. Classic programming foundations text now updated to familiarize students with the languages they are most likely to encounter in the workforce, including including Java 7, C++, C# 3.0, F#, Fortran 2008, Ada 2005, Scheme R6RS, and Perl 6. New and expanded coverage of concurrency and run-time systems ensures students and professionals understand the most important advances driving software today. Includes over 800 numbered examples to help the reader quickly cross-reference and access content. Programming Language Pragmatics is the most comprehensive programming language textbook available today. Taking the perspective that language design and language implementation are tightly interconnected, and that neither can be fully understood in isolation, this critically acclaimed and bestselling book has been thoroughly updated to cover the most recent developments in programming language design. With a new chapter on run-time program management and expanded coverage of concurrency, this new edition provides both students and professionals alike with a solid understanding of the most important issues driving software development today. Classic programming foundations text now updated to familiarize students with the languages they are most likely to encounter in the workforce, including including Java 7, C++, C# 3.0, F♯, Fortran 2008, Ada 2005, Scheme R6RS, and Perl 6. New and expanded coverage of concurrency and run-time systems ensures students and professionals understand the most important advances driving software today. Includes over 800 numbered examples to help the reader quickly cross-reference and access content Programming Language Pragmatics, Third Edition (2009) 941pp. 978-0-12-374514-9
دانلود کتاب Programming Language Pragmatics