面向语言的程序设计
面向语言的程序设计(Language-Oriented Programming,LOP)[1],指一种程序设计范型,将有相同状态的块建造成对象、模块和构件[2],不再用通用编程语言解决问题,程序员首先为问题编写一种或多种领域特定语言,然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。
概念
这个概念使用用户词汇来获得需求,然后创造一门与用户描述尽可能一致的实现语言,这样从需求到实现的映射会非常直接。判断“一致性”的方法是这门语言的“重复度”,即当需求有一次独立变动时需要做多少次修改操作。它并不假定什么是实现新语言的最好语言,相反,开发者可以通过对信息流的分析做不同选择。[3]
参考文献
- Ward, Martin. (PDF). Software - Concepts and Tools. 1994, 15 (4): 147–161 [15 May 2019]. doi:10.1007/978-1-4302-2390-0_12. (原始内容存档 (PDF)于2020-11-09).
- Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam. . Communications of the ACM. March 2018, 61 (3): 62–71 [15 May 2019]. doi:10.1145/3127323. (原始内容存档于2020-11-29).
- Dunlavey. . International Thomson Publishing. 1994. ISBN 0-442-01740-5.
- Fowler, Martin. . 12 June 2005 [14 April 2015]. (原始内容存档于2021-05-02).
外部链接
- 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(页面存档备份,存于)
- https://web.archive.org/web/20160115203115/http://www.intentsoft.com/
- 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
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.