1
$\begingroup$

Now for a student who is trying to master the subject of "Compiler Design" which book should he/she follow (written by Aho, Ullman)?


1) Principles of Compiler Design By Aho Ullman (1977)

Principles of Compiler Design

I find that the used copies of these text is still available online. Is it so that this particular edition inspite of being old is in great demand.


2) Compilers: Principles, Techniques and Tools (2nd edition) by Aho, Ullman, Sethi (2006)

Compilers: Principles, Techniques and Tools


I would like to know which one would be more suitable for a novice student having knowledge of only automata theory. Which book has a more lucid language? Which one is more preferable for a student performing self-study. I wanted to ask this question because in this answer it is said that older editions of few texts are sometimes better. So it is always better to have a good guidance before diving into a subject learning.


EDIT:

Here the question asks whether "the two volume books are more advanced or complete than the dragon book.Is the dragon book supposed to replace the two-volume books? Are the two-volume books outdated or still very relevant?" The book which is being referred to as "two volume book" is different from the book marked as (1) in my question.

Now I am asking specifically which one among the two books which are referred by me are more easy to read? Which has a more lucid language.In this answer here they say that the automata book by Ullman in the newer editions have changed the elegance of the actual text. Many important portions have been removed and at portions it lacks clarity. Now my question is which among the two books are better or are they equivalent? I had difficulty in following the second edition of the automata book so I felt like asking it here, such that before I begin, I am guided properly.

To learn the basics an old book does not matter, because foundations should remain the same, but I want to read those foundations in an elegant manner, without being puzzled by unclear or in-depth explanation of the same.(which at times happen if a new co-author is introduced)

$\endgroup$
  • 3
    $\begingroup$ Does this answer your question? The theory of parsing, translation, and compiling, v.s. Compilers: Principles, Techniques, and Tools? $\endgroup$ – Buffy Jul 9 at 17:47
  • 2
    $\begingroup$ An old book should be fine for a beginner. $\endgroup$ – Buffy Jul 9 at 17:47
  • 1
    $\begingroup$ No it does not answer my question, but frankly speaking, it was your elegant answer which caused me to ask this question here, which was there in my mind for a few days. $\endgroup$ – Ran Mouri Jul 9 at 20:09
  • 2
    $\begingroup$ My (strong) suggestion is that the first compiler you build should be done with a recursive descent program and no compiler tools at all. A simple LL(1) language with a simple grammar. If you compile to an abstract assembly language then the whole project is only a couple of weeks work. Then you will understand the structure. Hence old books are fine to start. Sethi probably made an improvement pedagogically, but there is an older "dragon book" version without him. You won't do much of anything with optimization, but that can come later. $\endgroup$ – Buffy Jul 9 at 20:17
  • 1
    $\begingroup$ @Buffy This question is not my area, but that is so close to being an answer. You should turn it into an answer! $\endgroup$ – Ben I. Jul 11 at 3:40
3
$\begingroup$

Although it is not quite what you are asking, I deprecated these two books when teaching compiler design as many otherwise capable students are finding them tough going. I started to focus on more practical based books. Its a matter of top-down versus bottom-up approaches to the material (not the parsing).

I now prefer Grune:

"Modern Compiler Design", Grune, van Reeuwijk, Bal, Jacobs, Langendoen, Published by Springer 2012. ISBN 978-1461446989

But choosing books to recommend to students is a very personal thing and others may have other choices.


I learned from the 1971 classic "Compiler Construction for Digital Computers" by Gries, but not something you can use on a modern course!

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.