Eingang zum Volltext
Lizenz

Bitte beziehen Sie sich beim Zitieren dieses Dokumentes immer auf folgende
URN: urn:nbn:de:kobv:83-opus-22489
URL: http://opus.kobv.de/tuberlin/volltexte/2009/2248/


Grabmüller, Martin

Dynamic Compilation for Functional Programs

Dynamische Kompilierung für funktionale Programme

pdf-Format:
Dokument 1.pdf (753 KB)


Kurzfassung in Englisch

This thesis is about dynamic translation and optimization of
functional programs. The goal of the optimization is increased
run-time efficiency, which is obtained by compiler-directed
elimination of programming language abstractions.

Object-oriented programming languages have been implemented for
several decades using run-time compilation techniques. With the
introduction of the Java programming language and its virtual
machine-based execution model, the practicability of this
implementation method for real-world applications has been proved.
Many aspects of modern programming languages, such as dynamic loading
and linking of code (even across networks), reflection and security
solutions (e.g., sandboxing) can be realized efficiently only by using
dynamic transformation techniques.

The goal of this work is to show that functional programming languages
can be efficiently implemented in a similar way, and that these
languages even offer advantages when compared to more common
object-oriented languages. Efficiency, security and correctness of
programs is easier to ensure in the functional setting.

Towards this goal, we design and develop implementation techniques to
enable dynamic compilation and optimization of functional programming
languages: we describe an intermediate representation for functional
programs (typed dynamic continuation-passing style), which is well
suited for dynamic compilation. Based on this representation, we have
developed an extension for incremental and selective code
generation. The main contribution of this work shows how dynamic
specialization of polymorphic functions and data structures can
increase the run-time efficiency of functional programs considerably.
We present the results of experimental measurements for a prototypical
implementation, which prove that functional programs can efficiently
be dynamically compiled.

Kurzfassung in Deutsch

Diese Arbeit behandelt die dynamische, zur Laufzeit stattfindende
Übersetzung und Optimierung funktionaler Programme. Ziel der
Optimierung ist die erhöhte Laufzeiteffizient der Programme, die durch
die compilergesteuerte Eliminierung von Abstraktionen der
Programmiersprache erreicht wird.

Bei der Implementierung objekt-orientierter Programmiersprachen werden
bereits seit mehreren Jahrzehnten Compiler-Techniken zur Laufzeit
eingesetzt, um objekt-orientierte Programme effizient ausführen zu
können. Spätestens seit der Einführung der Programmiersprache Java
und ihres auf einer abstrakten Maschine basierenden Ausführungsmodells
hat sich die Praktikabilität dieser Implementierungstechnik gezeigt.
Viele Eigenschaften moderner Programmiersprachen konnten erst durch
den Einsatz dynamischer Transformationstechniken effizient realisiert
werden, wie zum Beispiel das dynamische Nachladen von Programmteilen
(auch über Netzwerke), Reflection sowie verschiedene
Sicherheitslösungen (z.B. Sandboxing).

Ziel dieser Arbeit ist zu zeigen, dass rein funktionale
Programmiersprachen auf ähnliche Weise effizient implementiert werden
können, und sogar Vorteile gegenüber den allgemein eingesetzten
objekt-orientierten Sprachen bieten, was die Effizienz, Sicherheit und
Korrektheit von Programmen angeht.

Um dieses Ziel zu erreichen, werden in dieser Arbeit
Implementierungstechniken entworfen bzw. aus bestehenden Lösungen
weiterentwickelt, welche die dynamische Kompilierung und Optimierung
funktionaler Programme erlauben: zum einen präsentieren wir eine
Programmzwischendarstellung (getypte dynamische
Continuation-Passing-Style-Darstellung), welche sich zur dynamischen
Kompilierung und Optimierung eignet. Basierend auf dieser Darstellung
haben wir eine Erweiterung zur verzögerten und selektiven
Codeerzeugung von Programmteilen entwickelt. Der wichtigste Beitrag
dieser Arbeit ist die dynamische Spezialisierung zur Eliminierung
polymorpher Funktionen und Datenstrukturen, welche die Effizienz
funktionaler Programme deutlich steigern kann. Die präsentierten
Ergebnisse experimenteller Messungen eines prototypischen
Ausführungssystems belegen, dass funktionale Programme effizient
dynamisch kompiliert werden können.

Freie Schlagwörter (deutsch): dynamisch , Compiler , funktionale Programmierung , Programmiersprache , Spezialisierung
Freie Schlagwörter (englisch): dynamic , compiler , functional programming , programming language , specialization
Institut: Institut für Softwaretechnik und Theoretische Informatik
Fakultät: Fakultät IV - Elektrotechnik und Informatik
DDC-Sachgruppe: Informatik
Dokumentart: Dissertation
Hauptberichter: Pepper, Peter (Prof. Dr.)
ISBN: 978-3-9810116-6-1
Sprache: Deutsch
Tag der mündlichen Prüfung: 21.04.2009
Erstellungsjahr: 2009
Publikationsdatum: 19.06.2009
Lizenz: Standardlizenz eingeschränkt: Typ CC by-nc-nd - Namensnennung erforderlich | Kommerziell nein | Weiterbearbeitung nein | PoD ja