概念编程(Concept Programming)是从 2000 年 Christophe de Dinechin 在惠普公司开始的一个非公开项目起步的。概念编程这种方法:
对软件之表达与创作提出一种新的视角,以应对软件日益增长的复杂性。
从很多方面来说,概念编程和领域特定语言(DSL)要解决的是同一个问题,只不过它们采取的路线不一样。Christophe 没有创造一种专用语言,反而创造了 XL 这种通用语言。他在为 RegDeveloper 所写的一篇文章里对此作了解释:
现有表示法的局限是很难对它们作优雅的扩展。你可以扩展语言,像 Lisp 和它的衍生语言——但问题是如何让扩展呈现出你想看到的样子。
接着,文章解释道:
XL 吸引人的其中一个方面是它没有固定的关键字——它依赖的是 Dinechin 称为“形状(shape)”的东西:“XL 不用关键字——只有能够解析任何东西的单一语法。它的外观是标准的。它依赖于很少几种解析树,且并不以关键字为基础,而是以解析树的形状为基础。这就是说你可以快速地给 XL 加东西,来回摆弄和实验。”
在 Christophe de Dinechin 的一次演讲中,他进一步扩展了文章的主题,认为即便是很简单的问题用今天的编程语言也很难实现。
下面两者之间存在着隔阂:
- 在你头脑中的概念
- 概念在代码里的表现形式
概念编程完全是针对这种隔阂的。
他继续说,概念编程将会:
令代码“看似”概念
- 在结构、行为和局部性(locality)
- 最低意外原则
除了概念,Christophe 还定义了一些伪度量指标(pseudo-metrics)。这些指标是高度主观的,而且也不容易测量,但它们确实提供了一种信息沟通的方式。他总结的伪指标有:
句法学噪声
- 无法映射到问题空间的形式
语义学噪声
- 无法映射到问题空间的含义
带宽
- 对问题空间的涵盖程度有多少?
信噪比
- 有多少代码是在处理真正的问题?
要想进一步了解 XL 和概念编程,XL 项目的地址在 http://xlr.sourceforge.net
查看英文原文: Concept Programming
评论