> Articles > Want To Become Compiler Expert

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.

Compiler Phases

General

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)
    - https://en.wikipedia.org/wiki/Programming_language
    - https://en.wikipedia.org/wiki/Lists_of_programming_languages
    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 implementation.

  • 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.

Books

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 above.

  • 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 courses.

  • Engineering a Compiler by Keith D. Cooper and Linda Torczon Morgan Kaufmann Publication. This is a very practical compiler book.

  • 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.

Research Papers

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.