Ask HN: Recommend an introductory course on compilers

66 points by rochak ↗ HN
I am doing Bachelors in Information Technology and to my bad luck, my curriculum does not have a course on compilers. I looked online and found one on Coursera only to realize that it has now been removed. Could you guys recommend a good compilers course or book which gives a good introduction to the topic along with a guided practical implementation? I would be much obliged.

22 comments

[ 2.9 ms ] story [ 28.4 ms ] thread
Not a full course (apologies in advance) but I have heard a lot of people get a good introduction from:

http://compilers.iecc.com/crenshaw/

It was written with Turbo Pascal in mind but many have read the text and transcribed the instructions to a language of their choosing. Should be at least a good introduction to compilers.

No need for any apologies. I am looking for anything that can introduce me to the topic along with practical knowledge
Very good question. I am interested in reading the suggestions as well. Also, a specific book question: is Engineering a Compiler by Cooper & Torczon any good?
The compiler course I took was taught by Keith and Linda. Keith is certainly one of the best educators in the department, and, in my opinion, their book is also of high pedagogical value.

For me, its shining moments are the explanations of abstruse algorithms. The text takes the time to work through interesting example runs of the algorithms that illustrate all the facets of the computation. This was critical to my understanding of how the algorithms work, why they need to work that way, and how competing algorithms differ.

It's also not the kind of book that needs to be read cover to cover. We went through the chapters out of order. If you can find matching lecture slides, that can be a great guide or survey of the material.

This was the official text when I took the class in 2004 with one of their disciples (Dr. Liebrock) at New Mexico Tech. But the exercises were actually taken from the book Modern Compiler Design by Andrew Appel. Officially, the C version of the book.

I got almost nothing out of the book Engineering a Compiler.

Aside from that the class was amazing. Maybe the next edition has become excellent? I knew people who took the class using the Dragon book and found that book unhelpful too.

I'm currently reading Wirth's book and really enjoying it though.

James Kyle (who created Babel) wrote a 'Super Tiny Compiler' that's a really great (low barrier to entry) place to start.

The inline docs are super well written, clear and extensive. It's also implemented in JabaScript.

It's an amazing learning tool and I really loved reading it!

https://github.com/thejameskyle/the-super-tiny-compiler

I thought it was that young aussie guy, Sabastian that created babel? It was initially named 6to5 to my best memory, and later renamed Babel.
You are correct.
MIT has a course called 6.035 which might be of use. Unfortunately the ocw page doesn't have lecture videos, but there seem to be some on YouTube if you search for it and the notes on ocw could help. Good luck!

https://ocw.mit.edu/courses/electrical-engineering-and-compu...

Edit: here's some videos https://ocw.mit.edu/courses/electrical-engineering-and-compu...

Also maybe check out the recommended text: Modern Compiler Implementation in Java (Tiger Book)

And a few more resources here: http://cons.mit.edu/sp14/references.html

Allen Holub's book "Compiler Design in C" is excellent. The book is out of print, but you can get it as a free PDF from Holub's site: http://www.holub.com/software/compiler.design.in.c.html

Over the course of the book you implement compiler construction tools (a LEX clone and two YACC clones) and then use those to build a C compiler.

You should split your study into three parts.

1) Theory of computation (can't recommend a book for this one)

2) Programming language theory (Book: Programming Language Pragmatics)

3) Compiler construction (Book: Engineering a compiler or the Dragon Book)

1) The classic is Introduction to Automata Theory, Languages, and Computation by Hopcroft and Ullman.

Ullman used to have a course on Automata via Coursera but the platform changes have sent it down the memory hole.

http://t3x.org/reload/

A tour through a clean subset of a C compiler, full C source code included. It's not exactly a course, but will introduce all basic parts of compiler construction on the theoretical and practical level: lexing, parsing, code generation, optimization, and runtime support. The complete code from the book is in the public domain: http://t3x.org/subc

For the record: I'm the author.