He already mentioned the Dragon Book which is a must.
I also understand that Appel's Modern Compiler Implementation series is popular but I have never read them myself. The C version looked a bit thin compared to the Dragon Book (but some may argue that one has too much detail).
That's about all the books I know on compilers. If you're interested in compilers, I would also recommend that you contact your local university or college. Many univerities work with tech companies to offer some form of training.
A book that is not really about compilers but that I have found really useful is the GOF book on Design Patterns. I cannot live without Visitor(331).
If you are interested in Java™ programming language compilers or the like, the puzzlers book by Joshua Bloch and Neal Gafter has a number of interesting comments for language designers.
I like books on general software engineering best practices and can especially recommend:
Finally, don't forget to read the mirror paper by Gilad Bracha and David Ungar.
Hmm, if it's C-like compilers they're interested in, Fraser & Hanson's "lcc book" is a dense, thorough explanation of one full ANSI implementation.
As for general programming, nothing helped me more than The Elements of Programming Style.
This is a side issue: If you "cannot live without" Visitor from GOF, then why not add Multiple Dispatch to Java? This is an alternative noted by GOF in the introduction (or preface - I forget which).
I should own up to liking patterns and Multiple Dispatch - I have even written an extended Java compiler that implements patterns and one of them is Multiple Dispatch:
http://pec.dev.java.net/nonav/compile/javadoc/pec/compile/multipledispatch/package-summary.html#package_description
Posted by Howard Lovatt on September 03, 2006 at 08:08 PM PDT #