I’ve been invited to the track on Unifying Modeling and Programming at this year’s ISoLA conference. The topic is quite obviously near and dear to my heart. So took the opportunity to write the definitive paper about how we use MPS to create DSLs that combine the best of both worlds, modeling and programming. Here is the abstract:

Modeling in general is of course different from programming (think: climate models). However, when we consider the role of models in the context of “model-driven”, i.e., when they are used to automatically construct software, it is much less clear that modeling is different from programming. In this paper, I argue that the two are conceptually indistinguishable, even though in practice they traditionally emphasize different aspects of the (conceptually indistinguishable) common approach. The paper discusses and illustrates language-oriented programming, the approach to {modeling| programming} we have successfully used over the last seven years to build a range of innovative systems in domains such as insurance, healthcare, tax, engineering and consumer electronics. It relies on domain-specific languages, modular language extension, mixed notations, and in particular, the Jetbrains MPS language workbench.

Once again, I was not able to write a short paper, it is 30 pages. But it contains lots of DSL examples, and I really think it captures well what it is we do. Get it here.