`
floating
  • 浏览: 80758 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

php,rails和java的有趣比较

阅读更多
原文来自:
http://blog.thinkphp.de/archives/170-Keynote-of-Tim-Bray-some-interesting-comparison-between-PHP,-Rails-and-Java.html
觉得很有趣。首先有趣的是作者的身份,Tim Bray是sun公司负责web技术的主管,但是在比较中丝毫看不出作者对Java偏袒;其次是作者的结论,正如在回帖中有人提及的那样,“Java赢在开发工具,却输在开发效率”。这可真有是个绝妙的讽刺!第三点是这个贴子在原出处和TSS上都得到了激烈的讨论。看来随着RoR的出现和逐渐成熟,一次类似当年Java出现时的语言优劣的争执又将无可避免的上演了。
我们自己应该以一个什么样的态度来迎接这次变革呢?其实归根结底,希望用某种编程语言来大幅度的降低软件开发的复杂度是不切实际的。动态语言在灵活性、初期的开发效率(之所以强调初期,因为个人认为动态语言的灵活性在提高开发效率的同时会弱化采用工具或者其他控制手段保证代码质量的可能。)有着先天的优势;但是像Java或者C#这样强类型的准静态语言(Java和C#都已经并且将越来越多的加入很多有意义的动态语言的特征,比如Java6对脚本语言的支持)在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势。
记得七八年前,自己开始从一个C++的熟练使用者向Java语言迁移时,刚开始的确对Java语言的简单(比起C++要命的灵活性)很欣赏,因为在一个大型项目里最重要的是代码的健壮性。但是随着Java的越来越成熟,使得Java越来越复杂,而且和Java相关的很多概念也越来越超越Java语言本身。这无疑大大的增加了学习Java的成本。
再来看RoR,的确非常轻盈和简单。这得益于它对动态语言和OO特性的完美结合。但是个人认为纯粹技术上的优雅不一定会换来商业上的成功。对于软件工业来说,最重要的还是分解业务逻辑的复杂度和不确定性。毕竟,正如我的一个同事所说的那样,“无论用任何语言,初期的开发成本我们还是投入的起的。”呵呵,据他说,他经历的项目在初期的开发上占的成本大概只占到整个项目开发成本的1/6到1/5。
注:初期开发成本,是指一个项目中,最初完成开发人员视角的系统功能时所花费的成本。
分享到:
评论
62 楼 dongbin 2006-12-07  
引用
项目的规模大小,环境的不同,水平的高低都能决定采用哪个写代码.3个东西在应用领域来说有些地方几乎能够通用,但有些地方不能.而且,能够通用的的地方却又各有各的优点,各有各的缺点.没有什么太多好谈的.


大哥,你这个话跟没说一样啊。莫非真的“没有什么太多好谈的”?
61 楼 icefire 2006-12-06  
只要想做,那总是会有办法的!
所谓无法胜任,只是暂时现象!
60 楼 RyanPoy 2006-12-06  
项目的规模大小,环境的不同,水平的高低都能决定采用哪个写代码.3个东西在应用领域来说有些地方几乎能够通用,但有些地方不能.而且,能够通用的的地方却又各有各的优点,各有各的缺点.没有什么太多好谈的.反正,目前主修java,副修ruby.毕竟,个人还是很看好ruby的.
59 楼 dwangel 2006-11-17  
axgle 写道
dwangel 写道
aardvark 写道
哦,另外还有个我极不理解的东西,因为不太清楚PHP,没好问他.哪位熟悉PHP的能不能解答一下?Tim认为PHP的伸缩能力远远比Ruby和Java高,能说说您怎么理解的吗?

我觉得php的二进制扩展会比较方便。

君不见,windows下的php里,可以有n多的 dll可选?

windows下的php里,可以有n多的dll,部分列表可参见:
http://pecl4win.php.net/list.php
谢谢

嗯,很多库linux也有的。 一般都是两套,因为系统不同,所需要的支持库不同。

想想,扩展一个库,然后php里可以直接调用里面的函数。
58 楼 xiaoyu 2006-11-17  
PHP,还不如说写C/C++(我公司大部的PHP下面都是C/C++)
57 楼 axgle 2006-11-15  
dwangel 写道
aardvark 写道
哦,另外还有个我极不理解的东西,因为不太清楚PHP,没好问他.哪位熟悉PHP的能不能解答一下?Tim认为PHP的伸缩能力远远比Ruby和Java高,能说说您怎么理解的吗?

我觉得php的二进制扩展会比较方便。

君不见,windows下的php里,可以有n多的 dll可选?

windows下的php里,可以有n多的dll,部分列表可参见:
http://pecl4win.php.net/list.php
谢谢
56 楼 dwangel 2006-11-15  
aardvark 写道
哦,另外还有个我极不理解的东西,因为不太清楚PHP,没好问他.哪位熟悉PHP的能不能解答一下?Tim认为PHP的伸缩能力远远比Ruby和Java高,能说说您怎么理解的吗?

我觉得php的二进制扩展会比较方便。

君不见,windows下的php里,可以有n多的 dll可选?
55 楼 dwangel 2006-11-15  
aardvark 写道
看到这个帖子我就给Tim去了封email.可能我太尖刻了,人家没理我,吼吼..

他的图上ruby的dev speed看起来大约是java的2倍.就我自己的经验来说,web centric的东西ruby的速度至少是5倍.如果有复杂的业务逻辑就不好比较了,但是那样的话也就超出了web开发这个主题.我问他的数字是怎么得来的.

再就是他把dev tool和其他三个并列.其他三个都是result oriented.只要我开发速度好,我为什么要在意开发工具呢?开发工具和其他三个逻辑上不是并列的.我问他为啥要把他们并列...

sigh..有些个老外特擅长把不能量化的东西装模作样地量化,做些个漂亮的图表唬人.偏偏在很多公司这一套特吃得开.我以前的某同事,做出来的程序里面有个utility class,长1万多行,里面全是静态method.这位达人后来就去了Tim的公司,还是个挺senior的职位.sigh...

开发工具对开发速度影响很大的。

自己的程序,自动完成可能不需要。但是java开发中经常用到第三方库,这种功能就很方便。
eclipse还可以提示javadoc。
54 楼 aardvark 2006-11-15  
哦,另外还有个我极不理解的东西,因为不太清楚PHP,没好问他.哪位熟悉PHP的能不能解答一下?Tim认为PHP的伸缩能力远远比Ruby和Java高,能说说您怎么理解的吗?
53 楼 aardvark 2006-11-15  
看到这个帖子我就给Tim去了封email.可能我太尖刻了,人家没理我,吼吼..

他的图上ruby的dev speed看起来大约是java的2倍.就我自己的经验来说,web centric的东西ruby的速度至少是5倍.如果有复杂的业务逻辑就不好比较了,但是那样的话也就超出了web开发这个主题.我问他的数字是怎么得来的.

再就是他把dev tool和其他三个并列.其他三个都是result oriented.只要我开发速度好,我为什么要在意开发工具呢?开发工具和其他三个逻辑上不是并列的.我问他为啥要把他们并列...

sigh..有些个老外特擅长把不能量化的东西装模作样地量化,做些个漂亮的图表唬人.偏偏在很多公司这一套特吃得开.我以前的某同事,做出来的程序里面有个utility class,长1万多行,里面全是静态method.这位达人后来就去了Tim的公司,还是个挺senior的职位.sigh...
52 楼 floating 2006-11-15  
dongbin 写道
引用
我倒是觉得RoR实在有点太火爆了,让人有点虚火旺盛的感觉


这算是论点么?还是论据?恕我直言,这个帖子是讨论技术还是讨论中医?



呵呵,dongbin同学怎么火气这么大?我想我说的意思大概还算比较容易理解吧,这既不是论点,也不是论据,只是个人的感觉。

说点严肃的,既然坛子里有这么多RoR的忠实拥趸,不如谁把他用RoR开发一个比较复杂的系统的经验贴出来?最好有比较多的开发人员参与,这样能检查RoR在一个大型项目中的能力。
51 楼 dongbin 2006-11-15  
引用
我倒是觉得RoR实在有点太火爆了,让人有点虚火旺盛的感觉


这算是论点么?还是论据?恕我直言,这个帖子是讨论技术还是讨论中医?

50 楼 zt371 2006-11-15  
脚本语言在快速开发和入手难度上有着java不能比拟的优势,所以很适合在生存时间短的项目中使用。
49 楼 floating 2006-11-15  
cookoo 写道

你已经说你笔误两次了。。。以后发完帖子最好再检查一遍。

说的中肯,接受。吼吼。
cookoo 写道

关键是你对任何一个新技术都应该在了解实践之后再有自己的评价,这样才能引导出有价值的讨论。

不知道cookoo兄何处此言,我最近一段时间一直在关注和学习ruby,所以才会发这个帖子。的确,我还没有用RoR或者ruby做过什么实际的工作,但是我想目前国内用RoR做实际的商业项目的还不多吧?

我倒是觉得RoR实在有点太火爆了,让人有点虚火旺盛的感觉。发这个帖子的本意只是希望大家能有一个冷静的思考。RoR已经取得的很大的成功,但是真的会成为取代Java的语言吗?

回到这次讨论的主旨,RoR究竟适合不适合企业应用?究竟适合不适合开发具有复杂业务逻辑的系统?我仍然持怀疑态度的。
48 楼 cookoo 2006-11-15  
floating 写道
cookoo 写道

动态语言相对的是静态语言,不是强类型语言,python/ruby都是强类型语言,不存在类型安全问题。

这里是笔误,顺手写错了。是想说静态语言和动态语言的适用场合不同。比如新浪那样的大型网站(高并发、海量信息,但是访问数据的模式相对简单)我也会倾向于使用动态语言来完成。但同时我想有很多人和我一样从事的工作是利用web的形式开发一个业务系统,而不是开发网站类型的系统,对于这类的应用,我还是比较担心ruby到底能不能胜任,我以前用php开发过一个规模较大的系统,效果比较差。

cookoo 写道

语言都是工具,框架也是,什么好用用什么,没有什么救世主。大家只不过指出一些你帖子中的不妥罢了。

大的观念上有什么不妥之处?还请cookoo不吝指出。我听到cookoo的声音多是在纠正某些错误或者说一些神奇的观点(比如多次提到php是适合用来开发企业级应用的语言)。我不知道cookoo兄是否使用过Java进行比较复杂的工作,所以对你的某些说法也不太关注。相反我相信robbin的一些判断,因为他的Java经验是可靠的,呵呵。目前我的想法是先用用ruby做一些比较零碎的工作,体验一些ruby的特点了之后再做判断。

另,昨天晚上看凤凰卫视上余秋雨讲中国人普遍缺乏证伪的观念,颇有感触。证伪,其目的是为了更好的了解真相,而不是为了否定什么。比如这次讨论,我希望带给大家的是抱着一定的冷静去实践ruby,而不是强说它好,或者它不好。

你已经说你笔误两次了。。。以后发完帖子最好再检查一遍。

我可没说过Php适合开发企业级应用,Perl和Cobol也不适合,但是都已经有大量的应用在跑在维护并整合成为企业系统的一部分,所以Oracle也不得不承认并支持(参见OTN的Php板块)。

你关注不关注我无关紧要,Javaeye也没几个人认识我。关键是你对任何一个新技术都应该在了解实践之后再有自己的评价,这样才能引导出有价值的讨论。

47 楼 dongbin 2006-11-14  
floating 写道
Julien 写道

floating你把问题的焦点放到软件工业上面的号召力去了,而这个讨论的标题是语言比较,罗宾和大家也是从语言比较,对开发者的感受的方面来探讨的,这就是为什么这个讨论串这么别扭的原因。
所以不存在证伪问题,我觉得其实是你过于务虚的问题。

语言是为软件工业服务的啊。就像白话文和文言文一样,我想没有人会否认文言文比白话文精炼、优美。但是我想也不会有多少人会推荐大众使用文言文。


这么牵强的类比亏你也想的出来。这让我想起了林德璋教授“UP是正楷,XP是草书,先用XP再用UP就会乱套。”这句话。

类比扯不到一块去,就是忽悠!
46 楼 dwangel 2006-11-14  
应该说编程语言越来越向普通会话语言靠拢,是趋势。
45 楼 floating 2006-11-14  
Julien 写道

floating你把问题的焦点放到软件工业上面的号召力去了,而这个讨论的标题是语言比较,罗宾和大家也是从语言比较,对开发者的感受的方面来探讨的,这就是为什么这个讨论串这么别扭的原因。
所以不存在证伪问题,我觉得其实是你过于务虚的问题。

语言是为软件工业服务的啊。就像白话文和文言文一样,我想没有人会否认文言文比白话文精炼、优美。但是我想也不会有多少人会推荐大众使用文言文。
44 楼 Julien 2006-11-14  
floating你把问题的焦点放到软件工业上面的号召力去了,而这个讨论的标题是语言比较,罗宾和大家也是从语言比较,对开发者的感受的方面来探讨的,这就是为什么这个讨论串这么别扭的原因。
所以不存在证伪问题,我觉得其实是你过于务虚的问题。
43 楼 floating 2006-11-14  
cookoo 写道

动态语言相对的是静态语言,不是强类型语言,python/ruby都是强类型语言,不存在类型安全问题。

这里是笔误,顺手写错了。是想说静态语言和动态语言的适用场合不同。比如新浪那样的大型网站(高并发、海量信息,但是访问数据的模式相对简单)我也会倾向于使用动态语言来完成。但同时我想有很多人和我一样从事的工作是利用web的形式开发一个业务系统,而不是开发网站类型的系统,对于这类的应用,我还是比较担心ruby到底能不能胜任,我以前用php开发过一个规模较大的系统,效果比较差。

cookoo 写道

语言都是工具,框架也是,什么好用用什么,没有什么救世主。大家只不过指出一些你帖子中的不妥罢了。

大的观念上有什么不妥之处?还请cookoo不吝指出。我听到cookoo的声音多是在纠正某些错误或者说一些神奇的观点(比如多次提到php是适合用来开发企业级应用的语言)。我不知道cookoo兄是否使用过Java进行比较复杂的工作,所以对你的某些说法也不太关注。相反我相信robbin的一些判断,因为他的Java经验是可靠的,呵呵。目前我的想法是先用用ruby做一些比较零碎的工作,体验一些ruby的特点了之后再做判断。

另,昨天晚上看凤凰卫视上余秋雨讲中国人普遍缺乏证伪的观念,颇有感触。证伪,其目的是为了更好的了解真相,而不是为了否定什么。比如这次讨论,我希望带给大家的是抱着一定的冷静去实践ruby,而不是强说它好,或者它不好。

相关推荐

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    JAVA上百实例源码以及开源项目源代码

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    用PHP和XML进行iPhone开发教程

    iPhone的软件开发包(SDK)基于标准的Dynamic HTML (DHTML),这意味着开发者可以利用他们熟悉的前端技术(如HTML、CSS、Ajax)以及后端技术(如PHP、Ruby on Rails、Java)来开发应用。 #### 三、案例分析:构建...

    Laragon:适用于现代应用程序的强大工具:Django,Rails,Laravel,Node,Go,Java-开源

    Laragon使编码更有趣,更容易。 即时设置-极其快速,轻巧,直观且功能强大的通用开发环境,可用于创建... 在MySQL,PostgreSQL,MongoDB,Memcached,Redis,PHP,Ruby,Python,Node.js和Java上可移植,可靠且零操作。

    programming-challenges:我觉得有趣的编程挑战

    "programming-challenges:我觉得有趣的编程挑战"这个主题集合了一些吸引人的编程任务,旨在锻炼和提升程序员的技能。这些挑战覆盖了多种编程语言,如Java、Python、JavaScript、C++、Ruby以及PHP,这意味着你可以...

    HeadFirst全集

    8. **Rails**: 教授Ruby on Rails框架的基础和高级功能。 9. **Python**: 引导读者掌握Python编程语言的基础和进阶知识。 10. **PMP**: 提供项目管理专业资格认证(PMP)备考指南。 11. **物理**: 结合IT背景介绍物理...

    表白源码-我想你需要.7z

    1. **编程语言和框架**:这些表白源码可能涉及到常见的编程语言,如HTML、CSS、JavaScript、Python、Java或PHP等。它们也可能利用了各种前端或后端框架,如Bootstrap、React、Vue.js、Django、Ruby on Rails等,以...

Global site tag (gtag.js) - Google Analytics