面向语言的程序设计

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

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

开发
Racket和被设计用来支持面向语言编程。其他的工具比如、和，提供了设计及实现领域特定语言和面向语言编程的工具。

相关内容
 领域特定语言
 元编程
 面向切面的程序设计
 意图编程


 LISP宏
 模型驱动工程
 可扩展编程
 同像性

参考文献

 外部链接 
 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

Category:编程范式
Category:面向对象的程序设计