  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.
