6月21日,由ThoughtWorks主办、CSDN协办的第三届“敏捷中国”技术大会在北京丽亭华苑酒店召开,本届大会的主题是“精益软件思维”。敏捷宣言的缔造者之一、ThoughtWorks首席科学家Martin Fowler再度来华,与多位ThoughtWorks公司内外的技术领袖带来精彩的演讲。
自从2005年Martin Fowler首次访华以来,“敏捷”逐渐成为中国软件从业者们耳熟能详的词汇。在今天的演讲中Martin Fowler给我们讲解“求专不求全”的DSL语言。许多人认为DSL是一个新的技术,其实这种观点是一种误解。
Martin Fowler&徐昊在演讲中说:“70年代时候DSL语言就已经存在了,实际上许多工程师都已经开使用这种技术了,从用户角度来说,可能有些语言你一直都在用,只是没有意识到是DSL语言,我并没有列举出所有DSL语言,因为现在有太多DSL语言,但是它们之间有一定的共通性。”现在DSL越来越受到欢迎,从去年和前年开始这个语言越来越受欢迎,我们实际上每天都用这样的语言,可以说DSL这种语言无处不在。
如何为一个领域专门创建一个DSL呢?DSL语言有什么优点呢?Martin Fowler&徐昊通过RUB和JAVA实例为参会者详细讲解了DSL的类型。
实际上有两种类型DSL
一种WEB的DSL,就是客户句法的例子。
WEB DSL是在你通常用的语言当中写一个WEB语言,有一个编译器进行编译.
还有一个类型就是内部DSL,有时候是嵌入方法,嵌入到语言当中使用。
在谈到DSL语言的特点时,Martin Fowle表示DSL是一个表达性限制很强的语言,在这方面CSS是非常好的例子。
DSL还有一个特点,就是自己可以确定做什么图像,如果用DSL的话,会给你一种特别的图像,它的目标是非常明确的。另一个就是External DSL API,经常探讨这两种之间的同异,在现在的语言当中,的确在External DSL和API之间有一定的界定,其实就是一系列API代码。
但是DSL到底是什么样的呢?和其他语言之间有什么区别呢?我们可以从中获得什么样的收益呢?
DSL首先能够提高生产力,作为程序员,我们希望能够看到这个代码就立刻理解,如果自己看到代码之后都觉得非常疑惑的话,这个过程就会非常慢,DSL至少是清晰、易读的,会提高生产率和工作效率;
第二个优点就是使用DSL可以更好的和相关人员进行沟通,其实这个好处很难实现,但是如果能够实现的话是非常强有利的,软件开发时候最困难的一点就是软件使用者和开发者之间的沟通,我们如果能够使用DSL的话,就可以帮助实现二者的沟通。
Martin Fowler
介绍:
ThoughtWorks首席科学家。自上世纪80年代中期起,他就开始从事面向对象开发方面的工作。他擅长在商业信息系统中加入面向对象的思想。时至21世纪,他又在UML推广普及、领域建模、企业应用开发和敏捷方法等方面建树卓著,被誉为“软件开发教父”。他的著作包括《重构-改善既有代码的设计》,《UML精粹:标准对象建模语言简明指南》,《分析模式:可重用的对象模型》,《规划极限编程》和《企业应用架构模式》等等。