Strumenta Introduction

February 26, 2020

Strumenta is a new community for language engineers; a great initiative by Federico Tomassetti. Here’s the text of the post I wrote to introduce myself.


Hi, I’m Eelco Visser

I’m a professor in computer science at Delft University of Technology (TU Delft for short) in The Netherlands.

At TU Delft I chair the Programming Languages Research Group (http://pl.ewi.tudelft.nl/). We aim at improving the effectiveness and reliability of programming languages and systems. Effectiveness such that programmers can express intent at the right level of abstraction and get actionable feedback that is relevant and timely. Reliability such that programmers can trust the execution and analysis of programs.

The PIs in the group represent a variety of perspectives on programming languages, but all of us have in common that we are interested in tools to make the work of (meta) programmers easier, including such diverse topics as language workbenches, dependently typed programming languages, and program logics for concurrent separation logic.

Personally, I lead the research team that developes the Spoofax language workbench (http://www.metaborg.org/en/latest/). Like any language workbench, Spoofax aims to support language designers/implementers in defining (domain-specific) programming languages and deriving tools from those definitions.

My research interest is to get a fundamental understanding of the various aspects that make up programming languages, and provide high-level declarative meta-languages for these aspects from which a wide range of tooling can be derived. Examples of aspects that we have developed meta-languages for are:

  • Syntax definition with SDF3
  • Static semantics with Statix
  • Transformation with Stratego

In addition to working on the foundation of these and other aspects of language engineering, I am interested in making usable tools on top of these foundations, and then applying these tools in the development of actual languages. Of course, Spoofax is bootstrapped and we apply our meta-languages in the development of meta-languages. But Spoofax is also applied in the development of non-meta (domain-specific) languages. For example, we created the WebDSL web programming, which is used among others for a web application for programming education and for https://conf.researchr.org.

I have been working in this field for a long time (my publication list https://eelcovisser.org/publications/ is a reflection of my journey in language engineering). But I finally feel that I’m getting (starting to get) a good understanding of language engineering and that this is being reflected in the new generation of Spoofax that we are working on.

I love to talk and write about these things, but let me not go into full detail in this introduction :-) The website above provides the documentation about Spoofax (can always be improved) and my personal website (https://eelcovisser.org/) provides publications, posters, and talks about the research we do.

It is great that there is this new community that bridges academia and industry.