Programming Language Implementation module
Proposal
Some time ago I suggested to some of you that you might be interested in a
new final year option on implementing programming languages. I'm really keen
to see this happen, not least in the hope that it might be a way of interesting
good final year students in research in this field.
My vision for the module is that
- it should be strongly practically based (a large coursework weighting)
- maybe group work?
- we should use an existing structure rather than have to spend a year writing
a compiler and runtime framework
It might include some combination of
- code generation/optimisation
- run-time systems
- virtual machines (i.e. JVM, CLR)
- garbage collection
but no parsing! (it's boring and it's done in the second year module).
Thus we could either focus it on the compiler or the run-time system (e.g. JVMs,
Microsoft's CLI, etc) or both?
Links to interesting courses etc.
Laurie Hendren
- JJOOS system
- Requires Java, SableCC, Jasmin (essentially Java "assembly language"
source code), Unix
- There's probably many nice reasons for looking at this
- Soot Java optimisation framework
- intermediate representations
- Baf: a streamlined representation of bytecode which is simple to
manipulate.
- Jimple: a typed 3-address intermediate representation suitable for
optimization.
- Shimple: an SSA variation of Jimple.
- Grimp: an aggregated version of Jimple suitable for decompilation
and code inspection.
- Soot tutorials
- Eclipse plugin
- Examples
- Lots of places are using it though at what level? Grad?
Tony Hosking, Purdue
Chandra Krintz, UCSB
- JVM, GC and dynamic compilation course
- Lecture
notes
- Requires Java, JikesRVM (either very straightforward or very brittle; but
a big system), hence Linux
Nigel Horspool, U. Victoria
Books
Compiling
- Programming
Language Processors in Java, David Watt, Deryck Brown, Prentice Hall,
2000, £40.03 at Amazon
- Modern
Compiler Implementation in Java, Andrew W. Appel, Jens Palsberg, Cambridge
University Press, 2002, £30.00 at Amazon
- Useful book references
from Andrew Tolmach, Portland State
VMs
- The
Java Virtual Machine Specification, 2nd Edition, Tim Lindholm, Frank Yellin,
1999
- Inside
the Java 2 Virtual Machine, Bill Venners, Osborne McGraw-Hill, 1999
- Programming
for the Java Virtual Machine, Joshua Engel, Addison-Wesley, 1999
- Shared
Source CLI Essentials, David Stutz, Ted Neward, Geoff Shilling, O'Reilly,
2003
- Virtual
Machines, Iain D. Craig, Springer, 2005
- Virtual
Machines, Jim Smith and Ravi Nair, Morgan Kaufman, 2005, $65
- Directed
reading on Java and CLR, JIT compilation from UMass Lowell
Implementations
I've put some on myrtle in ~rej/Teaching/PLI
. In particular, I have
Alex AIken's Cool, and Laurie Hendren's JJOOS system.
Other links