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

概念

编辑

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

开发

编辑

RacketRascalMPL英语RascalMPL被设计用来支持面向语言编程[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). 

外部链接

编辑


📚 Artikel Terkait di Wikipedia

Java

Java RMI Java 5.0的多种新特性(包括foreach循环,自动装箱、拆箱(英语:Object type (object-oriented programming)#Autoboxing),可变参数函数以及annotations)是在相似的競爭對手C#更新後增加的。 Niklaus Wirth

编程语言

编程语言(英語:programming language)是用来表達计算机程序的電腦語言。它是一套标准化的交流技巧,一种能够让程序员准确地定义计算机所需数据的语言,以向计算机发出指令并精确地定义不同情况下应当采取的行动。 最早的编程语言早在電腦發明前就已問世,當時是用來控制提花織布機(英语:Jacquard

面向对象程序设计

物件導向程式設計(英語:Object-oriented programming,缩写:OOP)是種具有物件概念的程式設計典範,同时也是一种程式开发的抽象方针。它可能包含資料、特性、程式碼與方法。对象則指的是類別(class)的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性

面向切面的程序设计

特性導向程式設計(Aspect-oriented programming,AOP,又译作面向方面程序设计、面向切面程序设计、剖面导向程序设计),是计算机科学中的一种编程范型,旨在将交叉切入关注与作为业务主体的核心关注进行分离,以提高程序代码的模块化程度。“方面”(aspect)通过规定叫做“定点切入

小蓋伊·史提爾

Language (页面存档备份,存于互联网档案馆) 參: Guy L. Steele. Growing a Language (PDF). Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). Association

SNOBOL

SNOBOL(StriNg Oriented and symBOlic Language),即“面向字符串且符号式的语言”,是以SNOBOL4告终的一系列编程语言,由AT&T贝尔实验室的David J. Farber(英语:David J. Farber)、Ralph E. Griswold(英语:Ralph

ALGOL 68

Language 1968的縮寫),是一種指令式程式語言,作為ALGOL家族的成員,它是官方上的ALGOL 60後繼者。ALGOL 68的設計目標,是提供更廣泛的應用,以及更嚴格的語法定義。 ALGOL 68的特征包括基于表达式(英语:Expression-oriented programming

Common Lisp对象系统

Flavors(英语:Flavors (programming language))和Xerox CommonLoops(英语:CommonLoops)的启发,然而它比二者要更加泛化。 CLOS最初被提议作为一种附加件,首次出现在1988年发表的《Common Lisp面向对象编程(英语:Object-Oriented Programming