Language-oriented programming
Encyclopedia
Language oriented programming (LOP) is a style of computer
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 isomorphic
Isomorphism
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 System
    JetBrains MPS
    JetBrains 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 JetBrains
    JetBrains
    JetBrains is a Czech software development company with offices in Prague, Czech Republic; Saint Petersburg, Russia; Boston, USA and Munich, Germany...

  • openArchitectureWare
  • REBOL
    REBOL
    REBOL 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 programming
    Aspect-oriented programming
    In computing, aspect-oriented programming is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns...

  • Automatic programming
    Automatic programming
    In 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 programming
    Concept programming
    Concept 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...

  • Dialecting
    Dialecting
    Dialects 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 language
    Fourth-generation programming language
    A 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 programming
    Grammar-oriented programming
    Grammar-oriented programming and Grammar-oriented Object Design are good for designing and creating a domain-specific programming language for a specific business domain....

  • Intentional programming
    Intentional Programming
    In 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 abstraction
    Metalinguistic abstraction
    In 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 engineering
    Model-driven engineering
    Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...

  • Domain-specific multimodeling
    Domain-specific multimodeling
    Domain-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

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK