Markus Voelter , Independent Consultant, Stuttgart
Bernd Kolb , itemis, Stuttgart
Jos Warmer , Open Modeling, Apeldoorn
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MS.2014.103
We describe two innovations in programming languages: modularity and projectional editing. Language modularity refers to the ability to combine independently developed languages without changing their respective definitions. A language is not anymore a fixed quantity, instead it can be extended with domain-specific constructs as needed. Projectional editing refers to a technique of building editors and IDEs that avoid the need for parsers. They support a wide range of tightly integrated notations including textual, symbolic, tabular and graphical. In addition, by avoiding parsers, the well-known limitations of grammar composition are avoided as well. The article illustrates the consequences of these two innovations for the design of (programming) languages with three examples. First, we discuss a set of modular extensions of C for embedded programming that enables efficient code generation and formal analysis. Second, we discuss a language for requirements engineering that flexibly combines structured and unstructured (prose) data. Third, we illustrate a language for defining insurance rules that makes use of mathematical notations. All examples rely on the open source JetBrains MPS language workbench.
Markus Voelter, Bernd Kolb, Jos Warmer, "Projecting a Modular Future", IEEE Software, , no. 1, pp. 1, PrePrints PrePrints, doi:10.1109/MS.2014.103