Compiling functional, logic, and object-oriented languages
This lecture's topic is the compilation of programs from non-imperative languages to code for suitable abstract machines. Three programming paradigms are discussed: functional (Haskell), logic (Prolog) and object-oriented (C++, Java). First, each paradigm is characterised and a language definition is supplied. Then, a suitable abstract machine is defined. Finally, translation schemes are presented which focus on specific features of the languages:
- functional: higher order functions, partial application, closures
- logic: unification, variable binding, backtracking
- object-oriented: hierarchies, inheritance, polymorphism
The discussion is like that about the core of the translation process from the lecture Foundations of compiler construction.
Schedule and Exercises
An up-to-date overview of the schedule and further material can be found in Rubikon. Please create an account (if you don't already have one) und register for this lecture.
Literature
- Wilhelm, R. and Maurer, D.: Übersetzerbau, second edition, Springer-Verlag, 1997, ISBN 3-540-61692-6
- Wilhelm, R. and Seidl, H.: Übersetzerbau: Virtuelle Maschinen, Springer-Verlag, 2007, ISBN: 978-3-540-49596-3
Schedule
Wednesday 08-10 c.t. in O28-1002
Thursday 12-14 c.t. in O28-1002