Want To Become Compiler Expert
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 different programming languages (Tokens, Features, Implementation and the way of working)
Remember I mean only token, grammar and features, not expertise.
- 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.
- Let's Build a Compiler by Jack Crenshaw (https://compilers.iecc.com/crenshaw/)
- 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-
Also you may find more at bibliography of different books and in ACM Journal.
- 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
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 check his other articles.
Data Structures in C
make and Makefile