Martin Fowler来上海,以及Ruby的新功用
程序员文章站
2022-07-05 21:50:53
...
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的。这又是另一个话题了。。。
收获之二,下回分解。
上一篇: 技术人员的发展阶段
下一篇: 【6.29】Eclipse的一些快捷操作