面向語言的程序設計
面向語言的程序設計(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. (原始內容存檔 (PDF)於2020-11-09).
- ^ 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).
- ^ 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]. (原始內容存檔於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