وبلاگ بلیان

Programming Language Pragmatics, Second Edition

معرفی کتاب «Programming Language Pragmatics, Second Edition» نوشتهٔ Michael Lee Scott, 1959-، منتشرشده توسط نشر Elsevier/Morgan Kaufmann ; Elsevier Science [distributor در سال 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 5 Preface......Page 16 Changes in the Second Edition......Page 17 How to Use the Book......Page 20 Acknowledgments for the Second Edition......Page 22 I Foundations......Page 26 1 Introduction......Page 27 1.1 The Art of Language Design......Page 29 1.2 The Programming Language Spectrum......Page 32 1.3 Why Study Programming Languages?......Page 36 1.4 Compilation and Interpretation......Page 38 1.5 Programming Environments......Page 46 1.6 An Overview of Compilation......Page 47 1.7 Summary and Concluding Remarks......Page 56 1.8 Exercises......Page 57 1.9 Explorations......Page 58 1.10 Bibliographic Notes......Page 60 2 Programming Language Syntax......Page 61 2.1 Specifying Syntax: Regular Expressions and Context-Free Grammars......Page 62 2.2 Scanning......Page 70 2.3 Parsing......Page 85 2.4 Theoretical Foundations......Page 118 2.5 Summary and Concluding Remarks......Page 119 2.6 Exercises......Page 120 2.8 Bibliographic Notes......Page 125 3 Names, Scopes, and Bindings......Page 127 3.1 The Notion of Binding Time......Page 128 3.2 Object Lifetime and Storage Management......Page 130 3.3 Scope Rules......Page 138 3.4 Implementing Scope......Page 159 3.5 The Binding of Referencing Environments......Page 160 3.6 Binding Within a Scope......Page 166 3.8 Summary and Concluding Remarks......Page 173 3.9 Exercises......Page 175 3.10 Explorations......Page 181 3.11 Bibliographic Notes......Page 182 4 Semantic Analysis......Page 184 4.1 The Role of the Semantic Analyzer......Page 185 4.2 Attribute Grammars......Page 189 4.3 Evaluating Attributes......Page 191 4.4 Action Routines......Page 202 4.5 Space Management for Attributes......Page 204 4.6 Decorating a Syntax Tree......Page 205 4.7 Summary and Concluding Remarks......Page 210 4.8 Exercises......Page 212 4.9 Explorations......Page 216 4.10 Bibliographic Notes......Page 217 5 Target Machine Architecture......Page 218 5.1 The Memory Hierarchy......Page 219 5.2 Data Representation......Page 222 5.3 Instruction Set Architecture......Page 224 5.4 Architecture and Implementation......Page 227 5.5 Compiling for Modern Processors......Page 233 5.6 Summary and Concluding Remarks......Page 244 5.7 Exercises......Page 246 5.8 Explorations......Page 249 5.9 Bibliographic Notes......Page 250 II Core Issues in Language Design......Page 253 6 Control Flow......Page 254 6.1 Expression Evaluation......Page 255 6.2 Structured and Unstructured Flow......Page 275 6.3 Sequencing......Page 281 6.4 Selection......Page 282 6.5 Iteration......Page 291 6.6 Recursion......Page 308 6.7 Nondeterminacy......Page 316 6.8 Summary and Concluding Remarks......Page 317 6.9 Exercises......Page 319 6.10 Explorations......Page 325 6.11 Bibliographic Notes......Page 326 7 Data Types......Page 328 7.1 Type Systems......Page 329 7.2 Type Checking......Page 342 7.3 Records (Structures) and Variants (Unions)......Page 357 7.4 Arrays......Page 370 7.5 Strings......Page 387 7.6 Sets......Page 388 7.7 Pointers and Recursive Types......Page 390 7.8 Lists......Page 410 7.9 Files and Input/Output......Page 413 7.10 Equality Testing and Assignment......Page 414 7.11 Summary and Concluding Remarks......Page 416 7.12 Exercises......Page 419 7.13 Explorations......Page 425 7.14 Bibliographic Notes......Page 426 8 Subroutines and Control Abstraction......Page 428 8.1 Review of Stack Layout......Page 429 8.2 Calling Sequences......Page 431 8.3 Parameter Passing......Page 438 8.4 Generic Subroutines and Modules......Page 455 8.5 Exception Handling......Page 462 8.6 Coroutines......Page 474 8.7 Summary and Concluding Remarks......Page 480 8.8 Exercises......Page 481 8.9 Explorations......Page 487 8.10 Bibliographic Notes......Page 488 9 Data Abstraction and Object Orientation......Page 490 9.1 Object-Oriented Programming......Page 492 9.2 Encapsulation and Inheritance......Page 502 9.3 Initialization and Finalization......Page 510 9.4 Dynamic Method Binding......Page 518 9.5 Multiple Inheritance......Page 532 9.6 Object-Oriented Programming Revisited......Page 533 9.7 Summary and Concluding Remarks......Page 534 9.8 Exercises......Page 536 9.9 Explorations......Page 538 9.10 Bibliographic Notes......Page 539 III Alternative Programming Models......Page 541 10 Functional Languages......Page 542 10.1 Historical Origins......Page 543 10.2 Functional Programming Concepts......Page 545 10.3 A Review/Overview of Scheme......Page 547 10.4 Evaluation Order Revisited......Page 558 10.5 Higher-Order Functions......Page 564 10.7 Functional Programming in Perspective......Page 568 10.9 Exercises......Page 571 10.10 Explorations......Page 576 10.11 Bibliographic Notes......Page 577 11 Logic Languages......Page 578 11.1 Logic Programming Concepts......Page 579 11.2 Prolog......Page 580 11.4 Logic Programming in Perspective......Page 598 11.5 Summary and Concluding Remarks......Page 602 11.6 Exercises......Page 603 11.7 Explorations......Page 605 11.8 Bibliographic Notes......Page 606 12 Concurrency......Page 607 12.1 Background and Motivation......Page 608 12.2 Concurrent Programming Fundamentals......Page 619 12.3 Shared Memory......Page 637 12.4 Message Passing......Page 660 12.5 Summary and Concluding Remarks......Page 678 12.6 Exercises......Page 680 12.7 Explorations......Page 686 12.8 Bibliographic Notes......Page 687 13 Scripting Languages......Page 689 13.1 What Is a Scripting Language?......Page 690 13.2 Problem Domains......Page 695 13.3 Scripting the WorldWideWeb......Page 719 13.4 Innovative Features......Page 740 13.5 Summary and Concluding Remarks......Page 766 13.6 Exercises......Page 768 13.7 Explorations......Page 773 13.8 Bibliographic Notes......Page 774 IV A Closer Look at Implementation......Page 777 14.1 Back-End Compiler Structure......Page 778 14.2 Intermediate Forms......Page 783 14.3 Code Generation......Page 786 14.4 Address Space Organization......Page 792 14.5 Assembly......Page 793 14.6 Linking......Page 798 14.7 Dynamic Linking......Page 801 14.8 Summary and Concluding Remarks......Page 803 14.9 Exercises......Page 804 14.10 Explorations......Page 806 14.11 Bibliographic Notes......Page 807 15 Code Improvement......Page 808 A Programming Languages Mentioned......Page 809 B Language Design and Language Implementation......Page 819 C Numbered Examples......Page 823 Bibliography......Page 835 Index......Page 852 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