InfoQ

新闻

概念编程

作者 Ian Roughley译者 郭晓刚 发布于 2008年1月30日 上午2时17分

社区
Architecture
主题
领域特定语言,
建模
标签
语言

概念编程(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

没有回复

回复

独家内容

世界顶尖运动队教练的成功秘诀

本文列出了来自于顶级教练Marc Lammers的9条原则,他是在打造世界最佳曲棍球队的过程中发现这些原则的,文章把这些原则映射到了软件开发实践之中。

探索JVM上的LISP

本文由Per Jacobsson所作,目标读者为有意了解Lisp的Java开发人员。文章探讨了当前可以运行于JVM上的不同Lisp方言,以明快简洁的方式介绍了Lisp程序设计工作机理和其独特之处,并在最后演示了Lisp代码同Java系统的整合过程。

Ruby/Rails: 不一样的'Web'应用

本文以一个实际应用的例子为引子,探讨Ruby/Rails在非传统web系统中应用,以及研究如何定制以Rails为基础的领域特定的MVC框架。

认识云计算

本视频对云计算进行了简要的介绍,主要包括了五部分内容:首先带大家认识“云”,然后对计算机的发展过程进行了阐述,接着介绍了业界现状和企业级/世界级计算的新布局,最后对云计算做了一下展望。

AtomServer:数据分发的发布动力

在这篇文章中,Bryon Jacob和Chris Berry介绍了AtomServer,一个基于Apache Abdera的完整Atom存储实现。在去年,作者一直致力于为其雇主——Homeaway——实现一个Atom存储,现在已开源了其Atom存储框架:AtomServer。

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。