Lecture 15: Overview of Some Additional Topics
Schedule
Elements of Garbage Collection (GC)
References
- Tiger book, Chapter 13
Call-by-Name and Lazy Evaluation
References
- http://haskell.org Haskell language
- Tiger book, Section 15.7
Languages with Non-Determinism
Non-Determinism and Underspecification
Uses in Testing and Lazy Evaluation Optimization
Warren abstract machine, WAM Book
Tabling transformation, like lazy evaluation, is a form of Memoization
Software Synthesis
Synthesis for Presburger Arithmetic
Correctness and Compilers
- Compcert - a compiler formally proved correct using the Coq interactive proof assistant
- Translation Validation - compiler emits, for each individual program, an independently verifiable certificate that the compilation was correct
Parallelism
- Dragon book has many chapters on parallelism, very active research question
Some Useful Compiler Infrastructures
Your own compiler: the big advantage is that you understand it
Other recent open-source infrastructures:
- Soot Java Optimization Framework - works from Java Bytecodes. Well documented. Scala interfaces exist
- SAFE (Scalable And Flexible Error detection and verification) suitable in particular for type-state checking
- GCC (GNU Compiler Collection Overview) is widely used
- Scala compiler itself from http://www.scala-lang.org/
- Etienne's PHP analysis