Project Group: Designing a Library for Model Analyses using the Language Workbench MPS (Meta-Programming System) from JetBrains (makers of IntelliJ)

Overview

Library/API design has a lot to do with choosing the right "look and feel" of the language.  This includes the individual words as well as the flow of the language, describing how to form valid and complete statements.  Let's refer to this as the "concrete syntax" of the library/API (or in general, the domain specific language) to be developed.  

When implementing such a library for a mainstream GPL, say Java or C++, you as a language designer do not typically have that much freedom concerning the concrete syntax (which is basically fixed by the parser for the language).  Although there are notable exceptions including Scala, Haskell, Lisp, and C#, it is still relatively challenging to mix and combine very different styles of concrete syntax in the same editor.  

The language workbench MPS from JetBrains is, in this respect, a true game changer as the environment is not parser-based but rather uses a projective editor that can mix and combine different concrete syntaxes in a very flexible manner.

Check out, e.g., mbeddr to see what is possible with MPS.

Why is this interesting and relevant?  Being able to design your concrete syntax has the potential to enable a productive environment for developing code that is very readable for a certain target audience.  Most programmers would agree that readable code typically means maintainable code (and we spend most of our time debugging, tweaking, and extending). 

In this project group, we'll re-design the model analysis library developed and used in the lecture FMDE, which has been implemented completely in Java and is available on GitHub.  A lot of the elegance and beauty of the constructions are obliterated by the fixed syntax and structure enforced by Java.  A completely separate language is, however, also undesirable as the library is meant to be mixed seamlessly with "normal" Java code.  MPS should be able to open up new and exciting possibilities, including mixing textual, tabular, and visual fragments in the same concrete syntax!

Will I enjoy working in this project group?

  • Yes, if you enjoy programming and love programming languages.
  • Yes, if you like IntelliJ and want to understand the underlying workbench used to develop it (basically an alternative to the Eclipse eco-system).
  • Yes, if you're interested in meta-modelling, model transformations, and model-driven/model-based stuff.
  • Yes, if you think mbeddr is cool.
  • Yes, if you love mathematics (you'll fit perfectly well with other "hackers" in the group).
  • No, if you don't want to learn anything new.
  • No, if you're looking for a least effort project group.

You do not require prior knowledge in either FMDE or model-based software development.  We'll have more than enough time to get up to speed on all required theory and practical knowhow.

Material