A New DSL Textbook in Town!
Abstract
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 [1]. Andrzej Wąsowski and I wrote it to:
• 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);
• 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;
• 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
• provide a large number of exercises (277 in total) for effective learning, like mathematics textbooks do; and
• 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).
DOI 10.1145/3732771.3742707