Programming Languages

Welcome to the Programming Languages (PL) research group of the Johannes Gutenberg University Mainz, led by Sebastian Erdweg.

The PL team develops programming languages and programming tools that help developers to tackle the inherent complexity of software:
 application intent, security, performance, safety, and correctness. Our key research topics are domain-specific languages, logic programming, static analysis, and incremental computing.


(Left to right: Runqing Xu, André Pacak, Armand Lego, David Klopp, Prashant Kumar, Sebastian Erdweg, Stefan Marx. Missing: Katharina Brandl)

Programming languages are arguably the most important tool for developing software. The goal of the Programming Languages research group is to support developers in creating and maintaining reliable and efficient software systems. To this end, we research novel programming languages, programming tools, and programming methods. The group particularly focusses on software-development approaches based on linguistic abstractions and domain-specific languages (DSLs). We are both concerned with how such abstractions and languages can be best designed as well as how they can be realized effectively. We complement this research with investigating novel methods in static analysis and logic programming, with which bugs and optimization potential can be discovered during compilation. We study how sound static analyses can be constructed systematically and how to execute them incrementally in Datalog.

Incremental computing is a focus area of the Programming Languages research group, not least due to the ERC project AutoInc. Incremental computations react to input changes rather than recomputing their result from scratch, which is known to deliver asymptotic speedups in theory and order-of-magnitude speedups in practice. However, current approaches to incrementality have limited applicability: They either require expert knowledge, or only support specialized domains (e.g. database queries), or only yield modest speedups. The goal of our research is to develop a methodology for automatically incrementalizing computations and significantly improving their time and energy efficiency.