Presented by:

Ian Kronquist

from The Open Source Lab

Ian Kronquist is a Senior at Oregon State University studying Computer Science. During the school year he works at the Open Source Lab as a developer. The Summer of 2015 he interned at Puppet Labs on the Puppet Language team. In his spare time he enjoys reading, cooking, and contributing to open source projects.

You probably use a compiler or an interpreter every day, but do you know how they work? The first compilers were designed more than 60 years ago, but writing a compiler is still viewed as a challenge. However, brave knight, do not fear! Equipped with modern tools and theory we can slay the dragon! Along your journey you will likely gain insights about the trade offs made during the design and implementation of your favorite language.

We'll look at the major components of compilers and interpreters and the theory behind their design. First we'll discuss compilers and the difference between the compiler's front end and back end with examples in simple C code. We'll explain the process of lexing, parsing, and machine code generation, and some common analysis techniques and optimizations. Then we'll examine interpreters through the lens of Python and compare and contrast different designs. We'll look at the trade offs made during interpretation and compilation and how they will affect the code you write.

This talk has been presented at Beaver BarCamp in April, 2015 and is being further refined. The source code for the slides can be found at A relatively recent build of the slides can be found at

2015 October 24 - 13:30
50 min
Room 3179
SeaGL 2015

Happening at the same time:

  1. Exhibitor Hall Day Two
  2. Start Time:
    2015 October 24 10:00

    Room 1110

  3. Intro to Making Music with GNU/Linux
  4. Start Time:
    2015 October 24 13:30

    Room 3184

  5. Take Control Of Your Web Browsing!
  6. Start Time:
    2015 October 24 13:30

    Room 3183

  7. Magic, Myth, and the DevOps
  8. Start Time:
    2015 October 24 13:30

    Room 3178