Lecturer: Neil D. Jones
Interpreters, compilers, program specialisers.
Lecture Notes:
SLIDES: (may be updated)
Day 1. Programs as data objects(2 hours)
Interpreters, Compilers, and Program Specialisers
Specialisation
Interpretation overhead
Self-interpretation of a subset of SCHEME
Partial evaluation: efficient program specialisation
Day 2. Partial Evaluation, Compiling, and Compiler Generation (2 hours)
Specialisation
The Futamura projections
1: a partial evaluator can compile
2: a partial evaluator can generate a compiler
3: a partial evaluator can generate a compiler generator
Speedups from specialisation
How specialisation can be done
The first Futamura projection with UNMIX
The second Futamura projection with UNMIX
Speedups from self-application
Metaprogramming without order-of-magnitude loss of efficiency
Desirable properties of a specialiser
Day 3. The Types Involved in Partial evaluation (2 hours)