Domain Specific Language(DSL)感想2

Martin Fowler在我心目中是个大牛,ThoughtWorks公司的chief scientist.
每次听他的presentation都很激动,幸亏有了internet这个好玩意,否则我这样一个小小程序员是不可能有机会听他的演讲的。
最近他老人家显然一直忙着研究DSL.
今天他演讲的题目是:Language-oriented Programming and Language Workbenches: Shifting Paradigms
这里记下几点还记得的重点:
1 DSL的S,specific,讲得是专,narrow。即DSL比GPL更加专注于某个domain。
2 既然要专,那么Language也得配合,去掉不需要的部分。这些部分包括语言的词汇和语法。
3 任何语言都是某种程度上的DSL。java是DSL,ruby是dsl,rails是DSL。差别在于够不够专,专到何种程度。
4 所谓的language-oriented programming就是编一个DSL的解释器。

我的感想是:
1 当我们需要在某个方面做很多工作时,我们才需要DSL。比如,我们的项目里有大量的代码要与数据库交互,那么与其写jdbc代码,不如采用更专业的 hibernate。如果存   在大量的网页,与其写很多servlet,不如采用JSP,甚至JSF。相反,如果整个项目只有一个页面要做,引进一个MVC框架倒不如写一个 servlet。
2 是不是存在一种语言,支持的domain很多很宽,又各方面都很专业就很完美呢?实际上,大而专本身就是一个矛盾,不太可能存在这样的语言。即使像C++ 这样既支持底层操作,又支持OO的语言,其下场还是不太好。为什么呢?1 太全面会导致学习不易。 2 会被滥用。 一段代码里混杂者指针操作,位操作和对象,会令读者昏厥。
3 我个人觉得D,domain也是很重要的一个词。OOP是一个domain,所以从这个角度看,java,ruby,smalltalk,c++,在OOP的时候,是基本无差别的DSL。因为它们的D是一样的。

最后,我还是觉得OO思想真伟大,它似乎真的能解释一切模型。当我们以面向对象的视角看问题的时候,全世界所有的问题都可以存在于一个叫做面向对象的domain里。这个domain还很容易理解,对象和消息就组成了一切。于是,我们似乎只需要一种DSL即可。


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值