欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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的。这又是另一个话题了。。。
 
收获之二,下回分解。
 
ruby     人物  

同行  
Martin Fowler来上海,以及Ruby的新功用
            
    
    博客分类: ruby RubyVBAOfficeVBVB.NET Martin Fowler来上海,以及Ruby的新功用
            
    
    博客分类: ruby RubyVBAOfficeVBVB.NET