面向语言的程序设计

面向语言的程序设计(Language-Oriented Programming,LOP)[1],指一种程序设计范型,将有相同状态的块建造成对象、模块和构件[2],不再用通用编程语言解决问题,程序员首先为问题编写一种或多种领域特定语言,然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。

概念 编辑

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

开发 编辑

Racket被设计用来支持面向语言编程[2]。其他的语言工作台英语language workbench工具比如JetBrains MPS英语JetBrains MPSKermeta英语KermetaXtext英语Xtext,提供了设计及实现领域特定语言和面向语言编程的工具[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. (原始内容存档 (PDF)于2020-11-09). 
  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. (原始内容存档于2020-11-29). 
  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]. (原始内容存档于2021-05-02). 

外部链接 编辑