Traditional programming practice is to use an off-the-shelf general purpose programming languages such as Java and C++ to implement solutions. Language Oriented Programming (LOP) involves the intermediate step of defining Domain Specific Languages (DSLs) which are then used to implement the solution. As the name suggests, a DSL has language constructs that are orientated towards a specific problem space. A DSL can be seen as any language that is not general purpose - this may be domain specific as the acronym suggests, but may instead be technology specific. An example of a true domain specific language is one that supports the programming of financial derivative rules and would contain constructs that are particular to the derivative market such as forwards, options and swaps. An example of a technology specific language is one that is geared towards developing GUIs and would contain constructs relating to widgets and event handling among others.
Programs written in DSLs (both domain specific and technology specific) only contain details relevant to the domain or technology in question - everything else
instead contained in the language itself. The absence of irrelevant
enables practitioners to more accurately and more quickly translate
conceptual solution into a program. Because DSLs only contain
detail, they are effectively limit what can be expressed and therefore
the user. DSLs are also domain/technology aware and know what is and is not
permitted, so the financial derivatives language, for example, make it
certain contracts to be expressed simply because they do not
The history of programming languages evolution has involved moving away from how the machine represents programs (i.e. assembler) to how humans conceptualize them. Contemporary languages like Java are perhaps as abstract from the machine as is possible while still remaining general purpose. The next logical step in this progression are DSLs which by their nature are going to have some level of specifity to the application being constructed. LOP is concerned with giving users the mechanism to define DSLs or to extend existing ones. LOP is enabled by XMF because it is a language for defining languages. It contains an array of mechanisms which support the process of defining and using industrial strength DSLs.
Model Driven Architecture (MDA)
The Model Driven Architecture (MDA) is an OMG initiative which abstracts from implementation technology by designing systems using modeling languages such as UML. The principle is that a system can be targeted to multiple implementation platforms. The challenge with translating UML to implementation technology is akin to that of translating programming languages, namely that their general purpose nature means that the languages are large and any translation will also be necessarily large. DSLs are a more appropriate platform for MDA than general purpose languages/notations, since what can be expressed in a DSL is by comparison much smaller, making it realistic to define translations to multiple technology targets.
For details on a practical approach to Language Oriented Programming, you can download the book Applied Metamodelling : A Foundation For Language Driven Development.
Language Driven Development
Medium and large scale software development
lots of different domain expertise to engineer. A full financial
derivative system may involve languages that take into account
the specification of the derivatives, but the GUI, data storage
rules about security and many others. These types of systems need
specified by a number of (potentially off the shelf) DSLs each
capturing a unique facet of the
which collectively specify the complete
Language Driven Development (LDD) is then the process by which LOP
are used to engineer medium and large development projects. When
used on this scale the advantages and costs savings can be
XMF is designed to support
multiple DSLs used together in this way,
either be woven together so DSLs are embedded within each other, or
DSLs can be
separated into modules so that different domain concerns are
each other but are semantic related.
In the coming months Ceteva will produce more materials detailing an approach to LDD and how XMF can be used to support this approach.