I agree that it is the best book on compilers for beginners. I think that parsing using a recursive descent parser for LL grammars with attributed grammars teaches you the most basic and important things (such that one is able to design and parse a nice DSL.)
Having said that the book's major draw back is that is "soft" on the major topics of today: optimizations. The book is very frontend centered and mentions some possible optimizations in the final chapter--no implementations given. Hence, while I always recommend this book as the first go-to book, interested compiler programmers have to find supplemental material elsewhere. (I love M. Scott's "Programming Language Pragmatics", respect Grune, Bal, Jacobs and Langendoen's "Modern Compiler Design", consult Muchnick's "Advanced Compiler Design and Implementation".)
Topic-wise, supplemental material to Wirth's CC-book, I suggest: LR-parsing (yacc) and in-depth study of instruction selection ([i]burg) and register-allocation (graph coloring) for important backend optimizations. I think that gives a firm understanding of compilers, suitable for further study (such as Muchnick "Advanced Compiler Design and Implemetation" 1997 or Morgan "Building an Optimizing Compiler" 1998.)
Having said that the book's major draw back is that is "soft" on the major topics of today: optimizations. The book is very frontend centered and mentions some possible optimizations in the final chapter--no implementations given. Hence, while I always recommend this book as the first go-to book, interested compiler programmers have to find supplemental material elsewhere. (I love M. Scott's "Programming Language Pragmatics", respect Grune, Bal, Jacobs and Langendoen's "Modern Compiler Design", consult Muchnick's "Advanced Compiler Design and Implementation".)
Topic-wise, supplemental material to Wirth's CC-book, I suggest: LR-parsing (yacc) and in-depth study of instruction selection ([i]burg) and register-allocation (graph coloring) for important backend optimizations. I think that gives a firm understanding of compilers, suitable for further study (such as Muchnick "Advanced Compiler Design and Implemetation" 1997 or Morgan "Building an Optimizing Compiler" 1998.)