面向语言的程序设计:修订间差异
删除的内容 添加的内容
补救1个来源,并将0个来源标记为失效。) #IABot (v2.0.7 |
小无编辑摘要 |
||
第2行: | 第2行: | ||
|G1=IT |
|G1=IT |
||
}} |
}} |
||
'''面向语言的程序设计'''(Language-Oriented |
'''面向语言的程序设计'''(Language-Oriented Programming,LOP)<ref name="lop">{{cite journal |last1=Ward |first1=Martin |title=Language Oriented Programming |journal=Software - Concepts and Tools |date=1994 |volume=15 |issue=4 |pages=147–161 |doi=10.1007/978-1-4302-2390-0_12 |url=http://www.gkc.org.uk/martin/papers/middle-out-t.pdf |access-date=15 May 2019}}</ref>,指一种[[程序设计范型]],将有相同状态的块建造成对象、模块和构件<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 |url=https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext |access-date=15 May 2019}}</ref>,不再用[[通用编程语言]]解决问题,程序员首先为问题编写一种或多种[[领域特定语言]],然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。 |
||
==概念== |
|||
这个概念的具体实现包括: |
|||
⚫ | |||
* [http://www.jetbrains.com/mps/ Meta Programming System] by [[JetBrains]]. |
|||
|author = Dunlavey |
|||
* [http://www.ceteva.com/xmf.html XMF by Ceteva]{{Dead link|date=2019年5月 |bot=InternetArchiveBot |fix-attempted=yes }}. |
|||
|year = 1994 |
|||
* [http://www.openarchitectureware.org/ openArchitectureWare]. |
|||
|title = Building Better Applications: a Theory of Efficient Software Development |
|||
* [http://whole.sourceforge.net/ Whole Platform]. |
|||
|publisher = [[International Thomson Publishing]] |
|||
* [[Microsoft]] [http://msdn2.microsoft.com/en-us/teamsystem/aa718951.aspx Software Factories]. |
|||
|isbn = 0-442-01740-5 |
|||
* [https://web.archive.org/web/20160115203115/http://www.intentsoft.com/ Intentional Software]. |
|||
}}</ref> |
|||
* [https://web.archive.org/web/20081204011209/http://layerd.net/ LayerD]. |
|||
* [http://xlr.sf.net The XL programming language] |
|||
==开发== |
|||
⚫ | |||
[[Racket]]被设计用来支持面向语言编程<ref name=Felleisen2018 />。其他的{{en-link|语言工作台|language workbench}}工具比如[[JetBrains MPS]]、[[Kermeta]]或[[Xtext]],提供了设计及实现领域特定语言和面向语言编程的工具<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>。 |
|||
==相关内容== |
==相关内容== |
||
第32行: | 第32行: | ||
==参考文献== |
==参考文献== |
||
{{reflist}} |
|||
<references /> |
|||
<div class="references-small" style="margin-top: 1em;"> |
|||
* {{cite book |
* {{cite book |
||
|author = Dunlavey |
|author = Dunlavey |
||
第46行: | 第45行: | ||
|accessdate = |
|accessdate = |
||
}}</cite> |
}}</cite> |
||
</div> |
|||
== 外部链接 == |
== 外部链接 == |
2021年2月15日 (一) 17:14的版本
面向语言的程序设计(Language-Oriented Programming,LOP)[1],指一种程序设计范型,将有相同状态的块建造成对象、模块和构件[2],不再用通用编程语言解决问题,程序员首先为问题编写一种或多种领域特定语言,然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。
概念
这个概念使用用户词汇来获得需求,然后创造一门与用户描述尽可能一致的实现语言,这样从需求到实现的映射会非常直接。判断“一致性”的方法是这门语言的“重复度”,即当需求有一次独立变动时需要做多少次修改操作。它并不假定什么是实现新语言的最好语言,相反,开发者可以通过对信息流的分析做不同选择。[3]
开发
Racket被设计用来支持面向语言编程[2]。其他的语言工作台工具比如JetBrains MPS、Kermeta或Xtext,提供了设计及实现领域特定语言和面向语言编程的工具[4]。
相关内容
参考文献
- ^ Ward, Martin. Language Oriented Programming (PDF). Software - Concepts and Tools. 1994, 15 (4): 147–161 [15 May 2019]. doi:10.1007/978-1-4302-2390-0_12.
- ^ 2.0 2.1 Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam. A Programmable Programming Language. Communications of the ACM. March 2018, 61 (3): 62–71 [15 May 2019]. doi:10.1145/3127323.
- ^ Dunlavey. Building Better Applications: a Theory of Efficient Software Development. International Thomson Publishing. 1994. ISBN 0-442-01740-5.
- ^ Fowler, Martin. Language Workbenches: The Killer-App for Domain Specific Languages?. 12 June 2005 [14 April 2015].
- Dunlavey. Building Better Applications: a Theory of Efficient Software Development. International Thomson Publishing. 1994. ISBN 0-442-01740-5.
外部链接
- Language Oriented Programming Martin Ward's original paper that coined the term.
- Language Oriented Programming: The Next Programming Paradigm Sergey Dmitriev's paper that further explored the topic.
- Language Workbenches: The Killer-App for Domain Specific Languages? Martin Fowler's article describing both the concept and tools that support it.
- Papers by Martin Ward
- Sergey Dmitriev's personal homepage
- The Meta-Programming System Archived 2012-03-22 at WebCite
- https://web.archive.org/web/20160115203115/http://www.intentsoft.com/
- Ceteva's XMF 'Language Oriented Programming' language[永久失效連結]
- uCalc Language Builder
- http://msdn.microsoft.com/architecture/overview/softwarefactories/
- https://web.archive.org/web/20060918132317/http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/
- http://research.microsoft.com/research/pubs/view.aspx?tr_id=4
- http://oozy.blogspot.com/
- http://lambda-the-ultimate.org/node/377
- http://www.paulgraham.com/onlisp.html
- Language Oriented Programming (LOP)
- LayerD framework
- Interviews with Sergey Dmitriev, Charles Simonyi, Krzystof Czarnecki and Andy Evans