<p>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).</p>
<p>I now prefer Grune:</p>
<p>&quot;Modern Compiler Design&quot;, Grune, van Reeuwijk, Bal, Jacobs, Langendoen, Published by Springer 2012. ISBN 978-1461446989</p>
<p>But choosing books to recommend to students is a very personal thing and others may have other choices.</p>
<hr />
<p><sub><sup>I learned from the 1971 classic &quot;Compiler Construction for Digital Computers&quot; by Gries, but not something you can use on a modern course!</sup></sub></p>

CC BY-SA 4.0
2023-04-18T12:25:24.790Z
Thanks for your input on this.  The Amazon reviews for it don't look great.  Any comments on that?
Frank Henard
CC BY-SA 4.0
2023-04-18T22:04:45.507Z
@FrankHenard You must be seeing different reviews than me, or seeing a different Amazon. All the reviews I see there look fine to me. Perhaps they are location specific.
Brian Tompsett - 汤莱恩
CC BY-SA 4.0
2023-04-19T12:27:12.660Z
@BrianThompsett maybe you're right about the location.  I'm in the US.
Frank Henard
CC BY-SA 4.0
2020-07-29T09:01:46.823Z
2020-07-29T09:01:46.823Z
Brian Tompsett - 汤莱恩
<p>Now for a student who is trying to master the subject of &quot;Compiler Design&quot; which book should he/she follow (written by Aho, Ullman)?</p>
<hr />
<p><strong>1) Principles of Compiler Design By Aho Ullman (1977)</strong></p>
<p><a href="https://i.sstatic.net/ZCiGx.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/ZCiGx.png" alt="Principles of Compiler Design" /></a></p>
<p>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.</p>
<hr />
<p><strong>2) Compilers: Principles, Techniques and Tools (2nd edition) by Aho, Ullman, Sethi (2006)</strong></p>
<p><a href="https://i.sstatic.net/RBPRf.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/RBPRf.png" alt="Compilers: Principles, Techniques and Tools" /></a></p>
<hr />
<p>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 <a href="https://cstheory.stackexchange.com/a/1958/57676">in this answer</a> 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.</p>
<hr />
<p><strong>EDIT:</strong></p>
<p><a href="https://cseducators.stackexchange.com/questions/6423/the-theory-of-parsing-translation-and-compiling-v-s-compilers-principles-t">Here</a> the question asks whether &quot;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?&quot; The book which is being referred to as &quot;two volume book&quot; is different from the book marked as (1) in my question.</p>
<p>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.<a href="https://cstheory.stackexchange.com/a/1958/57676">In this answer</a> 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.</p>
<p>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)</p>

CC BY-SA 4.0
2020-07-09T17:47:08.150Z
Does this answer your question? [The theory of parsing, translation, and compiling, v.s. Compilers: Principles, Techniques, and Tools?](https://cseducators.stackexchange.com/questions/6423/the-theory-of-parsing-translation-and-compiling-v-s-compilers-principles-t)
Buffy
CC BY-SA 4.0
2020-07-09T17:47:51.730Z
An old book should be fine for a beginner.
Buffy
CC BY-SA 4.0
2020-07-09T20:09:42.353Z
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.
Ran Mouri
CC BY-SA 4.0
2020-07-09T20:17:38.930Z
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.
Buffy
CC BY-SA 4.0
2020-07-11T03:40:00.240Z
@Buffy This question is not my area, but that is so close to being an answer. You should turn it into an answer!
Ben I.
CC BY-SA 4.0
2020-07-11T19:47:36.400Z
@BenI. you said it right.
Ran Mouri
<self-learning><resource-request><textbook><compiling>
Principles of Compiler Design v/s Compilers: Principles, Techniques and Tools by Aho, Ullman
# Principles of Compiler Design v/s Compilers: Principles, Techniques and Tools by Aho, Ullman

(Asked by: username_0 on 2020-07-09)

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](https://i.sstatic.net/ZCiGx.png)](https://i.sstatic.net/ZCiGx.png)

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](https://i.sstatic.net/RBPRf.png)](https://i.sstatic.net/RBPRf.png)

---

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](https://cstheory.stackexchange.com/a/1958/57676) 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](https://cseducators.stackexchange.com/questions/6423/the-theory-of-parsing-translation-and-compiling-v-s-compilers-principles-t) 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](https://cstheory.stackexchange.com/a/1958/57676) 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)

**Tags:** self-learning, resource-request, textbook, compiling

> **Comments:**
> **username_1**: Does this answer your question? [The theory of parsing, translation, and compiling, v.s. Compilers: Principles, Techniques, and Tools?](https://cseducators.stackexchange.com/questions/6423/the-theory-of-parsing-translation-and-compiling-v-s-compilers-principles-t)  
> **username_1**: An old book should be fine for a beginner.  
> **username_0**: 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.  
> **username_1**: 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.  
> **username_2**: @username_1 This question is not my area, but that is so close to being an answer. You should turn it into an answer!  
> **username_0**: @BenI. you said it right.  

---

## 1 answers

### Answer by username_3 on 2020-07-29. Score: 4

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!

> **Comments:**
> **username_4**: Thanks for your input on this.  The Amazon reviews for it don't look great.  Any comments on that?  
> **username_3**: @FrankHenard You must be seeing different reviews than me, or seeing a different Amazon. All the reviews I see there look fine to me. Perhaps they are location specific.  
> **username_4**: @BrianThompsett maybe you're right about the location.  I'm in the US.  

---

