Code Reuse with Language Oriented Programming
There is a gap between our ability to reuse high-level concepts in software design and our ability to reuse the code implementing them. Language Oriented Programming (LOP) is a software development paradigm that aims to close this gap, through extensive use of Domain Specific Languages (DSLs). With LOP, the high-level reusable concepts become reusable DSL constructs, and their translation into code level concepts is done in the DSL implementation. Particular products are implemented using DSL code, thus reusing only high-level concepts. In this paper we provide a comparison between two implementation approaches for LOP: (a),using external DSLs with a projectional language workbench (MPS); and (b),using internal DSLs with an LOP language (Cedalion). To demonstrate how reuse is achieved in each approach, we present a small case study, where LOP is used to build a Software Product Line (SPL) of calculator software.
Unable to display preview. Download preview PDF.
- 1.Dmitriev, S.: Language oriented programming: The next programming paradigm. JetBrains on Board 1(2) (2004)Google Scholar
- 2.Fowler, M.: Language workbenches: The killer-app for domain specific languages (2005), http://www.martinfowler.com/articles/languageWorkbench.html
- 3.Hudak, P.: Building domain-specific embedded languages. ACM Computing Surveys (CSUR) 28(4es) (1996)Google Scholar
- 4.Johnson, S.C.: Yacc: Yet another compiler-compiler. Technical Report CSTR32, Bell Laboratories, Murray Hill, NJ (1975)Google Scholar
- 5.Lorenz, D.H., Rosenan, B.: Cedalion: A language-oriented programming language. In: IBM Programming Languages and Development Environments Seminar, Haifa, Israel (April 2010)Google Scholar
- 7.Rosenan, B.: Designing language-oriented programming languages. In: Companion to the ACM International Conference on Systems, Programming Languages, and Applications: Software for Humanity (SPLASH 2010), pp. 207–208. ACM, Reno (2010)Google Scholar
- 10.Völter, M., Visser, E., Kelly, S., Hulshout, A., Warmer, J., Molina, P.J., Merkle, B., Thoms, K.: Language workbench competition (2011), http://www.languageworkbenches.net
- 11.Ward, M.P.: Language-oriented programming. Software-Concepts and Tools 15(4), 147–161 (1994)Google Scholar