Language-oriented programming
Encyclopedia
Language oriented programming (LOP) is a style of computer
programming in which, rather than solving problems in general-purpose programming language
s, the programmer creates one or more domain-specific languages for the problem first, and solves the problem in those languages. This concept is described in detail in the paper by Martin Ward entitled
Language Oriented Programming published in Software - Concepts and Tools, Vol.15, No.4, pp 147-161, 1994
and in the article by Sergey Dmitriev entitled Language Oriented Programming: The Next Programming Paradigm.
as possible to the user's descriptions, so that the mapping between requirements and implementation is as direct as possible. A measure of the closeness of this isomorphism is the "redundancy" of the language, defined as the number of editing operations needed to implement a stand-alone change in requirements. It is not assumed a-priori what is the best language for implementing the new language. Rather, the developer can choose among options created by analysis of the information flows — what information is acquired, what its structure is, when it is acquired, from whom, and what is done with it.
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
programming in which, rather than solving problems in general-purpose programming language
General-purpose programming language
In computer software a general-purpose programming language is a programming language designed to be used for writing software in a wide variety of application domains...
s, the programmer creates one or more domain-specific languages for the problem first, and solves the problem in those languages. This concept is described in detail in the paper by Martin Ward entitled
Language Oriented Programming published in Software - Concepts and Tools, Vol.15, No.4, pp 147-161, 1994
and in the article by Sergey Dmitriev entitled Language Oriented Programming: The Next Programming Paradigm.
Concept
The concept of Language Oriented Programming takes the approach to capture requirements in the user's terms, and then to try to create an implementation language as isomorphicIsomorphism
In abstract algebra, an isomorphism is a mapping between objects that shows a relationship between two properties or operations. If there exists an isomorphism between two structures, the two structures are said to be isomorphic. In a certain sense, isomorphic structures are...
as possible to the user's descriptions, so that the mapping between requirements and implementation is as direct as possible. A measure of the closeness of this isomorphism is the "redundancy" of the language, defined as the number of editing operations needed to implement a stand-alone change in requirements. It is not assumed a-priori what is the best language for implementing the new language. Rather, the developer can choose among options created by analysis of the information flows — what information is acquired, what its structure is, when it is acquired, from whom, and what is done with it.
Existing implementations
- Forth
- LayerD
- Lisp macros
- Nemerle macros
- Meta Programming SystemJetBrains MPSJetBrains MPS is a metaprogramming system which is being developed by JetBrains. It implements language-oriented programming. MPS is an environment for language definition, a Language Workbench, and integrated development environment for such languages....
by JetBrainsJetBrainsJetBrains is a Czech software development company with offices in Prague, Czech Republic; Saint Petersburg, Russia; Boston, USA and Munich, Germany... - openArchitectureWare
- REBOLREBOLREBOL is a cross-platform data exchange language and a multi-paradigm dynamic programming language originally designed by Carl Sassenrath for network communications and distributed computing. The language and its official implementation, which is a proprietary freely redistributable software are...
- Spoofax/IMP
- Whole Platform
- XL
- XMF by Ceteva
See also
- Aspect-oriented programmingAspect-oriented programmingIn computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...
- Automatic programmingAutomatic programmingIn computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level....
- Concept programmingConcept programmingConcept programming is a programming paradigm focusing on how concepts, that live in the programmer's head, translate into representations that are found in the code space. This approach was introduced in 2001 by Christophe de Dinechin with the XL Programming Language.- Pseudo-metrics :Concept...
- DialectingDialectingDialects are domain specific sub-languages of a programming language or a data exchange language. A language supporting this paradigm encourages users to create new dialects for specific problematic domains.- Languages :* FORTH* LISP* REBOL* Ruby* XL- See also :* Domain-specific...
- Domain-specific languages
- Fourth-generation programming languageFourth-generation programming languageA fourth-generation programming language is a programming language or programming environment designed with a specific purpose in mind, such as the development of commercial business software. In the history of computer science, the 4GL followed the 3GL in an upward trend toward higher...
- Generative programming
- Grammar-oriented programmingGrammar-oriented programmingGrammar-oriented programming and Grammar-oriented Object Design are good for designing and creating a domain-specific programming language for a specific business domain....
- Intentional programmingIntentional ProgrammingIn computer programming, intentional programming is a collection of concepts which enable software source code to reflect the precise information, called intention, which programmers had in mind when conceiving their work...
- Linguistic method
- Metalinguistic abstractionMetalinguistic abstractionIn computer science, metalinguistic abstraction is the process of solving complex problems by creating a new language or vocabulary to better understand the problem space...
- Model-driven engineeringModel-driven engineeringModel-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...
- Domain-specific multimodelingDomain-specific multimodelingDomain-specific multimodelingis a software development paradigm where each view is made explicit as a separate domain-specific language .Successful development of a modern enterprise system requires the convergence of multiple views...
External links
- Language Oriented Programming Martin Ward's original paper that coined the term.
- Language Oriented Programming: The Next Programming Paradigm Sergey Dmitriev's paper that further explored the topic.
- Language Workbenches: The Killer-App for Domain Specific Languages? Martin Fowler's article describing both the concept and tools that support it.
- Papers by Martin Ward
- Sergey Dmitriev's personal homepage
- The Meta-Programming System
- http://www.intentsoft.com/
- Ceteva's XMF 'Language Oriented Programming' language
- uCalc Language Builder
- http://msdn.microsoft.com/architecture/overview/softwarefactories/
- http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/
- http://research.microsoft.com/research/pubs/view.aspx?tr_id=4
- http://oozy.blogspot.com/
- http://lambda-the-ultimate.org/node/377
- http://www.paulgraham.com/onlisp.html
- Language Oriented Programming (LOP)
- LayerD framework
- Interviews with Sergey Dmitriev, Charles Simonyi, Krzystof Czarnecki and Andy Evans