Posted on 2006-03-25 11:24
canonical 阅读(859)
评论(1) 编辑 收藏 所属分类:
设计理论
关于DSL(Domain Specific Language)的确切含义纷争很多,但是其核心观念还是很明确的。DSL的关键是使用领域特定的概念,即它的概念系统中具有一些非General Purpose的基元。但是这种所谓非General Purpose仅是就诠释层面而言,它所指的并不是DSL对应的形式系统。例如,在物理学中声波(sonic wave)无疑是对原子系统的集团运动模式的一种抽象,基于wave概念的声波方程可以看作是对应于原子系统的一个特定领域的DSL。从声波系统是无法逆推出原子系统的所有行为的,但是理论上量子力学在形式上同样可以采用wave描述,而它却可以构成对原子系统的诠释。
DSL因为基于Domain概念,可以提高理解性是应该的,但是现实中的大多数DSL仍然存在大量技术性的形式要求,它们是很难让非计算机领域的业务人员掌握的。期待业务专家使用DSL在目前多半只是一种不切实际的幻想。但是如果认为DSL就是更甜的代码也并不适当。搜索google的时候我们使用的查询字符串也是一种domain specific language, 很多人都会使用""和-等语法结构。
DSL应该关注用的层面(what), 而不是how-to,how-to是DSL的实现问题。从what到how to是我们希望通过DSL解析器屏蔽起来的内容,而不是DSL本身需要表达的内容。