HOME

TheInfoList



OR:

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 Domain (software engineering), domains. Conversely, a Domain-specific language, domain-specific pro ...
s, the programmer creates one or more
domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
s (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''.


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 In mathematics, an isomorphism is a structure-preserving mapping or morphism between two structures of the same type that can be reversed by an inverse mapping. Two mathematical structures are isomorphic if an isomorphism exists between the ...
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. The Racket language is a modern dialect of Lisp and a descendant of Scheme. It is designed as a platform for programming language design and implementation. In addition to the co ...
and
RascalMPL Rascal is a domain-specific language for metaprogramming and language oriented programming, such as static code analysis, program transformation, program generation and implementation of domain-specific languages. It is a general meta language in ...
were designed to support language-oriented programming from the ground up. 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 bui ...
,
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 ...
provide the tools to design and implement DSLs and language-oriented programming.


See also

*
Grammar-oriented programming Grammar-oriented programming (GOP) and Grammar-oriented Object Design (GOOD) are good for designing and creating a domain-specific programming language (DSL) for a specific business domain. GOOD can be used to drive the execution of the applic ...
*
Dialecting A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their syntax (form) and semantics Semantics is the study of linguistic Meaning (philosophy), meaning. It examines ...
*
Domain-specific language A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging ...
*
Extensible programming In computer science, extensible programming is a style of computer programming that focuses on mechanisms to extend the programming language, compiler, and runtime system (environment). Extensible programming languages, supporting this style of prog ...


References


External links


Language Oriented Programming: The Next Programming Paradigm
Sergey Dmitriev's paper that further explored the topic.
The State of the Art in Language Workbenches. Conclusions from the Language Workbench Challenge.
In: Proceedings of the 6th International Conference on Software Language Engineering (SLE'13). 2013.
Language Oriented Programming in MetaLisp
Gyuri Lajos'
thesis 1992 University of Leeds
The 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 embedd ...
{{Programming paradigms navbox Programming paradigms