Programming languages are used by a variety of end-users, with different knowledge and experience. These languages usually offer a single user interface or syntax, while it is important to offer different interfaces depending on the programming task and the background of the users. From the language engineering point of view, offering multiple user interfaces for the same language is expensive. Therefore, Ph.D. candidate Mauricio Verano Merino studied how to engineer different end-user interfaces for Domain Specific Languages (DSLs) in a practical way.
Computational notebooks, block-based environments, and projectional editors allow end-users to create programs, but these are generally not available for domain-specific languages (DSLs). Still, many DSLs would benefit from having these environments available for end-users. This is why Mauricio Verano Merino explored three different practical, yet successful, ways to make them available for DSLs.
Four technological spaces
In his thesis, he offers different mechanisms to engineer multiple programming environments for end-users of DSLs. These mechanisms rely heavily on reusing existing language components for existing languages or helping language engineers define these interfaces for new languages.
His studies focused on four technological spaces, namely, grammarware (text-based editors), computational notebooks, block-based environments, and projectional editors. A technological space is a shared context that contains a standard body of knowledge, concepts, and hosts different notations. This results in three different language-parametric interfaces for interacting with DSLs, namely computational notebooks, projectional editors, and block-based editors. These interfaces offer users different user experiences to match their needs in using the DSL of their choice.
In order to build these possibilities for language programmers, Mauricio Verano Merino defined grammarware as a common starting point. From this point on, he and his team envisioned different technological spaces (e.g., computational notebooks space, projectional editors space, or block-based space). Based on this idea, he developed three tools that allow language engineers to generate different interfaces for their DSLs, based on a grammar definition of the language.
Benefit users’ experience
In his thesis, Mauricio Verano Merino shows that it is possible to generate different programming environments from a single language definition, such as a DSL. The tools he developed also decrease the effort required to create these. This might benefit users’ experience towards programming, increase the adoption of domain-specific languages, and reduce engineering efforts.
However, additional research is required to improve the usability of the generated interfaces. This research should also look into ways to make the generation of these interfaces more flexible so that users’ data can be used as part of the generated interfaces.
Conclusion: So above is the Creating tools to open up programming languages to multiple users article. Hopefully with this article you can help you in life, always follow and read our good articles on the website: Ngoinhanho101.com