Cantitate/Preț
Produs

Compilers: Principles, Techniques, and Tools: United States Edition

Autor Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
en Limba Engleză Hardback – 30 aug 2006

ABORDAREA PRACTICĂ a volumului Compilers reușește să echilibreze rigoarea teoretică a fundamentelor informaticii cu implementări software concrete. Notăm cu interes faptul că, deși este supranumită „Dragon Book” și reprezintă standardul academic în domeniu, această ediție a doua pune un accent sporit pe aplicabilitatea tehnicilor de compilare în contextul modern al ingineriei software. Considerăm esențială decizia autorilor de a nu limita expunerea doar la scrierea unui compilator propriu-zis, ci de a utiliza conceptele de analiză lexicală și sintactică pentru a rezolva probleme diverse de design de sistem.

Structura cursului este una progresivă: se pornește de la procesarea limbajului și evoluția acestuia, trecând rapid prin construcția unui traducător simplu, pentru ca apoi să detalieze mecanisme complexe precum automatele finite și gramaticile independente de context. Prezența unor instrumente standard, precum generatorul Lex, indică o orientare clară către fluxul de lucru real al unui programator. Complementar lucrării Engineering a Compiler de Keith D. Cooper, care se concentrează pe evoluțiile recente în elaborarea semantică și suportul runtime, volumul de față oferă o bază teoretică mult mai vastă în zona de front-end a compilării (lexing și parsing).

În contextul operei autorilor, Compilers reprezintă punctul culminant al cercetărilor începute cu Compilerbau și Data Structures and Algorithms. Dacă în lucrările lor anterioare, precum The AWK Programming Language, Alfred V. Aho demonstra utilitatea practică a procesării șirurilor de caractere, aici fundamentează științific întregul proces de transformare a codului sursă. Merită menționat că cele peste 900 de pagini sunt organizate astfel încât să deservească atât un curs universitar de un semestru, cât și o referință tehnică pentru dezvoltatorii de instrumente de analiză statică a codului.

Citește tot Restrânge

Preț: 132605 lei

Preț vechi: 172214 lei
-23%

Puncte Express: 1989

Carte disponibilă

Livrare economică 21 mai-04 iunie


Specificații

ISBN-13: 9780321486813
ISBN-10: 0321486811
Pagini: 1009
Dimensiuni: 170 x 236 x 41 mm
Greutate: 1.36 kg
Ediția:2Nouă
Editura: Pearson Education
Colecția Prentice Hall
Locul publicării:Upper Saddle River, United States

De ce să citești această carte

Recomandăm acest volum studenților și dezvoltatorilor care doresc să înțeleagă „cutia neagră” a limbajelor de programare. Prin parcurgerea acestui tratat, cititorul câștigă o expertiză tehnică rară în optimizarea codului și în utilizarea automatelor finite. Este o resursă esențială pentru oricine vrea să depășească nivelul de simplu utilizator de framework-uri, oferind instrumentele necesare pentru a construi limbaje specifice domeniului (DSL) sau analizoare de performanță.


Despre autor

Alfred V. Aho este profesor la Universitatea Columbia și laureat al medaliei IEEE John von Neumann, fiind o figură legendară în informatică. Jeffrey D. Ullman și Monica S. Lam (Stanford) completează echipa de autori, aducând expertiză în algoritmi și optimizarea sistemelor. Împreună, au pus bazele multor concepte fundamentale în structuri de date și teoria limbajelor, influențând generații de ingineri software prin lucrări precum Data Structures and Algorithms și contribuția la limbajul AWK.


Descriere

Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition.  Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published.  The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development.
 
New chapters include:  
 
Chapter 10 Instruction-Level Parallelism
Chapter 11 Optimizing for Parallelism and Locality
Chapter 12 Interprocedural Analysis

Cuprins

1  Introduction
1.1 Language Processors
1.2 The Structure of a Compiler
1.3 The Evolution of Programming Languages
1.4 The Science of Building a Compiler
1.5 Applications of Compiler Technology
1.6 Programming Language Basics
1.7 Summary of Chapter 1
1.8 References for Chapter 1
 
2 A Simple Syntax-Directed Translator  
2.1 Introduction
2.2 Syntax Definition  
2.3 Syntax-Directed Translation
2.4 Parsing
2.5 A Translator for Simple Expressions  
2.6 Lexical Analysis  
2.7 Symbol Tables
2.8 Intermediate Code Generation
2.9 Summary of Chapter 2
 
3 Lexical Analysis
3.1 The Role of the Lexical Analyzer
3.2 Input Buffering  
3.3 Specification of Tokens
3.4 Recognition of Tokens
3.5 The Lexical-Analyzer Generator Lex
3.6 Finite Automata
3.7 From Regular Expressions to Automata
3.8 Design of a Lexical-Analyzer Generator
3.9 Optimization of DFA-Based Pattern Matchers  
3.10 Summary of Chapter 3
3.11 References for Chapter 3
 
4 Syntax Analysis
4.1 Introduction
4.2 Context-Free Grammars
4.3 Writing a Grammar
4.4 Top-Down Parsing  
4.5 Bottom-Up Parsing
4.6 Introduction to LR Parsing: Simple LR
4.7 More Powerful LR Parsers
4.8 Using Ambiguous Grammars
4.9 Parser Generators
4.10 Summary of Chapter 4  
4.11 References for Chapter 4
 
5 Syntax-Directed Translation
5.1 Syntax-Directed Definitions
5.2 Evaluation Orders for SDD's  
5.3 Applications of Syntax-Directed Translation
5.4 Syntax-Directed Translation Schemes
5.5 Implementing L-Attributed SDD's  
5.6 Summary of Chapter 5
5.7 References for Chapter 5  
 
6 Intermediate-Code Generation
6.1 Variants of Syntax Trees  
6.2 Three-Address Code
6.3 Types and Declarations
6.4 Translation of Expressions  
6.5 Type Checking  
6.6 Control Flow
6.7 Backpatching
6.8 Switch-Statements
6.9 Intermediate Code for Procedures  
6.10 Summary of Chapter 6
6.11 References for Chapter 6
 
7 Run-Time Environments
7.1 Storage Organization  
7.2 Stack Allocation of Space
7.3 Access to Nonlocal Data on the Stack  
7.4 Heap Management  
7.5 Introduction to Garbage Collection  
7.6 Introduction to Trace-Based Collection
7.7 Short-Pause Garbage Collection
7.8 Advanced Topics in Garbage Collection
7.9 Summary of Chapter 7
7.10 References for Chapter 7
 
8 Code Generation
8.1 Issues in the Design of a Code Generator
8.2 The Target Language
8.3 Addresses in the Target Code  
8.4 Basic Blocks and Flow Graphs
8.5 Optimization of Basic Blocks
8.6 A Simple Code Generator
8.7 Peephole Optimization  
8.8 Register Allocation and Assignment  
8.9 Instruction Selection by Tree Rewriting  
8.10 Optimal Code Generation for Expressions
8.11 Dynamic Programming Code-Generation
8.12 Summary of Chapter 8  
8.13 References for Chapter 8  
 
9 Machine-Independent Optimizations
9.1 The Principal Sources of Optimization
9.2 Introduction to Data-Flow Analysis
9.3 Foundations of Data-Flow Analysis  
9.4 Constant Propagation  
9.5 Partial-Redundancy Elimination
9.6 Loops in Flow Graphs
9.7 Region-Based Analysis
9.8 Symbolic Analysis
9.9 Summary of Chapter 9
9.10 References for Chapter 9
 
10 Instruction-Level Parallelism
10.1 Processor Architectures
10.2 Code-Scheduling Constraints
10.3 Basic-Block Scheduling
10.4 Global Code Scheduling
10.5 Software Pipelining
10.6 Summary of Chapter 10  
10.7 References for Chapter 10
 
11 Optimizing for Parallelism and Locality  
11.1 Basic Concepts
11.2 Matrix Multiply: An In-Depth Example
11.3 Iteration Spaces
11.4 Affine Array Indexes  
11.5 Data Reuse
11.6 Array Data-Dependence Analysis
11.7 Finding Synchronization-Free Parallelism
11.8 Synchronization Between Parallel Loops
11.9 Pipelining
11.10 Locality Optimizations
11.11 Other Uses of Affine Transforms  
11.12 Summary of Chapter 11
11.13 References for Chapter 11
 
12 Interprocedural Analysis  
12.1 Basic Concepts  
12.2 Why Interprocedural Analysis?
12.3 A Logical Representation of Data Flow  
12.4 A Simple Pointer-Analysis Algorithm
12.5 Context-Insensitive Interprocedural Analysis
12.6 Context-Sensitive Pointer Analysis
12.7 Datalog Implementation by BDD's
12.8 Summary of Chapter 12
12.9 References for Chapter 12
 
A  A Complete Front End
A.1 The Source Language
A.2 Main
A.3 Lexical Analyzer
A.4 Symbol Tables and Types
A.5 Intermediate Code for Expressions  
A.6 Jumping Code for Boolean Expressions
A.7 Intermediate Code for Statements
A.8 Parser  
A.9 Creating the Front End
 
B Finding Linearly Independent Solutions
Index  
 
 

Notă biografică

Alfred V. Aho is Lawrence Gussman Professor of Computer Science at Columbia University. Professor Aho has won several awards including the Great Teacher Award for 2003 from the Society of Columbia Graduates and the IEEE John von Neumann Medal.  He is a member of the National Academy of Engineering and a fellow of the ACM and IEEE.
 
Monica S. Lam is a Professor of Computer Science at Stanford University, was the Chief Scientist at Tensilica and the founding CEO of moka5. She led the SUIF project which produced one of the most popular research compilers, and pioneered numerous compiler techniques used in industry.
 
Ravi Sethi launched the research organization in Avaya and is president of Avaya Labs.  Previously, he was a senior vice president at Bell Labs in Murray Hill and chief technical officer for communications software at Lucent Technologies. He has held teaching positions at the Pennsylvania State University and the University of Arizona, and has taught at Princeton University and Rutgers.  He is a fellow of the ACM.
 
Jeffrey Ullman is CEO of Gradiance and a Stanford W. Ascherman Professor of Computer Science at Stanford University. His research interests include database theory, database integration, data mining, and education using the information infrastructure.  He is a member of the National Academy of Engineering, a fellow of the ACM, and winner of the Karlstrom Award and Knuth Prize.
 

Caracteristici

  • Introduces the theory and practice of compiler design.
  • Covers topics like context-free grammars, fine state machines, and syntax-directed translation.

Caracteristici noi

 
  • All new chapter on Interprocedural analysis, written by world-renowned computer scientist, Monica S. Lam.
 
  • Presents the Five Methods for Translation to explain syntax-directed translation.
 
  • Illustrates new techniques for data-flow analysis that emphasize the unity of code optimization and other program analysis software.
 
  • Uses code optimization to work with parallel machines.
 
  • Explains just-in-time compiling with programming languages such as Java.
 
  • Discusses garbage collection.
 
  • Brings all new material together through new case studies.
 
  • Includes additional practice and tests comprehension of important concepts with Gradiance an online homework and tutorial system.
Gradiance is the most advanced online assessment tool developed for the computer science discipline.  With its innovative underlying technology, Gradiance turns basic homework assignments and programming labs into an interactive learning experience for students.  By using a series of “root questions” and hints, it not only tests a student’s capability, but actually simulates a one-on-one teacher-student tutorial that allows for the student to more easily learn the material.  Through the programming labs, instructors are capable of testing, tracking, and honing their students’ skills, both in terms of syntax and semantics, with an unprecedented level of assessment never before offered.  For more information about Gradiance, please visit www.aw.com/gradiance.