关于DSL、MDA、UML、TDD的一些思考
这是计划中的一篇Blog,原来设想的题目是《MDA与DSL》 ,只是因为和徐昊聊天时产生了一些想法,想谈谈对MDA和DSL的新认识。现在这段时间又出现了很多关于DSL的讨论。
马大叔的两篇:领域专用语言(DSL)、界定DSL
还有在JavaEye的不少相关的讨论:DSL的讨论、规则系统or脚本系统,自然语言,DSL or Java语言、Ruby DSL
还有一篇不错的入门文章:用Ruby 创建领域特定语言(DSL)
因此自己又思考了不少东西。联想到以前说过的两句话:
“框架是弱语言,语言是强框架”
由此我们可以这么定义,DSL就是尽可能写得像语言的框架。
再接着追问,为什么框架还不够,还要发展为DSL呢?初步的看法是:语言是一种更加方便的使用方式。
前段时间徐昊一直在写一篇关于Antlr和DSL的文章,我也不断的看着文章的进展,跟他讨论着。有这么一些想法,还远不成型。
1、DSL一般来说,是Domain Specific Language的缩写,而我以为,更加实用的,应该是Domain Scripting Language,这种DSL。也就是说,DSL应该足够简单,一根筋,过程化,三分钟学会。否则,太过复杂的DSL,就不会有人喜欢了。
2、DSL的简单,是他的优点、特点、也是他的弱点和局限所在。
3、DSL与MDA最大的区别是,DSL是自底向上简化劳动的实践,而MDA则是企图自顶向下搞定一切的妄想。
4、我当初设计的DJ(Dynamic Java),应该被称之为DML(Domian Modeling Language)——领域建模语言。相对于UML,DML是更加适合的领域建模工具,毕竟,UML受限于OO的思维模式,无法超越。
另外还有一些议论,也附在下面:
UML,是思考工具,不是开发工具。
TDD,是开发手段,不是设计手段。
UML作为开发工具,就会出现MDA那样的书呆子遐想
TDD作为设计工具,就会导致设计惰性与跳不出最初的心理暗示(隐喻)
0 Comments:
Post a Comment
<< Home