Martin Fowler是偶像级的人物。我不说他是我的偶像,因为基督徒是不能崇拜偶像的,Martin也是认真的基督徒,不喜欢人家把他当作偶像,但是我想中国工程师把他称作偶像,也不是把他的光头贴在墙上膜拜,而只是非常崇敬,在这层意义上,Martin Fowler也是我的偶像。
我比较孤陋,了解他时,他已经是眩若晨星了。一篇《
新方法学》,一篇《
设计已死?》,我都中英文对照,英中文对照的读了很多遍。这么说可能有些狂妄:我读着两篇论文的感觉不是醍醐灌顶,而是英雄所见略同,他的思路和见解正合我意。“软件不能按盖大楼的方式做,不能做死”,“唯一不变的是永远变化”,“设计和灵活并重”也是我在读前的观点。他比我牛的地方在于他写得很清楚,当然,能写得清楚,说明认识的清楚。大师毕竟是大师,除了能发现问题,提出方案,更重要的是能实践方案,试验成功,并影响众人。
马大师来上海,虽然活动规格要比北京的小很多,还是让我很兴奋。这次在上海讲得是ruby,我是现场举手调查中接触过ruby者的五分之一。这次演讲着重于科普,然而我这个已经有半瓶醋的ruby爱好者仍然有些收获。
收获之一,是明白了DSL这样东西。DSL,Domain Specific Language,就是为特殊用途而设立的语言。名词解释总要附上例子才能让人明白:比如,makefile用的就是特殊的make语法,只能用来写makefile,不能写程序;sql是为了数据库查询而创立的DSL,只能操作数据库,也不能干别的。DSL的好处是针对性强,效率高;缺点是难学,适用面窄。make语法当年为了工作,学过,也掌握了一些,可是一不用,全忘了。然后Martin就说了,ruby的一个好处,就是建立了一些软件包来替代这些难学高效的DSL,牺牲一些效率,但是让你不用再花精力学一些晦涩的东西。
比如,替代make的rake,可以同样达到make的功能,而语法全是ruby的,除了直观和优雅这两点ruby自带的好处,相对于make,它还可以轻松扩展,因为ruby是正儿八经的编程语言啊。想在里面加点儿xml处理?require 'rexml'就行了。make结束要发个邮件通知?require 'net/smtp'就能做到。如果你愿意,还可以操作底层,调用web service,或者通过cgi模块,跟一个web application结合起来。联想的形象一般般,那句口号还是很不错的——“只要你想!”
sql的ruby替代不多说了。
DSL要摆脱难学少用的困境,以前也做过不少努力。比如PL/SQL尝试扩充sql语言,让他能if/then,能while/loop,能写funtion/procedure,甚至打成package,用场大了不少,但是思路仍然不够open,而且依然难学。第二种尝试,是想Ant这样的,用xml来代替DSL,但其实是换汤不换药,只不过记一大堆语法变成了记一堆tag,并且用途也是受限的,你只能用那些他定义的tag对应的功能。Ant进化到Maven,强大了不少,可以自己用java写plugin了,是个鲤鱼跳龙门的进步。不过你学了rake以后,就知道鲤鱼仙女是什么样的了。
第三类尝试,一定要提一提的,Office VBA。它的用途是Domain Specific的,但是从一开始微软就非常英明地用VB语法来做Macro语言,并且还能让它以VB的方式add references,生命力就大大的强了,甚至有公司专门靠VBA吃饭,做了很多有用的Office插件出来。相比而言,Word Perfect的Macro语言就输了一大截,几乎没人用。
Office VBA是正确的思路,Ruby在DSL上的作为也是相同正确的,更好的是,Ruby是Open Source的。这又是另一个话题了。。。
收获之二,下回分解。
分享到:
相关推荐
《重构——改善既有代码设计》是软件工程领域的一部经典著作,作者Martin Fowler,该书与《设计模式》被并称为软件工程的双雄。《重构》一书的主旨在于向读者展示重构的过程与方法,即通过一系列小的、有步骤的改变...
马丁·福勒(Martin Fowler)在其著作《Domain Specific Languages》中深入探讨了这一主题,该书由Addison-Wesley Professional出版社于2010年9月24日出版。本书提供了关于如何设计、实现和使用DSLs的全面指南,并...
作者Martin Fowler在书中提出了很多实用的建议,比如如何识别重构的时机,以及如何安全地实施重构。他推荐开发人员在添加新功能或者修复bug时,顺便改进代码的结构,从而逐渐提升整个系统的质量。 重构的实施步骤...
在Martin Fowler的方法中,他提倡使用方法调用来构建DSL。例如,我们可以创建一系列方法,每个方法代表DSL中的一个步骤或操作,然后通过方法的调用来描述业务逻辑。这些方法可以返回`this`,以便进行链式调用,形成...
Martin Fowler的《分析模式》是一本在软件工程领域具有深远影响的书籍,尤其是对面向对象分析和设计的实践者。本书首次出版于1996年,是分析模式理论的奠基之作,作者马丁·福勒(Martin Fowler)是国际知名的软件...
Martin Fowler名箸 Patterns of Enterprise Application Architec
《重构 -改善既有代码的设计》是由美国著名软件开发专家Martin Fowler所著,由熊节翻译的一本经典IT著作。这本书深入探讨了重构这一关键的软件工程实践,旨在帮助开发者提升既有代码的质量和可维护性。重构是软件...
### 分析模式-Martin Fowler #### 一、引言与概念模型 《分析模式》是IT界大师Martin Fowler的一部经典著作。本书旨在为复杂的业务分析领域提供一系列实用且易于理解的设计模式,帮助读者更好地理解和解决实际问题...
重构,改善既有代码的设计(中文版,Martin Fowler 著).part03
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)解释重构的原理(principles)和最佳实践...
UML2初学好书-(“UML Distilled”:Martin Fowler)-中英文合辑 EN::(UML Distilled) Third Edition(2003)--CHM格式 , zhTW:(UML 精华第三版) /物件模型语言标准简介---PDF格式 [物件模型语言标准简介初学好书-UML-2...
Martin Fowler指出,演进式设计的核心在于“适应性”,它允许开发者根据实际编程过程中的发现和反馈来调整设计。通过迭代和增量式的开发,设计师可以更好地理解问题域,逐步优化系统结构,提高代码质量。这种方式...
Martin Fowler的Inversion of Control Containers and the Dependency Injection pattern。中文版。 本文中,作者深入探索IOC模式的工作原理,给它一个更能描述其特点的名字——“依赖注入”(Dependency Injection...
### Martin Fowler 控制反转与依赖注入 #### 重要概念与背景 Martin Fowler的文章探讨了Java社区近期关注的一个热点话题:轻量级容器及其背后的模式。这些容器的主要目标是帮助开发者将来自不同项目的组件组装成一...
[作者信息] Martin Fowler [出版机构] Addison-Wesley Professional [出版日期] 1996年10月19日 [图书页数] 384页 [图书语言] 英语 [图书格式] PDF格式 ======================================================= ...
这本书第一章讲得实例在现实中经常碰到,至于后续章节需要慢慢品味,除非你只想做个平庸的程序员!
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们为面向对象软件开发所做的贡献,难以衡量。《重构:改善既有代码的设计》(中文版)解释重构的原理(principles)和最佳实践...
重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。...