People ask "how do I learn compilers" in some form or other every few weeks. Someone immediately replies "read the dragon book". This is very bad advice for a compiler newbie (see discussion)

If you find yourself in this position, please recommend "Engineering a Compiler" by Keith Cooper/Linda Torczon, or "Modern Compiler Implementation in X" (where X should probably be Java, maybe C), by Andrew Appel. These are excellent introductions to compiler for beginners.

Please also vote down answers where the answerer says only "read the Dragon Book", without a qualifying remark.

Modern Compiler Implementation in Java Engineering a Compiler


The Dragon Book is a very thorough book, with detailed discussion of theory (especially about parsing). However, this level of detail and theory does not make it a good introductory book. In contrast, the books above present very clearly how to build a compiler, avoiding theory where it is not useful. This makes them superior recommendations for beginners.

The Dragon Book is best suggested for intermediate compiler authors, though they are likely to know of it already.

Partial list of questions so answered

closed as off-topic by ᔕᖺᘎᕊ, Wrzlprmft, James, nicael, Infinite Recursion Jun 28 '15 at 14:37



  • 4
    -1 even though you have one of the cutest avatars ever. I suggest you take it upon yourself to educate where education is needed. Every time you want to talk about the Dragon Book, include a link to this question. – belgariontheking Oct 14 '09 at 14:50
  • 8
    I just upvoted every one of them. Now you need 5 more downvotes just to counteract. Have fun. – GEOCHET Oct 14 '09 at 14:51
  • 6
    This Dragon Book sounds good. What chapter do you suggest to start on? – random Oct 14 '09 at 14:53
  • 2
    belgariontheking: I've tried. It gets tiring. I thought I'd try and enlist others in the good fight, but it appears they disagree. – Paul Biggar Oct 14 '09 at 14:53
  • 12
    I want to learn to be a pastry chef. What chapter of the Dragon Book should I start on? – cletus Oct 14 '09 at 14:55
  • 1
    Up and down votes are your best friend in this situation. Vote and explain your reasoning. Your opinion is just one of many. – Troggy Oct 14 '09 at 14:55
  • 3
    @Troggy: Shouldn't you be taking more offense to the OPs disparaging remarks about dragons? – gnostradamus Oct 14 '09 at 15:00
  • 2
    @Rob: Its a difficult book to learn from, especially compared to the much clearer alternatives I offered. – Paul Biggar Oct 14 '09 at 15:02
  • 3
    @Gnovice: Good point. WHAT DO YOU HAVE AGAINST DRAGONS?!? – Troggy Oct 14 '09 at 15:02
  • 1
    @Paul: Perhaps it is difficult for you. – GEOCHET Oct 14 '09 at 15:04
  • 2
    @Rich B: Not really. But it was when I was learning compilers. Fortunately, I had access to better books. Now a days I glance at 4 or 5 books to find the clearest explanation on the topic, and the dragon book never has it. – Paul Biggar Oct 14 '09 at 15:06
  • 4
    @Rob: if you want to learn the theory, its not bad. None of the questions I cited (hmmm, maybe one actually) was interested in theory. However, its not a very good book for teaching college courses either. I've asked quite a lot of compiler researchers what book they would use, and no-one I've spoken to would use the dragon book (at least, not as the primary textbook). – Paul Biggar Oct 14 '09 at 15:10
  • 3
    @Paul: Use that comment "if you want to learn the theory, its not bad. None of the ..." with your downvotes of the dragon book. That is a good explanation of a dragon book downvote. – Troggy Oct 14 '09 at 15:22
  • 11
    @Lance Roberts: Explain to me how [insert industry standard book on a subject] is incorrect information just because some people may not think it is the best for beginners? – TheTXI Oct 14 '09 at 16:46
  • 3
    Oh, and I agree with you that "Read the dragon book" is rotten advice for the compiler newbie, but all you can do is offer up a better introductory option. And vote for them where they already exist. – dmckee Oct 15 '09 at 0:55

The problem here is answerers blindly referring users to "the dragon book" not having read it themselves.

The full solution to the problem is don't recommend books you haven't read just because you saw someone else recommend them 20 years ago. Let someone who actually knows the field and has read the books recommend something instead. This is a classic example of people jumping to get rep by just pasting in a standard answer that they actually know nothing about.

If you have read "the dragon book" and you like it, of course you should be free to recommend it if you want to, but if you haven't read it, just leave the question for someone else to answer.

  • 7
    This answer reminds me of a book I haven't read... – Hilarious Comedy Pesto Oct 14 '09 at 14:50
  • 6
    How do you know if answerers have read it or not? Seriously. – David Thornley Oct 14 '09 at 14:52
  • 1
    I cannot imagine why this answer was downvoted? – Paul Biggar Oct 14 '09 at 14:52
  • 1
    @David: Hypothetical evaluation based on some assumptions about behaviour. I don't know, I'm just guessing. I'm also not saying all answerers haven't, just that some will inevitably post the recommendation in the hope of getting it in first and gaining the up votes from others who possibly have read it and are up voting the answer. Thus my opinion is only recommend what you can recommend personally (or include a disclaimer and source). – Simon P Stevens Oct 14 '09 at 14:56
  • 3
    @Paul: Because someone clicked the down arrow I would imagine. – GEOCHET Oct 14 '09 at 14:59
  • 2
    @Rich B: Isn't that how, not why? – Simon P Stevens Oct 14 '09 at 15:06
  • @Simon: I would say it is both. – GEOCHET Oct 14 '09 at 15:15

People are free to suggest whatever they feel is the best, just as you are free to comment on how wrong they may be and you are even allowed to downvote them.

I don't see why you should be making a post on meta about this to try and change people's minds.

Make your own suggestions and if you don't agree with others, vote them down and maybe people will start to see your way. There is nothing wrong with what they are doing in making their suggestions for the book.

  • 5
    +1 for "I don't see why you should be making a post on meta about this to try and change people's minds. " – Troggy Oct 14 '09 at 14:52
  • 1
    I've learned it's best to try and not dig into the motives or reasoning behind a user when they make an answer. If they don't give you a section number, maybe that's because they don't have the book sitting in their lap at that exact moment or they just don't care to draw you (or anyone else) a map. And even if they do say it reflexively, there is nothing wrong with that. If there IS something wrong with it, then downvote them and make your own suggestion. – TheTXI Oct 14 '09 at 14:53
  • 4
    There are a ton of questions answered badly. Surely meta is exactly the place to address the issue. – Paul Biggar Oct 14 '09 at 14:55
  • 4
    If you want to keep posting questions that basically say "people aren't answering questions the way I want them to answer" I am going to keep downvoting them. – TheTXI Oct 14 '09 at 14:58
  • 2
    @Paul: Meta was not intended as your personal soapbox. – GEOCHET Oct 14 '09 at 14:58
  • 2
    @TheTXI: what else is meta for? – Paul Biggar Oct 14 '09 at 15:04
  • 5
    Um...bug reports, feature requests, FAQs, support, and discussion are the five main uses. This could classify as discussion, but soapbox rants about people not answering the way YOU want them to answer strikes me as incredibly self-righteous. If all of these users feel that the Dragon Book (a standard text for decades) is the best choice, I would take their opinion a lot more highly than someone who comes on meta and flies off the handle about how the Dragon Book is no longer a good source, when the only evidence presented is his own opinion. – TheTXI Oct 14 '09 at 15:10
  • 3
    @TheTXI: Newbies are being consistently guided in a poor direction. Raising such issues is surely part of meta's scope. – Paul Biggar Oct 14 '09 at 15:18
  • 2
    @Paul: In your opinion. I wish you could understand the difference here. – GEOCHET Oct 14 '09 at 15:23
  • 1
    @Rich B: "That's just your opinion" has never been a good response to argued, technical opinions. Of course, that's just my opinion. – Paul Biggar Oct 14 '09 at 15:27
  • 1
    @Paul Biggar: Newbies are being consistently guided in a poor direction, according to you. So far there seems to be a lot of favor towards the Dragon Book, and I (as a compiler newbie) would be more likely to take the word of someone who suggests it followed by a bunch of community upvotes than I would from a guy complaining about how everyone else is answering. If you were to post on a question saying that the Dragon Book isn't that good and you give other suggestions, perhaps I would listen to you. I would definitely take your opinion more seriously than I would if I were reading this rant. – TheTXI Oct 14 '09 at 15:28
  • 2
    @TheTXI: I've tried to make it less ranty (just now). If you ever decide to learn about compilers, I hope you do read the Dragon Book. – Paul Biggar Oct 14 '09 at 15:36
  • 2
    @TheTXI, ask every people suggesting the dragon book if they teach or do research in compilers. The dragon book is the emblematic book on compiler that's the only reason everyone cites it. – tonfa Oct 14 '09 at 15:41
  • 7
    Then I am back to the original point to begin with: SUGGEST SOMETHING DIFFERENT AND DOWNVOTE. You are in charge of your own opinion and you can express it however you want, but you are not in control of what other people can and will suggest. If someone sees that an answer for the Dragon Book gets all the upvotes and they try it and they are disappointed, well that's when you go down the list of other answers, where yours will be waiting. If it helps and you get the checkmark, congratulations, you may just start turning the tide of public opinion. This is not the way to go about it. – TheTXI Oct 14 '09 at 15:52
  • 2
    @Lance Roberts: Recommending one book over another is NOT a wrong answer. It's a difference of opinions. You can't sit there and honestly say that if someone says "I need help about compilers" then someone recommending Book A on compilers is wrong and someone else recommending Book B on compilers is correct. – TheTXI Oct 14 '09 at 16:45

While the Dragon Book is certainly very thorough, it is not very clear, or easy to learn from. That was probably acceptable in 1986, or whenever you read it way back when, but there are actual good compiler books now, especially for beginners.

People can recommend what they want to recommend. If you don't like an answer, if you think it doesn't answer the question or offer what the asker needs - then downvote it. Simple.


This is completely bizarre that we're starting a backroom discussion to pre-determine what the correct answer should or should not be to a particular class of questions.

This is a (hopefully) ill-fated attempt at a cyber-version of the good ol' boys network.

  • I could not agree more. The post is 100% inappropriate and should be removed. – user207421 Dec 7 '17 at 4:22

I kinda get your point, it's like people recommending the Knuth books to someone wanting to get started with programming. Whilst iconic, the Knuth books are not the best place to kick things off for a beginner.

I'd probably recommend The Dragon Book as an option for the novice once he or she has acquired the basics from more up-to-date and accessible texts.


David, Let's assume you've read all the books you are talking about. (I happen to have read none of them, so won't comment on the suitability of each).

Why don't you write a review of each, (as one article), compare and contrast and draw a conclusion as to which is better for certain types of readers.

Then on each question where you disagree with the recommendation of "the dragon book" post a summary of your conclusions that are relevant to the particular question, (a link to the full review if it's too long to fit nicely in the answer), and your recommendation of your preferred book. Users tend to like answers that have taken the time to explain in detail the pros and cons of both sides. Others will see your review, and perhaps if it is good and people agree they will also link to it. Perhaps others interested in the area will take time to read both books and draw their own conclusions, and up vote your answer.

Ultimately then you have worked towards promotion of the best outcome - that of full disclosure of available information along with community agreement on the most suitable answer.



I saw this same kind of thing with an Operating Systems class in my undergrad degree. The book assigned by the professor was one of the more popular OS books. Very dry, to the point, and was not aimed at beginners. It was still a great book though and an excellent class choice. It was not an easy book for people to start with, but it was still a great resource.

That doesn't make it a bad recommendation in any way though. Lots of CS books tend to not be beginner friendly. They are advanced topics and require a vast array of knowledge to comprehend and understand well.

  • For some reason, OS was required for my BS in Burnination. – Troggy Oct 14 '09 at 15:15
  • 3
    The problem with dragon book is not that it is dry, it's that even the second edition isn't modern... How can you spend a couple hundred pages on optimizations and only dedicate 2 pages on SSA!! (and every optim. they discuss are much simpler under SSA). – tonfa Oct 14 '09 at 15:35

Not the answer you're looking for? Browse other questions tagged .