DSLs: what, why, how
We discuss here:
– definition of a domain-specific language
– difference between internal and external languages
– command-query APIs
– example (Vaadin-based) language
– advantages of using DSLs
– problems with DSLs
List of sources for images in slides
– https://cdn.visual-paradigm.com/lz/tutorials/sensibledecisiontable_screenshots/02-decision-table-example.png
Remarks
This part of the course is based on M. Fowler’s book Domain-specific languages. Here are the sections of the book you can refer to:
– Section 2.1. Defining Domain-Specific Languages
– Section 4.1. Fluent and Command-Query APIs
– Section 2.2. Why Use a DSL?
– Section 2.3. Problems with DSLs
Why DSLs? (by M. Voelter)
Why DSLs? A Collection of Anecdotes https://t.co/ZoMyii94JL authored by @markusvoelter, reviewed by @dylans
— InfoQ Developers (@InfoQdev) December 10, 2020
Additional materials
- M. Fowler: Introducing domain-specific languages (video)
- W. Taha: Domain-specific languages (plenary talk at International Conference on Computer Engineering & Systems, 2008)
- A. Kleppe: Software Language Engineering (book)
- S. Cook, G. Jones, S. Kent, A. C. Wills: Domain-Specific Development with Visual Studio DSL Tools (book)
- Domain-Specific Languages (Report from Dagstuhl Seminar 15062)
- T. Kosar, et al., Comparing General-Purpose and Domain-Specific Languages: An Empirical Study
- M. J. V. Pereira, et al.: Program Comprehension for Domain-Specific Languages
- L. C. L. Kats, E. Visser, G. Wachsmuth: Pure and Declarative Syntax Definition: Paradise Lost and Regained
- K. Marquette: Intro to DSLs
- Wikipedia page on command-query APIs