Language-oriented programming

Language-oriented programming

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 [http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf Language Oriented Programming] published in [http://www.informatik.uni-trier.de/~ley/db/journals/stp/stp15.html Software - Concepts and Tools, Vol.15, No.4, pp 147-161, 1994] and in the article by Sergey Dmitriev entitled [http://www.onboard.jetbrains.com/articles/04/10/lop/ Language Oriented Programming: The Next Programming Paradigm] .

Existing implementations of this concept include:
* [http://www.jetbrains.com/mps/ Meta Programming System] by JetBrains.
* [http://www.ceteva.com/xmf.html XMF by Ceteva] .
* [http://www.openarchitectureware.org/ openArchitectureWare] .
* [http://whole.sourceforge.net/ Whole Platform] .
* Microsoft [http://msdn2.microsoft.com/en-us/teamsystem/aa718951.aspx Software Factories] .
* [http://www.intentsoft.com/ Intentional Software] .
* [http://layerd.net/ LayerD] .

A book that describes this concept, with examples, is "Building Better Applications: a Theory of Efficient Software Development". [Dunlavey 1994.] 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.

See also

* Model Driven Engineering
* Domain Specific Languages
* Aspect-oriented programming
* Generative programming
* Intentional Programming
* Code generation
* Dialecting
* Metalinguistic abstraction
* Linguistic Method
* Service-Oriented Modeling Framework (SOMF)
* Fourth-generation programming language
* LISP macros

References


* cite book
author = Dunlavey
year = 1994
title = Building Better Applications: a Theory of Efficient Software Development
url =
chapter =
chapterurl =
pages =
publisher = International Thomson Publishing
isbn = 0-442-01740-5
accessdate =

External links

* [http://www.ceteva.com/xmf.html Ceteva's XMF 'Language Oriented Programming' language]
* [http://www.ucalc.com/langbuilder.html uCalc Language Builder]
* [http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf Language Oriented Programming]
* [http://www.cse.dmu.ac.uk/~mward/martin/papers/ Papers by Martin Ward]
* [http://www.onboard.jetbrains.com/articles/04/10/lop/ Language Oriented Programming: The Next Programming Paradigm]
* [http://www.sergeydmitriev.com/ Sergey Dmitriev's personal homepage]
* [http://www.jetbrains.com/mps The Meta-Programming System]
* [http://www.martinfowler.com/articles/languageWorkbench.html http://www.martinfowler.com/articles/languageWorkbench.html]
* [http://msdn.microsoft.com/architecture/overview/softwarefactories/ http://msdn.microsoft.com/architecture/overview/softwarefactories/]
* [http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/ http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/]
* [http://research.microsoft.com/research/pubs/view.aspx?tr_id=4 http://research.microsoft.com/research/pubs/view.aspx?tr_id=4]
* [http://www.intentsoft.com/ http://www.intentsoft.com/]
* [http://oozy.blogspot.com/ http://oozy.blogspot.com/]
* [http://lambda-the-ultimate.org/node/377 http://lambda-the-ultimate.org/node/377]
* [http://www.paulgraham.com/onlisp.html http://www.paulgraham.com/onlisp.html]
* [http://fragmental.tw/research-on-dsls/language-oriented-programming-lop/ Language Oriented Programming (LOP)]
* [http://layerd.net/ LayerD framework]
* Interviews with [http://www.codegeneration.net/tiki-read_article.php?articleId=60 Sergey Dmitriev] , [http://www.codegeneration.net/tiki-read_article.php?articleId=61 Charles Simonyi] , [http://codegeneration.net/tiki-read_article.php?articleId=64 Krzystof Czarnecki] and [http://codegeneration.net/tiki-read_article.php?articleId=68 Andy Evans]


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Semantic-oriented programming — (SOP) in which you express your code directly in semantic meanings, most suitable to reflect your task. This means, that for each task you may need to add new semantic meanings, thus you ll need an extendable and configurable programming language …   Wikipedia

  • Object-oriented programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Subject-oriented programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • Aspect-oriented programming — (AOP) is a programming paradigm that increases modularity by allowing the separation of cross cutting concerns.Separation of concerns entails breaking down a program into distinct parts (so called concerns , cohesive areas of functionality). All… …   Wikipedia

  • Template Oriented Programming — In computer programming, Template oriented programming (TOP) is a programming paradigm that focuses on templates to accomplish a programmer’s goals. Template oriented programming is a more general version of generic programming in which the… …   Wikipedia

  • Attribute-Oriented Programming — (@OP) is a program level marking technique. Programmers can mark program elements (e.g. classes and methods) to indicate that they maintain application specific or domain specific semantics. For example, some programmers may define a logging… …   Wikipedia

  • Service Oriented Programming — (SOP) is a programming paradigm that uses services as the unit of computer work, to design and implement integrated business applications and mission critical software programs. Services can represent steps of business processes and thus one of… …   Wikipedia

  • object-oriented programming — ▪ computer science       use of predefined programming modular units (objects, classes, subclasses, and so forth) in order to make programming faster and easier to maintain. Object oriented languages help to manage complexity in large programs.… …   Universalium

  • Process-oriented programming — is a programming paradigm that separates the concerns of data structures and the concurrent processes that act upon them. The data structures in this case are typically persistent, complex, and large scale the subject of general purpose… …   Wikipedia

  • Detail-oriented programming — In computer programming Detail oriented programming is a pejorative term for source code that uses trick structure or syntax. Overview Detail oriented programming is a term, coined by Clean AJAX[1] creator MSc. Carlos Eduardo Gonçalves, that… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”