
Ebook Info
- Published: 2011
- Number of pages: 824 pages
- Format: PDF
- File Size: 22.17 MB
- Authors: Keith D. Cooper
Description
This entirely revised second edition of Engineering a Compiler is full of technical updates and new material covering the latest developments in compiler technology. In this comprehensive text you will learn important techniques for constructing a modern compiler. Leading educators and researchers Keith Cooper and Linda Torczon combine basic principles with pragmatic insights from their experience building state-of-the-art compilers. They will help you fully understand important techniques such as compilation of imperative and object-oriented languages, construction of static single assignment forms, instruction scheduling, and graph-coloring register allocation.In-depth treatment of algorithms and techniques used in the front end of a modern compilerFocus on code optimization and code generation, the primary areas of recent research and developmentImprovements in presentation including conceptual overviews for each chapter, summaries and review questions for sections, and prominent placement of definitions for new termsExamples drawn from several different programming languages
User’s Reviews
Reviews from Amazon users which were colected at the time this book was published on the website:
⭐This book is pure theory. The title didn’t convey this to me.If you haven’t yet created your own compiler, then I would look elsewhere. The best bet would be too get “Brinch Hansen on Pascal Compilers”, which contains a small amount of theory but heaps of code (fully commented and understandable) which you can easily digest and then modify for your custom compiler.The compilers I’ve written (based largely on Hansen) used the “top down” method, which can easily be coded by hand. Although a great introduction to compilers, there is not much discussion on bottom-up parsing or code optimization.The first half of the book reviewed here was a good refresher for me about compilation techniques. I could follow it easily, but I knew most of the material beforehand (from Hansen). The other part was different because it explained bottom-up parsing well. I never “got it” when reading the Dragon book or others. So, I was impressed by the first half of the book.The second half is about optimization. The topics here were either briefly mentioned in Hansen (but no implementation was given), or else were absent. Hansen’s approach was to use a stack-based machine, which is simple to do but not good for optimizing code. In this new book, the authors don’t use a stack-based approach, but rather a register approach. This allows for lots of types of optimization. It’s heavy going. There are some diagrams, but not enough for me. Pseudo code was given to explain each optimization technique, but there were always special cases that threw a spanner in the works. I liked the constant summaries, but when I faced the questions at the end of the chapters, I quickly realized I hadn’t digested the material fully! I also realized that I’d never be able to implement the optimizations from the pseudo-code presented.I learned that there is almost an infinite numbers of combinations of optimization code. This shows that there will always be areas of research in compilers. I got stuck in a lot of places, but still got a good understanding of optimization theory. Many techniques were written in acronyms to save space, but I kept forgetting what the names stood for, and that hindered my learning.For a single-semester course, Hansen’s book is better, as it’s practical. This new book would be a great way to consolidate your knowledge and let you prepare you for further study, or research. There are other books on optimization, but this one has enough topics and theory for me!It’s a good book, but I’ve taken a star away because I feel it’s too theoretical.
⭐Upon opening this book, you might be a little off-put. The font and format are a little odd, and there are page-long algorithms in slightly archaic pseudocode (“endfor”, etc.). However, I found it be a great introduction to compilers.I felt that implementation details of some of the algorithms were a little specific, but they also thoroughly discussed the implications, strengths, and weaknesses of each method. It was therefore easy to read the general overview and analysis of a technique, skipping the sometimes tedious implementation. Then, when implementing certain algorithms, you can flip back for techniques and tips.The sections on abstractions focus mostly on object orientation. Languages like Haskell are not discussed, and Lisp (which, to be fair, is interpreted in its traditional form) is only given a passing mention. This is justifiable, though, as features like currying are generally considered advanced topics. I would have liked to have seen more of it, but I can’t complain about its absence.The title of the book may be the best concise description of its content. If you want to *make* a compiler and simultaneously understand how it works, this is a strong choice.
⭐As a professor and former compiler writer, I’m a big fan (and owner) of compiler books (including those by Aho, Ullman, Goos, Waite, Wirth, …). The last years have seen a resurgence of really good books covering modern compiler engineering. This one (first and, gladly, second edition) is by far the best in its class. The contemporary competition consists of* Aho/Sethi/Ullman/Lam: nice book, great follow-on from the earlier dragon books, but is so thick that it’s tough to teach from, and to be honest, it’s getting convoluted.* Allen/Kennedy: another great book, covering some of the best results in optimization (of well behaved languages like Fortran). It is, just like the latest dragon book, heavy slogging and not digestible by many students.* Muchnick: yet another excellent book, but it hasn’t (AFAIK) been updated.By contrast, this book (Cooper/Torczon) is not only digestible (nice presentation, not overly terse), but it also covers new and interesting algorithms and data-structures. This applies not only to today’s hot topics like optimization (and related data-structures like SSA) and code-generation, but also to front-ends. For example, the chapter on lexical analysis covers Brzozowski’s minimization algorithm. (As a specialist in such minimization algorithms, it’s very encouraging to see compiler writers/text book authors now embracing such an easily taught algorithm.) All in all, a very nice book on modern compiler engineering.
⭐I’m quite far from finished with the book, but so far it has been very informative. I think the writer assumes that you’ve been introduced to the subject at least a little prior to reading it. Sometimes abbreviations are used that is not previously explained, I guess if you have some experience you’ll know what he is talking about, but not if your new to the subject.It is a good book and I would have given it five stars if it wasn’t for the poor Kindle adaptation. I cannot read the book on my Kindle (!) nor on my Windows phone. Only on the Windows desktop version of the Kindle app was I able to read it.
⭐I grew up with the first edition of the Dragon book, a fine book for its time, especially when coupled with YACC and LEX. Lately I’ve been contributing to LLVM and I needed something a little more up to date as a refresher. To that purpose, Engineering A Compiler, second edition, is an outstanding modern text. It uses a pleasant+simple pseudo code for its examples as opposed to Java or C++. It’s emphasis is on English text and it reads well. I’d put it on the Hennessy and Patterson shelf.
⭐Great Book, use this to learn for my compiler designs course.
⭐Comprehensive but a fair bit of maths. If you want something more hands on then go for the tiger/ML book.
⭐Das Buch bietet einen guten Überblick, ohne jedoch allzu sehr in die Tiefe zu gehen. Beim Parsing hätte mir etwas mehr Praxisbezug gefallen, es werden CFGs und Attributgrammatiken verwendet und die Autoren haben offenbar ein Faible für Parsergeneratoren. In der Praxis werden solche Generatoren aber eher weniger eingesetzt, vor allem keine für Attributgrammatiken, und da wäre mir etwas mehr über Tricks für handgeschriebene Parser mit Lookahead lieber gewesen. Dafür glänzt das Buch an anderen Stellen, IR, Laufzeitstrukturen und Activation Records werden recht ausführlich erklärt, wobei Optimierungen später getrennt behandelt werden. Auf moderne Tools wie LLVM wird praktisch nicht eingegangen, es geht also vor allem um die Grundlagen und weniger den Praxisbezug, denn wer würde heute noch einen Compiler schreiben, ohne LLVM oder ähnliches zu verwenden? Alles in allem ist das Buch eine Einführung in Standardmethoden, und darin ist es gut und leicht verständlich. Allein für die Erklärung der Vorteile der SSA-Form von machinennahen internen Repräsentationen kann ich das Buch empfehlen. Die Kapitel sind in kurze, oft beinahe abgeschlossene Unterabschnitte eingeteilt, sodass das Lesen Spaß macht und auch nicht ermüdet.Fazit: Ein empfehlenswertes Buch für alle, die sich für Compiler- oder Interpreterdesign interessieren. Ich empfehle generell indische Ausgaben, sie haben etwas dünneres Papier und sind dafür aber auch viel billiger. An dem Gefasel auf dem Einband, dass der Verkauf anderswo verboten ist, ist selbstverständlich überhaupt nichts dran. Natürlich können Sie das Buch jederzeit in Indien bestellen – sonst wäre das Buch auch zu teuer.The contents of the book are great, and I highly recommend it as a much more digestible alternative to the Dragon Book. However, the print quality is lackluster: the font is blurry when looked up close, the pages have small but noticeable printing artifacts, and the paper quality just feels cheap. I would suggest picking up a different version for reading. If my star rating only reflected the quality of the craftsmanship it would be a 1 or 2, but due to the contents of the book I cannot drop it lower than a 4.
⭐Very thorough, and consistent introduction into compilers (I think it could be called more than introduction..).Goes from implementing scanners to optimization, and most efficient data structures. At each point, advantages and disadvantages of some technique X are exposedI highly recommendI have not read Dragon Book, so I can’t compare.On a side note, the format is kinda odd (huge pages, but only filled half-width, very wide margins, I suppose that’s for reader’s notes), book is really heavy, and the “pseudo-assembly” (ILOC) used is annoying
⭐Buch top, Zustellung durch Hermes flop. Warum kooperiert Amazon denn mit Hermes?
⭐
Keywords
Free Download Engineering a Compiler 2nd Edition in PDF format
Engineering a Compiler 2nd Edition PDF Free Download
Download Engineering a Compiler 2nd Edition 2011 PDF Free
Engineering a Compiler 2nd Edition 2011 PDF Free Download
Download Engineering a Compiler 2nd Edition PDF
Free Download Ebook Engineering a Compiler 2nd Edition