Language-oriented programming (LOP)
is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components,
and rather than solving problems in
general-purpose programming language
In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application domains. Conversely, a domain-specific programming language is used within a specific area. For ex ...
s, the programmer creates one or more
domain-specific languages (DSLs) for the problem first, and solves the problem in those languages. Language-oriented programming was first described in detail in Martin Ward's 1994 paper ''Language Oriented Programming'',
published in ''Software - Concepts and Tools'', Vol.15, No.4, pp 147–161, 1994.
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 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.
Development
The
Racket programming language
Racket is a general-purpose, multi-paradigm programming language and a multi-platform distribution that includes the Racket language, compiler, large standard library, IDE, development tools, and a set of additional languages including Typed R ...
is designed to support language-oriented programming.
Other
language workbench A language workbench is a tool or set of tools that enables software development in the language-oriented programming software development paradigm. A language workbench will typically include tools to support the definition, reuse and composition ...
tools such as
JetBrains MPS
JetBrains MPS (Meta Programming System) is a language workbench developed by JetBrains. MPS is a tool to design domain-specific languages (DSL). It uses projectional editing which allows users to overcome the limits of language parsers, and build ...
,
Kermeta
Kermeta is a modeling and programming language for metamodel engineering.
History
The Kermeta language was initiated by Franck Fleurey in 2005 within thTriskellteam of IRISA (gathering researchers of the INRIA, CNRS, INSA and the University of ...
, or
Xtext
Xtext is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser, but also a class model for the abstract syntax tree, as w ...
provide the tools to design and implement DSLs and language-oriented programming
See also
*
Grammar-oriented programming
*
Dialecting
*
Domain-specific language
*
Extensible programming Extensible programming is a term used in computer science to describe a style of computer programming that focuses on mechanisms to extend the programming language, compiler and runtime environment. Extensible programming languages, supporting this ...
*
Intentional programming
In computer programming, Intentional Programming is a programming paradigm developed by Charles Simonyi that encodes in software source code the precise ''intention'' which programmers (or users) have in mind when conceiving their work. By using ...
*
Homoiconicity
In computer programming, homoiconicity (from the Greek language, Greek words ''homo-'' meaning "the same" and ''icon'' meaning "representation") is a property of some programming languages. A language is homoiconic if a program written in it can b ...
References
{{Reflist
External links
Language Oriented Programming: The Next Programming ParadigmSergey Dmitriev's paper that further explored the topic.
Language Oriented Programming in MetaLisp Gyuri Lajos'
thesis 1992 University of LeedsThe system used the very same Top Down Parsing Language algorithm that powered
Tree-Meta
The TREE-META (or Tree Meta, TREEMETA) Translator Writing System is a compiler-compiler system for context-free languages originally developed in the 1960s. Parsing statements of the metalanguage resemble augmented Backus–Naur form with embedded ...
Programming paradigms