Language-oriented programming

Revision as of 23:43, 27 May 2025 by imported>OAbot (Open access bot: url-access updated in citation with #oabot.)
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Language-oriented programming (LOP)<ref name="lop">Template:Multiref2</ref> is a software-development paradigm where "language" is a software building block with the same status as objects, modules and components,<ref name=Felleisen2018>Template:Cite journal</ref> and rather than solving problems in general-purpose programming languages, 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.<ref name="lop" />

ConceptEdit

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.<ref>Template:Cite book</ref>

DevelopmentEdit

The Racket programming language and RascalMPL were designed to support language-oriented programming from the ground up.<ref name=Felleisen2018 /> Other language workbench<ref name="killerapp">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> tools such as JetBrains MPS, Kermeta, or Xtext provide the tools to design and implement DSLs and language-oriented programming.<ref name=Erdweg>Template:Cite book</ref>

See alsoEdit

ReferencesEdit

Template:Reflist

External linksEdit

Template:Programming paradigms navbox