这是一篇技术评论,呃,请自行掠过
早上拜读了Martin Fowler老人家的BLOG Groovy or Ruby ,兴致勃勃的看这个时尚的家伙对动态语言的高谈阔论。下午就在InfoQ看到了对其新书的点评——Martin Fowler unveils details of his upcoming DSL book. 两样东西放到一起很有意思。动态语言与领域语言(Domain-Specific Language)。
MF的书中是这样介绍的。
如果我们把XSLT看成是专门格式化XML的语言,那么XSLT就是XML的DSL。
那么DSL有什么用呢?
根据MF的论述 Domain-Specific Language
DSL与通用语言相区别,是为特定目的而生的语言,它并不是什么新东西,历史几乎和计算机的历史一样长。
比如Windows的批处理文件,再比如HTML(某种意义上)。处理它们的程序和普通的应用程序不一样,这些程序并不知道这些语言具体描述了什么,却知道他们到最后大概是什么样子。但我们也不能把这些应用程序归结为系统程序,毕竟,你不能用这些动态语言写成任何一个通常意义上的程序。这些语言轻巧灵活,惹人喜爱,却长期处于没人在乎的地位。几乎没有任何一个大学开设JavaScript或者BAT的课程。然而,用它们开发的程序铺天盖地,甚至有些开发者都没有意识到他们在写程序。
我们到底有多少DSL,没有人说的清楚,甚至怎么界定都没有标准。然而这种工具的确越来越受重视。大型的软件通常都有自己的工具语言,比如SAP,比如PepleSoft,比如MathLib,比如SAS,掌握这些工具通常意味着熟练应用这些语言与相关的领域知识。而由于他们之间毫无联系,同种软件之间有着高昂的替换成本。变相垄断使得DSL由最初的简化用户操作变成了对抗新来者的武器。
标准化是由混乱走向秩序的利器。工业化也是软件行业一直追求的目标。让我们看看工业界是怎么做的,他们拥有流水线,有很好的设计,生产,销售流程。我们常常抱怨软件的变化,生产没有变化吗?现在工业可以高效的适应变化,依靠的就是对领域的深切理解,对规则的灵活掌握。
对标准的无尽追寻是业界走向成熟的重要标志。不妨设想,今后的某天,所有的财务软件都有统一的口径标准,统一的数据格式处理流程。集团化,高质量的软件生产和部署使我们更加有序的获取所需的功能。然而这一切,依靠的就是对DSL领域的入侵。Ruby的流行正式反映了这种入侵,当其追逐者不断的在各种平台上实现这门语言的时候,我们也看到了传统语言正积极的调整。Java向.net学习多语言支持。.net努力的靠近开源社区的标准。
我们说GOP,说AOP,无非就是想把领域问题(Domain Problem)从应用问题里面解离,我们需要成熟的软件产品,需要的是真正模块化的组件,而不是某个既成事实。被巨头们忽悠着团团转的我们,也只能等到他们被迫合作的时候,才能轻松一点。
您可能有兴趣的文章:
- 新七街开发进度小结 080913
- Java Scripting in JDK6
- Ruby on Rails 安装错误一例
- Spring 2.5 AOP Schema编程小解
- Maven need to act as Wikipedia

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
After the day
4 Comments
爬过来踩踩
寒死……
在我那么专业的文章下面这样……
不错,不错;
Pingback: 笔记:DSL之一 简介 | Himmel