Engineering Language-Parametric End-User Programming Environments for DSLs

Mauricio Verano Merino, Jurgen Vinju, Mark van den Brand, Tijs van der Storm
2022 Zenodo  
Human-computer communication can be achieved through different interfaces such as Graphical User Interfaces (GUIs), Tangible User Interfaces (TUIs), command-line interfaces, and programming languages. In this thesis, we used some of these interfaces; however, we focused on programming languages which are artificial languages consisting of instructions written by humans and executed by computers. In order to create these programs, humans use specialized tools called programming environments that
more » ... offer a set of utilities that ease human-computer communication. When creating programs, users must learn the language's syntax and get acquainted with the programming environment. Unfortunately, programming languages usually offer a single user interface or syntax, which is not ideal considering different types of users with varied backgrounds and expertise will use it. Given the increasing number of people performing any kind of programming activity, it is important to offer different interfaces depending on the programming task and the background of the users. However, from the language engineering point of view, offering multiple user interfaces for the same language is expensive, and if we specifically consider Domain-Specific Languages (DSLs), it is even more expensive given their audience and development teams' size. Therefore, we study how to engineer different user interfaces for DSLs in a practical way. This thesis presents different mechanisms to engineer different language-parametric programming environments for end-users. These mechanisms rely heavily on reusing existing language components for existing languages or helping language engineers define these interfaces for new languages. We mainly studied four technological spaces, namely, Grammarware, Computational Notebooks, Block-based environments, and Projectional editors. We present three different language-parametric interfaces for interacting with DSLs, namely computational notebooks, projectional editors, and block-based editors. These interfaces of [...]
doi:10.5281/zenodo.6302885 fatcat:yr2tjs3rqvef5cftnooxjtbgcu