Compiler construction (see also my page with the collection of links) stopped to be a black art approximately after publishing of famous David Gries' book. Now it's a pretty established field but the truth is that there are few good books on the topic. Widely praised Compilers Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman is in my opinion a weak book that stresses too much syntax parsing and more obscures then enlighten the design of compiler. In other words the Dragon Book is way overhyped. Itis confusing and a complete nightmare to understand, especially for students. It actually kills interest to compiler writing instead of enhancing it. the authors have penchant to use useless formalisms ("art for the sake of the art"). It have some value for instructors but almost none for students.
А что он рекомендует для разработки трансляторов?
One of the most underestimated books on compliers is probably the first volume of The Art Of Computer Programming, the book that should be on the shelf of any complier writer. Algorithms described in this book, especially coroutines and those related to the trees, as well as MIX assembler are useful examples that any compiler writer can use. Generally a book with a complete code of a simple compiler is a good start as theoretical methods exposed in books like Compilers Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman at the beginning looks incomprehensible and at end are not that practical. Paradoxically only after a while own compiler or interpreter one starts to understand how primitive thinking all those "theorists" have about this complex subject and how far detached they are from reality in their writings. In this sense, for a practitioner of the field, sound skepticism toward those "pseudo theories" make perfect sense :-).
At the same time compliers are very interesting, fascinating area, and on abstract level the methods used for their writing are essentially higher level programming paradigm which can be called language-oriented programming