面向语言的程序设计:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
InternetArchiveBot留言 | 贡献
补救1个来源,并将0个来源标记为失效。) #IABot (v2.0.7
无编辑摘要
第2行: 第2行:
|G1=IT
|G1=IT
}}
}}
'''面向语言的程序设计'''(Language-Oriented Programming,LOP),指一种[[程序设计范型]],通过[[元编程]]而非[[通用编程语言]]解决问题程序员首先为问题编写一种或多种[[领域特定语言]],然后再在这些语言中解决问题。这个概念具体描述于Martin Ward题为[http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf 面向语言编程(英文)]的论文和Sergey Dmitriev题为[http://www.onboard.jetbrains.com/articles/04/10/lop/ 面向语言编程:下一代语言范式(英文)]的文章
'''面向语言的程序设计'''(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年的题为面向语言编程的论文


==概念==
这个概念的具体实现包括:
这个概念使用用户词汇来获得需求,然后创造一门与用户描述尽可能一致的实现语言,这样从需求到实现的映射会非常直接。判断“一致性”的方法是这门语言的“重复度”,即当需求有一次独立变动时需要做多少次修改操作。它并不假定什么是实现新语言的最好语言,相反,开发者可以通过对信息流的分析做不同选择。<ref>{{cite book
* [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]


==开发==
《Building Better Applications: a Theory of Efficient Software Development》通过例子描述了这个概念。它使用用户词汇来获得需求,然后创造一门与用户描述尽可能一致的实现语言,这样从需求到实现的映射会非常直接。判断“一致性”的方法是这门语言的“重复度”,即当需求有一次独立变动时需要做多少次修改操作。它并不假定什么是实现新语言的最好语言,相反,开发者可以通过对信息流的分析做不同选择。请见[[元语言抽象]]。
[[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]。其他的语言工作台英语language workbench工具比如JetBrains MPSKermetaXtext,提供了设计及实现领域特定语言和面向语言编程的工具[4]

相关内容

参考文献

  1. ^ 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. ^ 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. 
  3. ^ Dunlavey. Building Better Applications: a Theory of Efficient Software Development. International Thomson Publishing. 1994. ISBN 0-442-01740-5. 
  4. ^ Fowler, Martin. Language Workbenches: The Killer-App for Domain Specific Languages?. 12 June 2005 [14 April 2015]. 

外部链接