Uni-Logo

Themenbereich

Projekt Embedded Microsystems

Der Arbeitsbereich Programmiersprachen nimmt am Graduiertenkolleg Embedded Microsystems teil.

Domain Specific Languages (DSL)

Eine DSL ist eine Sprache, die auf eine bestimmte Klasse von Problemen und Anwendungen (domains) zugeschnitten ist. In einer DSL können Anwendungsexperten ihre Probleme ausdrücken, ohne im herkömmlichen Sinne zu programmieren. Durch Ausnutzung von Wissen über die spezifische Anwendung, kann ein DSL-Compiler besseren Kode erzeugen als Compiler für gewöhnliche Programmiersprachen, und das mit einem Bruchteil des Programmieraufwands.

In diesem Bereich beteiligen wir uns am DFG Graduiertenkolleg "Embedded Microsystems"

Funktionale Programmiersprachen

Funktionale Programmiersprachen eignen sich gut als Wirtssprachen für sogenannte offene oder eingebettete DSLs, die man auch als Bibliotheken für gewöhnliche Programmiersprachen auffassen kann. Dieses Konzept verhindert nicht, dass der Experte einer Domain programmieren muss, aber die offene DSL erbt alle Abstraktionsmittel und auch die Entwicklungswerkzeuge von der Wirtssprache.

Wir verfolgen diesen Ansatz in zwei Projekten, in denen die Sprache Haskell benutzt wird. Im Projekt WASH entwerfen wir eine DSL um Web-Seiten zu erstellen und XML-Daten zu manipulieren. Im Projekt HaGen erstellen wir eine DSL zur Metaprogrammierung.

Partielle Auswertung

Partielle Auswertung (Programmspezialisierung) ist ein weiterer Ansatz zur Implementierung von sog. geschlossenen DSLs. Aus einem optimierten Interpreter für eine DSL kann ein partieller Auswerter auf Knopfdruck einen optimierenden Compiler für die DSL erstellen. Unser Spezialisierungssystem PGG stellt ein solches Werkzeug für die Programmiersprache Scheme zur Verfügung. Das System hat viele Anwendungen und wird kontinuierlich erweitert und verbessert. Ein aktuelles Anwendungsthema ist das sichere Kompilieren von mobilem Kode (z.B. Applets).

Das MLOPE Projekt entwickelt ein Werkzeug zur partiellen Auswertung für eine kompliziertere Sprache (Standard-ML). Weiterhin untersuchen wir die theoretischen Grundlagen der Programmerzeugung für objektorientierte Sprachen.