Language-oriented programming
From Wikipedia, the free encyclopedia
Programming paradigms |
---|
|
Language oriented programming is a style of computer programming, via metaprogramming in which, rather than solving problems in general-purpose programming languages, the programmer creates one or more domain-specific programming 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.
Existing implementations of this concept include:
- Meta Programming System by JetBrains.
- XMF by Ceteva.
- openArchitectureWare.
- Whole Platform.
- Microsoft Software Factories.
- Intentional Software.
- LayerD.
- The XL programming language
- REBOL
A book that describes this concept, with examples, is Building Better Applications: a Theory of Efficient Software Development.[1] It takes the approach to capture requirements in the user's terms, and then to try to create an implementation language as isomorphic 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. See Linguistic Method.
[edit] See also
- Aspect-oriented programming
- Code generation
- Concept programming
- Dialecting
- Domain Specific Languages
- Fourth-generation programming language
- Generative programming
- Grammar-oriented programming
- Intentional Programming
- Linguistic Method
- LISP macros
- Metalinguistic abstraction
- Model Driven Engineering
- Domain-specific_multimodeling
[edit] References
- ^ Dunlavey 1994.
- Dunlavey (1994). Building Better Applications: a Theory of Efficient Software Development. International Thomson Publishing. ISBN 0-442-01740-5.
[edit] 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