وبلاگ بلیان

Programming Language Pragmatics, Second Edition

معرفی کتاب «Programming Language Pragmatics, Second Edition» نوشتهٔ Michael Lee Scott, 1959-، منتشرشده توسط نشر Morgan Kaufmamn در سال 2006. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Programming Language Pragmatics, Second Edition» در دستهٔ بدون دسته‌بندی قرار دارد.

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 synchronizationNew pedagogical featuresDesign & Implementation boxes+ Highlight the interplay between language design and language implementationTest Your Understanding review questions+ Help students assess their understanding of key points of a sectionIn More Depth CD supplements+ Present more advanced or peripheral material for students who would like to extend their knowledgeExplorations+ Provide students with additional exercises that are open-ended, research-type activitiesNew 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 contentCD System RequirementsPDF ViewerThe CD material includes PDF documents that you can read with a PDF viewer such as Adobe, Acrobat or Adobe Reader. Recent versions of Adobe Reader for some platforms are included on the CD.HTML BrowserThe navigation framework on this CD is delivered in HTML and JavaScript. It is recommended that you install the latest version of your favorite HTML browser to view this CD. The content has been verified under Windows XP with the following browsers: Internet Explorer 6.0, Firefox 1.5; under Mac OS X (Panther) with the following browsers: Internet Explorer 5.2, Firefox 1.0.6, Safari 1.3; and under Mandriva Linux 2006 with the following browsers: Firefox 1.0.6, Konqueror 3.4.2, Mozilla 1.7.11. The content is designed to be viewed in a browser window that is at least 720 pixels wide. You may find the content does not display well if your display is not set to at least 1024x768 pixel resolution.Operating SystemThis CD can be used under any operating system that includes an HTML browser and a PDF viewer. This includes Windows, Mac OS, and most Linux and Unix systems.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 New Coverage: \* 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. New Pedagogical Features: \* 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. Table of contents......Page 6 Preface......Page 17 Changes in the Second Edition......Page 18 How to Use the Book......Page 21 Acknowledgments for the Second Edition......Page 23 I Foundations......Page 27 1 Introduction......Page 28 1.1 The Art of Language Design......Page 30 1.2 The Programming Language Spectrum......Page 33 1.3 Why Study Programming Languages?......Page 37 1.4 Compilation and Interpretation......Page 39 1.5 Programming Environments......Page 47 1.6 An Overview of Compilation......Page 48 1.7 Summary and Concluding Remarks......Page 57 1.8 Exercises......Page 58 1.9 Explorations......Page 59 1.10 Bibliographic Notes......Page 61 2 Programming Language Syntax......Page 62 2.1 Specifying Syntax: Regular Expressions and Context-Free Grammars......Page 63 2.2 Scanning......Page 71 2.3 Parsing......Page 86 2.4 Theoretical Foundations......Page 119 2.5 Summary and Concluding Remarks......Page 120 2.6 Exercises......Page 121 2.8 Bibliographic Notes......Page 126 3 Names, Scopes, and Bindings......Page 128 3.1 The Notion of Binding Time......Page 129 3.2 Object Lifetime and Storage Management......Page 131 3.3 Scope Rules......Page 139 3.4 Implementing Scope......Page 160 3.5 The Binding of Referencing Environments......Page 161 3.6 Binding Within a Scope......Page 167 3.8 Summary and Concluding Remarks......Page 174 3.9 Exercises......Page 176 3.10 Explorations......Page 182 3.11 Bibliographic Notes......Page 183 4 Semantic Analysis......Page 185 4.1 The Role of the Semantic Analyzer......Page 186 4.2 Attribute Grammars......Page 190 4.3 Evaluating Attributes......Page 192 4.4 Action Routines......Page 203 4.5 Space Management for Attributes......Page 205 4.6 Decorating a Syntax Tree......Page 206 4.7 Summary and Concluding Remarks......Page 211 4.8 Exercises......Page 213 4.9 Explorations......Page 217 4.10 Bibliographic Notes......Page 218 5 Target Machine Architecture......Page 219 5.1 The Memory Hierarchy......Page 220 5.2 Data Representation......Page 223 5.3 Instruction Set Architecture......Page 225 5.4 Architecture and Implementation......Page 228 5.5 Compiling for Modern Processors......Page 234 5.6 Summary and Concluding Remarks......Page 245 5.7 Exercises......Page 247 5.8 Explorations......Page 250 5.9 Bibliographic Notes......Page 251 II Core Issues in Language Design......Page 254 6 Control Flow......Page 255 6.1 Expression Evaluation......Page 256 6.2 Structured and Unstructured Flow......Page 276 6.3 Sequencing......Page 282 6.4 Selection......Page 283 6.5 Iteration......Page 292 6.6 Recursion......Page 309 6.7 Nondeterminacy......Page 317 6.8 Summary and Concluding Remarks......Page 318 6.9 Exercises......Page 320 6.10 Explorations......Page 326 6.11 Bibliographic Notes......Page 327 7 Data Types......Page 329 7.1 Type Systems......Page 330 7.2 Type Checking......Page 343 7.3 Records (Structures) and Variants (Unions)......Page 358 7.4 Arrays......Page 371 7.5 Strings......Page 388 7.6 Sets......Page 389 7.7 Pointers and Recursive Types......Page 391 7.8 Lists......Page 411 7.9 Files and Input/Output......Page 414 7.10 Equality Testing and Assignment......Page 415 7.11 Summary and Concluding Remarks......Page 417 7.12 Exercises......Page 420 7.13 Explorations......Page 426 7.14 Bibliographic Notes......Page 427 8 Subroutines and Control Abstraction......Page 429 8.1 Review of Stack Layout......Page 430 8.2 Calling Sequences......Page 432 8.3 Parameter Passing......Page 439 8.4 Generic Subroutines and Modules......Page 456 8.5 Exception Handling......Page 463 8.6 Coroutines......Page 475 8.7 Summary and Concluding Remarks......Page 481 8.8 Exercises......Page 482 8.9 Explorations......Page 488 8.10 Bibliographic Notes......Page 489 9 Data Abstraction and Object Orientation......Page 491 9.1 Object-Oriented Programming......Page 493 9.2 Encapsulation and Inheritance......Page 503 9.3 Initialization and Finalization......Page 511 9.4 Dynamic Method Binding......Page 519 9.5 Multiple Inheritance......Page 533 9.6 Object-Oriented Programming Revisited......Page 534 9.7 Summary and Concluding Remarks......Page 535 9.8 Exercises......Page 537 9.9 Explorations......Page 539 9.10 Bibliographic Notes......Page 540 III Alternative Programming Models......Page 542 10 Functional Languages......Page 543 10.1 Historical Origins......Page 544 10.2 Functional Programming Concepts......Page 546 10.3 A Review/Overview of Scheme......Page 548 10.4 Evaluation Order Revisited......Page 559 10.5 Higher-Order Functions......Page 565 10.7 Functional Programming in Perspective......Page 569 10.9 Exercises......Page 572 10.10 Explorations......Page 577 10.11 Bibliographic Notes......Page 578 11 Logic Languages......Page 579 11.1 Logic Programming Concepts......Page 580 11.2 Prolog......Page 581 11.4 Logic Programming in Perspective......Page 599 11.5 Summary and Concluding Remarks......Page 603 11.6 Exercises......Page 604 11.7 Explorations......Page 606 11.8 Bibliographic Notes......Page 607 12 Concurrency......Page 608 12.1 Background and Motivation......Page 609 12.2 Concurrent Programming Fundamentals......Page 620 12.3 Shared Memory......Page 638 12.4 Message Passing......Page 661 12.5 Summary and Concluding Remarks......Page 679 12.6 Exercises......Page 681 12.7 Explorations......Page 687 12.8 Bibliographic Notes......Page 688 13 Scripting Languages......Page 690 13.1 What Is a Scripting Language?......Page 691 13.2 Problem Domains......Page 696 13.3 Scripting the WorldWideWeb......Page 720 13.4 Innovative Features......Page 741 13.5 Summary and Concluding Remarks......Page 767 13.6 Exercises......Page 769 13.7 Explorations......Page 774 13.8 Bibliographic Notes......Page 775 IV A Closer Look at Implementation......Page 778 14.1 Back-End Compiler Structure......Page 779 14.2 Intermediate Forms......Page 784 14.3 Code Generation......Page 787 14.4 Address Space Organization......Page 793 14.5 Assembly......Page 794 14.6 Linking......Page 799 14.7 Dynamic Linking......Page 802 14.8 Summary and Concluding Remarks......Page 804 14.9 Exercises......Page 805 14.10 Explorations......Page 807 14.11 Bibliographic Notes......Page 808 15 Code Improvement......Page 809 A Programming Languages Mentioned......Page 810 B Language Design and Language Implementation......Page 820 C Numbered Examples......Page 824 Bibliography......Page 836 Index......Page 853 Programming Language Pragmatics addresses the fundamental principles at work in the most important contemporary languages, highlights the critical relationship between language design and language implementation, and devotes special attention to issues of importance to the expert programmer. Thanks to its rigorous but accessible teaching style, you ll emerge better prepared to choose the best language for particular projects, to make more effective use of languages you already know, and to learn new languages quickly and completely. Features Addresses the most recent developments in programming language design, spanning more than forty different languages, including Ada 95, C, C++, Fortran 95, Java, Lisp, Scheme, ML, Modula-3, Pascal, and Prolog. Places a special emphasis on implementation issues how the techniques used by compilers and related tools influence language design, and vice versa. Covers advanced topics in language design and implemenation, such as iterators, coroutines, templates (generics), separate compilation, I/O, type inference, and exception handling. Reviews language-related topics in assembly-level architecture critical for understanding what a compiler does to a program. Offers in-depth coverage of object-oriented programming, including multiple inheritance and dynamic method binding. Devotes a special section to static and dynamic linking. Includes a comprehensive chapter on concurrency, with detailed coverage of both shared-memory and message-passing languages and libraries. Provides an accessible introduction to the formal foundations of compilation (automata theory), functional programming (lambda calculus), and logic programming (predicate calculus). About the Author Michael L. Scott is a professor in the University of Rochester's Department of Computer Science, which he chaired from 1996 to 1999. He is the designer of the Lynx distributed programming language and a co-designer of the Charlotte and Psyche parallel operating systems, the Bridge parallel file system, the Cashmere distributed shared memory system, and the MCS mutual exclusion lock. He received his Ph.D. from the University of Wisconsin-Madison in 1985.

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
  • 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
With the rise of virtual machines, scripting languages, mobile code, and graphical user interfaces, the need for an integrated treatment of language design and language implementation has never been greater. Programming Language Pragmatics stresses this sort of integration, while keeping its focus on programming language design. Both students and expert programmers alike will benefit from its comprehensive exploration of the fundamental concepts underlying the most important contemporary languages. Fully updated, this second edition includes a new chapter on scripting languages and covers C99, C# 2.0, and Java 5. "The first electronic computers were monstrous contraptions, filling several rooms, consuming as much electricity as a good-size factory, and costing millions of 1940s dollars (but with the computing power of a modern hand-held calculator)." Accompanying CD-ROM contains ... "advanced/optional content, hundreds of working examples, an active search facility, and live links to manuals, tutorials, compilers, and interpreters on the World Wide Web."--Page 4 of cover.
دانلود کتاب Programming Language Pragmatics, Second Edition