面向語言的程序設計

面向語言的程序設計(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). 

外部連結

編輯