Compilers are one of the most challenging and exciting work.
Compilers are always very exciting field, it's a high skill and highly paid job in US. It's very difficult for companies to
find good Compiler Engineers. I have seen lot of students who want to work in system software field specially compilers. But
the million dollar question is how to start working in compilers and become expert.
I am here to give some good ideas to how to go through in steps to become compiler expert. It takes years but may take less
time if you are focused and know how to go in steps. So it can be useful for people who are enthusiastic and want to take
challenge with working in compiler field.
One important thing I would like to tell is that Compiler, Interpreter, Linker, Loader, Assembler, Debugger, Archiver,
Processors are very much related and also fair knowledge of OS is needed. Fortunately I got exposure in most of them as I was
mostly working in system software field.
You need to devote some amount of time every day to make your knowledge rich in these topics.
Good knowledge of Data Structures and Algorithms. This is very important, after working on compilers I see most of the data
structures and algorithms concepts are implemented in compilers and without knowing you will be zero on understanding and
Good knowledge of different processors (architecture and instructions). You will be surprised to know that compiler experts
generally have good knowledge of processor. Famous compiler expert Steven Muchnick designed processors PA-RISC at Hewlett-Packard
and SPARC at Sun Microsystems.
You have to go at least first four in steps.
Compilers : Principles, Techniques and Tools by Alfred V Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ulman is considered
to be the standard authority on compiler basics, and makes a good primer for the techniques mentioned
Lex & Yacc by John Levine, Tony Mason, Doug Brown Oreilly Publication
Modern Compiler Implemetation in C by Andrew W. Appel, Maia Ginsburg Cambridge University Press.
Advanced Compiler Design and Implementation by Steven Muchnick. One of the widely used text book for advanced compiler
Engineering a Compiler by Keith D. Cooper and Linda Torczon Morgan Kaufmann Publication. This is a very practical compiler
Understanding and Writing Compilers by Richard Bornat is an unusually helpful book, being one of the few that adequately
explains the recursive generation of machine instructions from a parse tree. The authors experience from the early days of
mainframes and minicomputers, provides useful insights that more recent books often fail to convey.
Compiler Construction by Niklaus Wirth Addison Wesley. Step-by-step guide to using recursive descent parser. Describes a
compiler for Oberon-0, a subset of the author's programming language, Oberon.
Programming Language Pragmatics by Michael Scott Morgan Kaufmann Publication. This book offers a broad and in depth introduction
to compilation techniques and programming languages, illustrated with many examples.
Optimizing Compilers for Modern Architectures by Randy Allen and Ken Kennedy Morgan Kaufman Publishers. A modern textbook
that focuses on optimizations including parallelization and memory hierarchy optimizations.
You have to keep on looking for good research paper to enhance your knowledge. Here are some papers I found interesting-
Padua, David, and Wolfe, Michael : Advanced Compiler Optimizations for Supercomputers
Bacon David : Compiler Transformations for High-Performance Computing
Allen, Randy, Kennedy, Ken : Automatic Translation of FORTRON Programs to Vector Form
Lee, Corinna : Code Optimizers and Register Organizations for Vector Architectures
Also you may find more at bibliography of different books and in ACM Journal.
Now the last and most important point, it will be great if you can get good guidance. I got mostly freshers in my team but
provided good guidance to them so that they can learn, enhance their knowledge and work well on multiple compilers and happy to
see that they are all doing great in industry.
Suresh Kumar Srivastava is founder of online learning site coursegalaxy.com and author of popular books "C In Depth",
"Data Structures Through C In Depth". He has 18+ years experience in industry and worked on architecture and design of
multiple products. You can explore his courses here.
CourseGalaxy is focused on transformation of Engineering graduate to Software Engineer to fill the gap
between education and industry and provide the training on specific problems of industry to enhance the skills
of Engineers in industry to do their job appropriately.