Project Details
Projekt Print View

Deep Integration of Domain-Specific Languages

Subject Area Theoretical Computer Science
Term from 2012 to 2016
Project identifier Deutsche Forschungsgemeinschaft (DFG) - Project number 223883118
 
Final Report Year 2016

Final Report Abstract

Raising the level of abstraction in computer programming has been the key topic for driving progress in programming technology for many decades: Formulating a program in terms of the physical details of the underlying hardware makes programs brittle and repetitious and hinders the standard “- ilities” of software engineering (reusability, maintainability, readability etc.). Rather, programs should be expressed in terms of the concepts and notions in the domain they operate in. Domain-specific languages and libraries are a common way to get as close as possible to this ideal. This means that the programming concepts that are used to solve problems in a domain consist of the vocabulary that is common and well-defined within that domain. This project has advanced the state of the art in the research domain of domain-specific languages. A domain-specific language doesn’t arise out of thin air, though. The process to develop and implement a domain-specific language must also be modular, efficient and extensible. It should also be supported by domainspecific languages, where the domain in question is the definition of other domain-specific languages. Such language technologies on the meta-level have been the main focus of this project. We have implemented a set of technologies for developing domain-specific languages in an efficient and extensible way. We have designed an extension of Java, called SugarJ, that extends Java with a mechanism for defining syntactic domain-specific extensions in a modular way, in such a way that every source file can choose to use its own set of language extensions. We have also designed several technologies for more efficient embedding of domain-specific languages. “Embedding” means that the language is not devised as a stand-alone language, but it becomes a library for a generalpurpose language that can be used in a similar way as stand-alone language, but with better composability with the general-purpose language and its infrastructure (such as IDEs) and other embedded domain-specific languages. We have designed languages and type systems that improve the modularity and maintainability of embedded domain-specific languages. The results of this project were published in high-profile publication venues of this domain, such as the ACM International Conference on Functional Programming (ICFP), the ACM Conference on Object-Oriented Languages, Systems, and Applications (OOPSLA), and the ACM Conference on Principles of Programming Languages (POPL).

Publications

  • Evolution of software systems with extensible languages and dsls. IEEE Software, 31(5):68–75, 2014
    Sebastian Erdweg, Stefan Fehrenbach, and Klaus Ostermann
    (See online at https://doi.org/10.1109/MS.2014.99)
  • From object algebras to attribute grammars. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems, Languages, Applications (OOP-SLA), pages 377–395. ACM Press, 2014
    Tillmann Rendel, Jonathan Brachthäuser, and Klaus Ostermann
    (See online at https://doi.org/10.1145/2714064.2660237)
  • Automatic refunctionalization to a language with copattern matching: With applications to the expression problem. In Proceedings of International Conference on Functional Programming, pages 269–279. ACM, 2015
    Tillmann Rendel, Julia Trieflinger, and Klaus Ostermann
    (See online at https://doi.org/10.1145/2858949.2784763)
  • F-Omega with equirecursive types for datatype-generic programming. In Proceedings of Symposium on Principles of Programming Languages (POPL 2016), pages 30–43, 2016
    Yufei Cai, Paolo G. Giarrusso, and Klaus Ostermann
    (See online at https://doi.org/10.1145/2914770.2837660)
 
 

Additional Information

Textvergrößerung und Kontrastanpassung