Content deleted Content added
MikeDunlavey (talk | contribs) |
m Open access bot: url-access updated in citation with #oabot. |
||
(112 intermediate revisions by 75 users not shown) | |||
Line 1:
'''Language-oriented programming''' ('''LOP''')<ref name="lop">{{multiref2|{{cite journal <!-- Citation bot no --> |last1=Ward |first1=Martin |title=Language-Oriented Programming |journal=Software - Concepts and Tools |date=1994 |volume=15 |issue=4 |pages=147–161
|url=https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=825a90a7eaebd7082d883b198e1a218295e0ed3b
|access-date=15 May 2019}}|{{cite book | first= Robert | last= Pickering | title= Beginning F# |chapter=Language-Oriented Programming
and in the article by Sergey Dmitriev entitled [http://www.onboard.jetbrains.com/articles/04/10/lop/ Language Oriented Programming: The Next Programming Paradigm].▼
|doi=10.1007/978-1-4302-2390-0_12 |isbn=978-1-4302-2389-4 |pages=327–349 | place= Berkeley | publisher=Apress | date=2010}} }}</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>{{cite journal |last1=Felleisen |first1=Matthias |last2=Findler |first2=Robert Bruce |last3=Flatt |first3=Matthew |last4=Krishnamurthi |first4=Shriram |last5=Barzilay |first5=Eli |last6=McCarthy |first6=Jay |last7=Tobin-Hochstadt |first7=Sam |title=A Programmable Programming Language |journal=Communications of the ACM |date=March 2018 |volume=61 |issue=3 |pages=62–71 |doi=10.1145/3127323 |s2cid=3887010 |url=https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext |access-date=15 May 2019|url-access=subscription }}</ref> and rather than solving problems in [[general-purpose programming language]]s, the programmer creates one or more [[___domain-specific language]]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''.<ref name="lop" />
==Concept==
|author = Dunlavey
|year = 1994
|title = Building Better Applications: a Theory of Efficient Software Development
|publisher = [[International Thomson Publishing]]
|isbn = 0-442-01740-5
}}</ref>
==Development==
▲A book that describes this concept, with examples, is: Dunlavey, "Building Better Applications: a Theory of Efficient Software Development" [[International Thomson Publishing]] ISBN 0-442-01740-5, 1994. In this book the approach taken is 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 an 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, results in options from which the developer can choose. See [[Linguistic Method]].
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">{{cite web |url= http://martinfowler.com/articles/languageWorkbench.html |title=Language Workbenches: The Killer-App for Domain Specific Languages? |last1=Fowler |first1=Martin |date=12 June 2005 |access-date=14 April 2015}}</ref> tools such as [[JetBrains MPS]], [[Kermeta]], or [[Xtext]] provide the tools to design and implement DSLs and language-oriented programming.<ref name=Erdweg>{{cite book |chapter-url= https://ir.cwi.nl/pub/21863 |chapter=The State of the Art in Language Workbenches |last1=Erdweg |first1=Sebastian |title=Software Language Engineering |series=Lecture Notes in Computer Science |date=2013 |volume=8225 |pages=197–217 |doi=10.1007/978-3-319-02654-1_11 |isbn=978-3-319-02653-4 |s2cid=5234848 |access-date=4 July 2023}}</ref>
==See also==
* [[Grammar-oriented programming]]
* [[Dialecting]]▼
* [[
* [[
==References==
{{Reflist}}
▲*[[Dialecting]]
==External links==
▲
* [https://link.springer.com/chapter/10.1007/978-3-319-02654-1_11 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.
*[https://www.researchgate.net/publication/322499807_Language_Oriented_Programming_in_Meta-Lisp Language Oriented Programming in MetaLisp] Gyuri Lajos's [https://leeds.primo.exlibrisgroup.com/discovery/fulldisplay?docid=alma991002968069705181&context=L&vid=44LEE_INST:VU1&lang=en&search_scope=My_Inst_CI_not_ebsco&adaptor=Local%20Search%20Engine&tab=AlmostEverything&query=any,contains,language%20oriented%20programming&facet=rtype,include,dissertations thesis 1992 University of Leeds] The system used the very same Top Down Parsing Language algorithm that powered [[TREE-META|Tree-Meta]]
{{Programming paradigms navbox}}
[[Category:Programming paradigms]]
|