面向语言的程序设计(Language-Oriented Programming,LOP),指一种程序设计范型,将有相同状态的块建造成对象、模块和构件,不再用通用编程语言解决问题,程序员首先为问题编写一种或多种领域特定语言,然后再在这些语言中解决问题。这个概念具体描述于Martin Ward的1994年的题为《面向语言编程》的论文中。
概念
这个概念使用用户词汇来获得需求,然后创造一门与用户描述尽可能一致的实现语言,这样从需求到实现的映射会非常直接。判断“一致性”的方法是这门语言的“重复度”,即当需求有一次独立变动时需要做多少次修改操作。它并不假定什么是实现新语言的最好语言,相反,开发者可以通过对信息流的分析做不同选择。
开发
Racket和被设计用来支持面向语言编程。
相关内容
- 领域特定语言
- 元编程
- 面向切面的程序设计
- 意图编程
*
*
- LISP宏
- 模型驱动工程
- 可扩展编程
- 同像性
参考文献
外部链接
- [http://www.cse.dmu.ac.uk/~mward/martin/papers/middle-out-t.pdf Language Oriented Programming] Martin Ward's original paper that coined the term.
- [http://www.onboard.jetbrains.com/articles/04/10/lop/ Language Oriented Programming: The Next Programming Paradigm] Sergey Dmitriev's paper that further explored the topic.
- [http://www.martinfowler.com/articles/languageWorkbench.html Language Workbenches: The Killer-App for Domain Specific Languages?] Martin Fowler's article describing both the concept and tools that support it.
- [http://www.cse.dmu.ac.uk/~mward/martin/papers/ Papers by Martin Ward]
- [http://www.sergeydmitriev.com/ Sergey Dmitriev's personal homepage]
- [http://www.jetbrains.com/mps The Meta-Programming System]
- [https://web.archive.org/web/20160115203115/http://www.intentsoft.com/ https://web.archive.org/web/20160115203115/http://www.intentsoft.com/]
- [http://www.ucalc.com/langbuilder.html uCalc Language Builder]
- [http://msdn.microsoft.com/architecture/overview/softwarefactories/ http://msdn.microsoft.com/architecture/overview/softwarefactories/]
- [https://web.archive.org/web/20060918132317/http://osl.iu.edu/~tveldhui/papers/dagstuhl1998/ 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://research.microsoft.com/research/pubs/view.aspx?tr_id=4]
- [http://oozy.blogspot.com/ http://oozy.blogspot.com/]
- [http://lambda-the-ultimate.org/node/377 http://lambda-the-ultimate.org/node/377]
- [http://www.paulgraham.com/onlisp.html http://www.paulgraham.com/onlisp.html]
- [https://web.archive.org/web/20081102015805/http://fragmental.tw/research-on-dsls/language-oriented-programming-lop/ Language Oriented Programming (LOP)]
- [https://web.archive.org/web/20081204011209/http://layerd.net/ LayerD framework]
- Interviews with [https://web.archive.org/web/20071030094144/http://www.codegeneration.net/tiki-read_article.php?articleId=60 Sergey Dmitriev], [https://web.archive.org/web/20071030094149/http://www.codegeneration.net/tiki-read_article.php?articleId=61 Charles Simonyi], [https://web.archive.org/web/20071030094215/http://www.codegeneration.net/tiki-read_article.php?articleId=64 Krzystof Czarnecki] and [https://web.archive.org/web/20071030094235/http://www.codegeneration.net/tiki-read_article.php?articleId=68 Andy Evans]
评论 (0)