Software languages serve as the fundamental means for expressing complex ideas, data, and algorithms in a concise and understandable manner. By developing languages with well-defined syntax and semantics, developers can leverage powerful abstractions and effectively express their intent. General-purpose languages such as Java, C/C++, or Python are at the heart of computer science today. However, to enable the efficient development of large and complex systems, domain-specific languages provide an abstraction that is better tailored to the needs of the domain. Besides the design of concrete software languages, be they general-purpose or domain-specific, it is essential to support developers in using them.
Our research on language engineering intersects with many of our other research projects. Our goals is to improve the development of new software languages, increase their usability, and promote their practical application.
Textbook on Domain-Specific Languages (DSLs)
Domain-specific Languages (DSL) are software languages tailored to a specific problem domain or industry. DSLs provide high-level abstractions and vocabularies that are closely related to the problem, enabling non-technical domain experts to write software or express complex concepts more naturally. This empowers domain experts to contribute directly to software development and fosters collaboration between technical and non-technical stakeholders.
Our textbook on Domain-Specific Languages discusses the engineering and use of DSLs extensively and provides hundreds of exercises [1].
[1] Andrzej Wąsowski and Thorsten Berger: “Domain-Specific Languages: Effective Modeling, Automation, and Reuse”, Springer, 2023, https://doi.org/10.1007/978-3-031-23669-3 (Included in the Springer Link computer science package) Supplementary website with more material: http://dsl.design
Editing Support for Software Languages
Using languages requires proper editing support. We explore challenges and best practices in implementing effective editing support, specifically focused on language servers implementing the Language Server Protocol (LSP). We examined 30 language servers and analyzed their source code to identify common concerns and implementation practices for developing editing support. The goal was to provide insights and guidelines for improving the engineering of editing support, particularly for domain-specific languages that are often developed by smaller organizations or individual developers. We identified seven concerns for which be discuss best practices extracted from the 20 language server implementations in our MODELS 2022 publication [2].
Survey on Challenges and Best Practices in the Development of Editing Support
We conduct this survey as part of an exploratory study to gather insights into currently used practices or strategies related to developing language editing support, specifically focusing on the Language Server Protocol (LSP). The survey aims to understand the challenges faced by developers when creating effective editing support for general-purpose languages as well as domain-specific languages.
The survey will not take more than 12 minutes to complete and includes questions about implementation practices or strategies as well as architecture design and tools used to realize the set goals. Please note that your identity will be kept confidential, and the information provided will only be used for this study.
Survey: https://forms.gle/NAjGYg7en6e3bmF19
[2] Djonathan Barros, Sven Peldszus, Wesley K. G. Assunção, and Thorsten Berger: “Editing support for software languages: implementation practices in language server protocols”, International Conference on Model Driven Engineering Languages and Systems (MODELS), 2022, Pages 232–243, https://doi.org/10.1145/3550355.3552452
Projectional Language Workbenches and Projectional Editing