DSLs are the ultimate abstraction in software engineering. While programming languages have – since the advent of computers – continuously increased their level of abstraction, they are still limited to the domain of computing, with their instances containing many technicalities. Unlike programming languages, DSLs reflect a given application domain, ideally abstracting away anything beyond it. Recognizing their strengths, the programming-language and the software- engineering community introduced many technologies for engineering DSLs. While well- polished widely-used DSLs have existed for a long time (e.g., SQL, regular expressions, HTML), language engineering technologies have made great progress over the last two decades, allowing developers who are not language or compiler experts to create their own DSL – in order to increase the level of automation for their projects. In the keynote, I will report on our decade of experiences from teaching DSL engineering. I will especially present our recent book (see http://dsl.design). Andrzej Wasowski and I wrote it to:
- (i) establish more of an engineering perspective for creating DSLs, teaching the problem-oriented creation of DSLs and different engineering activities including testing and requirements (domain analysis);
- (ii) bring the programming language and software-engineering community together by teaching solutions from both fields – many of which overlap conceptually – and thereby unifying and integrating them;
- (iii) demonstrate how to use a modern functional and object-oriented language, Scala, to engineer internal and external DSLs, while not limiting the presentation to a single programming language
- (iv) provide a large number of exercises (277 in total) for effective learning, like mathematics textbooks do; and
- (v) contribute a large number of examples where DSLs are effective, with a whole chapter on DSLs for creating software platforms (a.k.a. product lines).
Short bio:Thorsten Berger is a Professor in Computer Science at Ruhr University Bochum in Germany. His research focuses on automating software engineering for the next generation of intelligent, autonomous, and variant-rich software systems -- exploring new ways of software creation, analysis, and evolution. Thorsten Berger received the PhD degree in computer science from the University of Leipzig in Germany in 2013, supported by a scholarship from the German National Academic Foundation (Studienstiftung des deutschen Volkes). He was a Postdoctoral Fellow at the University of Waterloo in Canada and the IT University of Copenhagen in Denmark, and then an Associate Professor jointly at Chalmers University of Technology and the University of Gothenburg in Sweden. He received grants from the Swedish Research Council (competitive
early-career grant), the Wallenberg AI, Autonomous Systems and Software Program (WASP), Vinnova Sweden (EU ITEA project), and the European Union (H2020 project). He received a fellowship from the Royal Swedish Academy of Sciences and the Wallenberg Foundation, one of the highest recognitions for researchers in Sweden. He received best-paper awards at the 2015 ACM SIGPLAN conference on MODULARITY and the 2013 European Conference on Software Maintenance and Reengineering (CSMR, now IEEE SANER), as well as a most influential paper award at the VaMoS'20 conference. His service was recognized with distinguished reviewer awards at the tier-one conferences ASE 2018 and ICSE 2020, and the SPLC 2022 conference.