Paul Klint (CWI Research Fellow, University of Amsterdam, The Netherlands)
DSLs, the good the bad and the ugly
In the modeling and software language engineering communities there are many opposing views and issues for debate:
- Textual versus visual representation?
- Tree versus graph?
- Concrete versus abstract syntax?
- Strong versus weak typing?
- โฆ and the list goes on.
There is, however, a common belief that models, respectively, domain specific languages (DSLs) are a good thing to have and can form the basis for effective system construction and software development. There are indeed successful examples to support this. But could it be that we are ignoring key factors for success and failure? Who is skilled enough to design these models and DSLs? How can they be implemented in industrial environments? How can they be maintained? How are students and users educated? Do the different approaches lead to cross-fertilization in research, practice or both?
I come from approaches to meta-programming that are based on text, general context-free parsing, trees, pattern matching and term rewriting. This is reflected in the tools I work on, today the Rascal meta-programming language and workbench (https://www.rascal-mpl.org) and long before that the ASF+SDF Meta-Environment (http://www.meta-environment.org). This background is unavoidably reflected in the observations and examples to be presented in this invited talk.
After discussing the existential question if, when and why DSLs are a good idea, I will present some examples of and experience with DSLs in commercial applications as well as some more recent ones in domains like binary data parsing, gaming, and programming exercises.
An important concept behind all these examples are transformations, the bread and butter of the meta-programmer: classic transformations in compilers, program refactoring and migration, or bidirectional transformations in IDEs. I will discuss some examples and try to identify open issues.
To conclude the talk I
will present opportunities and challenges that could advance the design,
implementation and wide use of domain specific languages. The good:
promising technology. The bad: missing technology and lack of
cross-fertilization. The ugly: huge knowledge gap between technology
developers and users.