Recent Activities and Projects

Past Activities

Project Embedded Microsystems

We participated in the Graduate College Embedded Microsystems

Domain Specific Languages (DSL)

A DSL is a language which is tailored to a specific class of problems and application domains. Application experts can express their problems in a DSL without programming in the usual sense of the word. By exploting domain-specific knowledge, a DSL compiler can generate better code than a compiler for a general purpose programming languages, at a fraction of the programming effort.

Functional Programming Languages

Functional programming languages are well suited as host languages for so-called open or embedded DSLs, which may also be considered libraries for traditional languages. This approach does not keep the domain expert from programming, but, on the positive side, the open DSL inherits all means of abstractions as well as the development tools of the host language at zero effort.

There are two projects using this approach with the host language Haskell. The project WASH developed a DSL for creating interactive web pages and to manipulate XML-data. The project HaGen creates a DSL for metaprogramming.

Partial Evaluation

Partial evaluation (program specialization) is a general program optimization technique. It is also applicable to implementing so-called closed DSLs. Starting from an optimizing interpreter for a DSL, a partial evaluator can create an optimizing compiler for the DSL at the push of a button. Our program specializer PGG implements such a powertool for the programming language Scheme. The system comes with many applications and is continually extended and improved.

In the MLOPE project, we developed a partial evaluator for a large fragment of the Standard-ML language. We are also looking at the theoretical foundations of program generation and metaprogramming for object oriented languages.