|
锁定老贴子 主题:关于ROR的效率
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2006-11-06
本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。
而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
还没有正式的用过。粗略看了一下先。
要论效率,使用php/asp的效率并不比ror差多少。只是换来这个效率的代价是什么? 说起来,如果有一定的技术积累,整合出一套自己的j2ee开发框架,开发效率不见得比ror差。当业务系统非常复杂,类似CRM、ERP之类,我们还能感受到ROR的高效率吗? 最让我不放心的就是ruby的语法,灵活是足够灵活,也足够强大,就是感觉不够标准和规则化,随意性太强。可能是我个人的浅见,对过分依赖XML的taglib、脚本语言这些不方便语法检查的东西,非常之不喜欢。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
together 写道 还没有正式的用过。粗略看了一下先。
要论效率,使用php/asp的效率并不比ror差多少。只是换来这个效率的代价是什么? 说起来,如果有一定的技术积累,整合出一套自己的j2ee开发框架,开发效率不见得比ror差。当业务系统非常复杂,类似CRM、ERP之类,我们还能感受到ROR的高效率吗? 最让我不放心的就是ruby的语法,灵活是足够灵活,也足够强大,就是感觉不够标准和规则化,随意性太强。可能是我个人的浅见,对过分依赖XML的taglib、脚本语言这些不方便语法检查的东西,非常之不喜欢。 授权还是督导? 关于语言的灵活性利弊,这篇文章讲得很好。 对于ROR是否效率高,任何思想家都说不清楚。葡萄熟不熟尝了才知道,想一辈子也没用。 我既做过“整合出一套自己的j2ee开发框架”的项目,也用ROR做过东西,所以我知道。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
together 写道 还没有正式的用过。粗略看了一下先。
要论效率,使用php/asp的效率并不比ror差多少。只是换来这个效率的代价是什么? 说起来,如果有一定的技术积累,整合出一套自己的j2ee开发框架,开发效率不见得比ror差。当业务系统非常复杂,类似CRM、ERP之类,我们还能感受到ROR的高效率吗? 最让我不放心的就是ruby的语法,灵活是足够灵活,也足够强大,就是感觉不够标准和规则化,随意性太强。可能是我个人的浅见,对过分依赖XML的taglib、脚本语言这些不方便语法检查的东西,非常之不喜欢。 反对。 作为一个有过1.5年PHP开发web,以及3年维护PHP架设的论坛的我,可以负责任的说,RoR的开发效率是PHP不能比的。 自己整合一套Java开发框架,开发效率比RoR也会差很多倍,我自己撺的框架效率已经比什么AppFuse简化太多了,方便太多了,不过没有办法和RoR比。 非常复杂的CRM,ERP系统好像也就是SAP,Oracle等几个公司在搞吧?而且SAP的好像还不是Java开发的,他们用的是ABAP4吧。再说了,能有几个超级复杂的ERP,CRM项目?拿这个做例子,不具有普遍性。 那现在spring,hibernate,struts,webwork什么的哪个不是过分依赖XML,哪个JSP不是过分依赖taglib呢?哪个模板不是脚本语言呢?莫非你写JSP都是用Java去写? |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
together 写道 还没有正式的用过。粗略看了一下先。
要论效率,使用php/asp的效率并不比ror差多少。只是换来这个效率的代价是什么? 说起来,如果有一定的技术积累,整合出一套自己的j2ee开发框架,开发效率不见得比ror差。当业务系统非常复杂,类似CRM、ERP之类,我们还能感受到ROR的高效率吗? 最让我不放心的就是ruby的语法,灵活是足够灵活,也足够强大,就是感觉不够标准和规则化,随意性太强。可能是我个人的浅见,对过分依赖XML的taglib、脚本语言这些不方便语法检查的东西,非常之不喜欢。 ROR用过方知好。你没有用过,说的不好听,是没发言权的。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-08
ozzzzzz 写道 本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。
而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。 这是潜力贴啊,虽然我今天很忙,还是忍不住要回贴了。 我在2005年4月就听说RoR了,还看了他那个scaffold的例子,本来我对RoR也是持否定态度的,但是2006年在JavaEye有几个讨论打消了一些我的置疑,后来就开始用RoR了,这些讨论是: http://www.javaeye.com/topic/18675 http://www.javaeye.com/topic/19534 http://www.javaeye.com/topic/20298 RoR的效率肯定要比Java高一个数量级,这确实是事实,比PHP至少也要高好几倍,这也是事实,这一点在这篇文章中不展开了,但是为什么开发效率这么高,我也想谈谈我的看法,当然还很不成熟的看法: 一、主要原因是ruby语言的语法非常强大 我记得庄表伟说过一个观点:“框架是强化的语法”,意思就是说语法比较弱,所以才需要n多框架,如果语法很强,框架就很少。这一点在Java和ruby身上得到了验证。 1、ruby的open class VS Java的AOP,反射、动态代理,字节码增强等技术 JDK1.3开始引入反射,就已经打开了Java这种静态类型语言通往动态类型语法的潘多拉魔盒。随后的动态代理技术,字节码增强技术,静态和动态的AOP技术开始层出不穷,为什么呢?就是需要在程序运行期动态改变对象的行为。但是对于ruby来说是open class的,语法级别上就支持程序运行期修改对象行为,所以Java需要很复杂技术才能实现的功能对于ruby来说就是非常简单的搞定了。 2、ruby的duck typing VS Java的IoC,泛型 Java的IoC不用说了,泛型在库级别也开始广泛使用。IoC就是根据对象行为来进行对象组装,泛型就是在不确定对象行为的情况下确定对象的交互。但是ruby的对象行为是在运行期才确定的,天然就是泛型的,行为不是静态的,所以不需要IoC。 3、ruby的block,closure VS Java的匿名内部类 大家对spring的Template肯定印象很深刻,但是这是ruby标准的用法,所以各种资源释放,异常处理在语法级别上就支持的很好,做起来很简单。 4、ruby的Meta programming VS Java缺乏 method_missing机制大家耳熟能详了,Java没有这么强的Meta programming,很多ruby magic耍不出来。 5、脚本语言 VS 编译语言 这也是一个很大的优势,脚本编程速度确实快。 二、rails框架确实做的很棒 1、full-stack rails是一个概念一致的fullstack框架,不知道为什么,在Java世界目前只有Rife这一个可以和RoR相提并论的fullstack框架,但是Rife的实现并不好(作者从PHP转过来的,和DHH爆发过口水战)。 不过因为底层语法支持的不同,用Java是做不出来RoR框架的。因此也有人用Groovy做Grails,不过这帮人不太争气。 2、CoC 这个不用说了,现在很多Java框架开始吸收这一点 3、为web开发良身打造 web开发需要用到各种技术全部提供,绝对的贴心,如果用Java,这些东西都需要自己集成或者自己实现,省了一大堆麻烦事。 4、开发测试部署快速 这个不说了,Java劣势太明显了 暂时想到就这么多吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
是我说话有问题,认错......
不过确实是缺一个可以检验ror效率的正式商业应用,也好坚定我的信心。我们明年有一个烧钱的系统升级,用户访问量、数据吞吐量都比较大,我准备在主网站上用一用ROR,先学习一阵再看。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-07
ozzzzzz 写道 本来这个星期我该开始讨论软件危机的问题了。但是这几天我忽然发现,ROR这个烫手的东西带给我们不可思议的效率,这个提高的来源究竟是来自何处,是一个目前很少有人讨论过的问题。而如果我们可以搞明白这个原因,我们对于今后技术和方法学发展的方向将有莫大的好处。
而由于我对于这个问题的结论还没有足够的实际例子做证据,因此我就不着急发言了。 关于“效率提高的来源”问题,我的理解就是次要复杂性被ROR降低到了极致。 说的难听一点,不是ROR太聪明,而是我们以前做得蠢事太多了。各种各样的xml, taglib,单元测试困难 ... ... 做过项目的人都知道这些次要复杂性很多情况下真的是要命的。 ROR没有降低软件的内在复杂性,也就是业务问题。但是它把复杂性降低到无限趋近于业务复杂性,也有人称ROR是Web开发的DSL。 而解决业务问题正是人发挥聪明才智的地方,ROR不能代替人,但是它把人从次要复杂性的泥潭之中解救了出来。 |
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
不过ROR毛病一样存在,特别是进入项目后期的时候就很容易体现出来,比如SQL语句的执行次数的问题,还有表名和class名字的映射问题,rhtml中的大量编码的存在。不过这些都被开头的快速给掩盖起来了。
|
|
| 返回顶楼 | |
|
最后更新时间:2006-11-06
jack 写道 不过ROR毛病一样存在,特别是进入项目后期的时候就很容易体现出来,比如SQL语句的执行次数的问题,还有表名和class名字的映射问题,rhtml中的大量编码的存在。不过这些都被开头的快速给掩盖起来了。
这些问题不是编程语言带来的。对于ROR来说其实编码量不大,所以批量查找替换一下也没有什么麻烦的。 |
|
| 返回顶楼 | |












