锁定老帖子 主题:看《初学ROR的疑惑》所产生的疑惑
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-19
在论坛里看了daquan198163所写的《初学ROR的疑惑》这篇文章,robbin在回复中给了详细的解答,可是看完解答之后,我也产生了一些疑惑,在此想问问。 在robbin所给出的解答当中,更多的是阐述rails的好处,然而大家都知道,rails只是一种用来快速开发的框架,而ruby之所以如此火红,大部分原因是因为rails,这点不可否认,但是对于ror的未来,我始终有所怀疑,既然rails是框架,那当其他语言实现了类似的框架之后(现在已经有类似的框架,但仍然未成熟),ror的未来又如何呢?目前ror的优势主要在于快人一步,而ruby语言本身,在语言性能上却是不及其他语言,也许当ruby2.0正式出版后,通过YARV可能对性能有一个很大的提升,但是相信也仅仅是和其他动态语言相比,与JAVA之类的静态语言可能仍然有差距。那当JAVA出现了一个比rails更完善的框架的时候,ror又该如何呢?在该文章的回复中,robbin说过“由于编程语言内在差异,Java再简化也简化不到rails的程度。”,但是你不要忘记,正因为动态语言 具有JAVA所没有的优势,JAVA在新的版本中也已经整合了动态语言,这个问题在未来也许不再是问题,而且相信会比单独使用动态语言在性能上有更好的表现。 其实我个人并不排斥ruby,而且我更想学ruby,但是我认为ruby这些动态语言的未来,相信都不再是单枪匹马的出现在系统当中,正如robbin在《回复ozzzzzz的“java将死”》当中说的(两个观点都是robbin写的,让我有点不知道该如何表示了,一边在反驳robbin一边又赞成robbin,呵呵,糊涂): “我和ozzzzzz都认为Sun的管理层和技术层意见是有分歧 的。Sun现在的CEO并不是Sun起家的创始人,对Java语言没有那么纯洁的怀旧感情。因此Sun管理层现在一系列动作都在表明Sun在把Java更加平台化,以提供ruby,groovy,javascript等脚本语言支持。未来Java会成为一个基础运行平台,上面可以跑各种脚本语言。” 我想这才是动态语言未来的真正出路,而java的未来也在此一览无余,我个人认为老是用java和ruby比较不太恰当,这两种语言更应该相辅相成才是正道。我的看法可能不够深思熟虑,请各位一二。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-02-19
一、做web应用,ruby没有性能问题
这一点我其实反复说过好多遍,而且论坛有很多帖子讨论这个问题,不想再重复了。做web应用,尤其是OLTP类型的应用,你用Java做,还是PHP,还是ruby,性能上没有什么区别,考虑到系统的水平扩展能力,ruby还要好于Java,从这一点来说,ruby比Java性能更好。 二、在Java平台提供ruby支持,和ruby on rails本身没有冲突的地方 在Java平台运行ruby,真正能够得到的好处是什么?性能的提升?当然不是,是丰富的第三方Java类库的支持。但是有没有损失呢?也有,ruby的C类库支持就没有了,例如RMagic你就跑不了。 三、Sun公司拓展JVM平台语言支持,和ruby on rails的目标并不冲突。Sun公司在未来的Java版本中会修改字节码,也会给JVM添加新的指令集,目标就是更好的支持脚本语言。 四、对于程序员来说,你写好的ruby代码,在RVM上面跑也行,在JVM上面跑也行,你又不需要修改代码,有什么好担心的?JVM越是支持ruby,ruby就越被使用在更多的场合?这难道不是一件好事?我想不明白我观点有什么矛盾的地方? 五、ruby on rails会不会被取代,对你来说真的那么重要吗? 我刚毕业的时候工作语言是PowerBuilder,我当时用着PB就知道他迟早会被取代,那又如何?难道我应该8年来死抱着PB不放?或者拒绝使用PB,等着被公司炒鱿鱼?我2000年操着PHP写web页面的时候,就知道PHP这玩意将来肯定要被JSP取代,那又如何?那我是不是就应该不学不用PHP了?等着失业阿?有哪种编程语言,哪种应用框架不会被取代? |
|
返回顶楼 | |
发表时间:2007-02-19
我并没有认为ROR最终会被取代,而我的观点只是认为我们不应该去争论到底哪种语言更好,我只是认为我们应该站在更宽广的视觉上来看待这些语言,我之所以学习RUBY也是因为我并不认为RUBY会被取代,而是我认为RUBY对于JAVA来说帮助更大于竞争,我更愿意看到两者相辅相成,而非是一天到晚的出现不同阵营之间无休止的争论
|
|
返回顶楼 | |
发表时间:2007-02-19
我不认为java的平台化趋势会缓解java和ruby的语言战争。
首先第一点,从根本上上java是基于栈的语言,这一点和RVM还是有所不同。而ruby真的运行在java上的时候,其原先所具有的一些优势,比如并行处理和线程简单,是否也能无缝的链接现在还看不到前景。我怀疑最后情况会成为一场虚拟化的虚拟游戏。而就ruby来说,面对最新的并行编程的潮流,很可能会推出新的RVM改造,这个方面java还难于琢磨。当然ruby社区的行动是否迅速是前提,至少他们现在落后了。因此从这个方面发生ruby和java的冲突目前还没有开始。 第二,JVM的封闭和RVM的公开是另外一个潜在的问题。实际上这一点和上一点是有所联系的。当然RVM社区并没有PYTHON社区那么多kacker行为,但是这只是目前的情况,明天用的人多了,说不定就变了。当然你要是放弃c库,就如同rubbin说的,我想这不会是问题。不过jython出现很久了,我没有看到前途就真的那么好。不过也可能是python社区的人习惯于更多的简单类库,而不是java那些严密得罗嗦的库。 第三,ruby和java的哲学思想不同。java可以是说精通语言的大师精心设计的静态语言学术范本,ruby则是一个不同被重构着的产业现象。如果说相辅相成,java应该去借鉴的应该是OZ,而不是ruby。因此争吵是正常的,有的时候更多的争吵还是来自哲学而不是技术。 java在转身,我并不是否认java成功转身的可能性。但是java本身有许多的问题要解决,否则也就不用转身了。现在真正的问题其实在于java发展的方向是现在的ruby,还是未来的Concurrent语言。java这个转身的时机究竟对不对现在也是要看的另外一个问题。当然作为程序员来说,最有利的是java成为cobol后最大的遗留系统的统治语言。 |
|
返回顶楼 | |
发表时间:2007-02-19
“当然作为程序员来说,最有利的是java成为cobol后最大的遗留系统的统治语言。”呵呵,这句话有点悲观过头了吧,不管如何,我们做应用的还是应该以实际应用为主,我不太喜欢参与这些争论,我应该是个比较中庸的人吧,对于我来说用得上才是最实际,我学ruby也仅仅是因为自己爱好,现在主要的开发还是用JAVA,争论那么多也没用,至少目前实际项目中也无法用到。
|
|
返回顶楼 | |
发表时间:2007-02-21
技术的革新是在造福勤奋的程序员,有什么好担心的。
|
|
返回顶楼 | |
发表时间:2007-02-21
calmness 写道 “当然作为程序员来说,最有利的是java成为cobol后最大的遗留系统的统治语言。”呵呵,这句话有点悲观过头了吧,不管如何,我们做应用的还是应该以实际应用为主,我不太喜欢参与这些争论,我应该是个比较中庸的人吧,对于我来说用得上才是最实际,我学ruby也仅仅是因为自己爱好,现在主要的开发还是用JAVA,争论那么多也没用,至少目前实际项目中也无法用到。
我不是悲观,而是阐述一个容易被忽略的事实——什么样的语言能力才能给程序员最大的钱途。 其实一个以前是主流的语言的程序员,才是最容易找到高收入和稳定工作的人。别的不说ada,cobol,Fortran 这个三个曾经的热门语言,现在的就业环境就比java好的多,收入也高的多。而我们每次争论语言的时候,一些人总是害怕他们现在学的东西过时。不用问他们一定以为过时的就没有人用了,工作也不好找了。但是事实恰恰相反啊。如果只是以编程为一种谋生的手段,那么这些过时的语言要比流行的和将要流行的语言更好。什么才是最大的中庸呢?这才是最大的中庸。而最可怜的人其实才是那些以应用为指导的,也就是赶时髦的人,他们只能吃别人的剩饭,进行最激烈的竞争。 因此要是想获得一个好的钱途,要么就要走在潮头前面来引导潮流,要么就跟在潮头后面收拢溃败的残部。当然这两头都是少数人,而往往这两部分人又都是是一群人。 |
|
返回顶楼 | |
发表时间:2007-02-22
正所谓物以稀为贵,主流语言虽然用得多,但是相关人才也多,待遇取决于供求关系,供过于求自然就低,相反则高。但是这和语言本身未来的发展却不是正向的,正如你所说,它们是遗留系统的需要,这种需要只会越来越少,很少的机会会有越来越多的情况出现。
|
|
返回顶楼 | |
发表时间:2007-02-22
引用 也许当 ruby2.0正式出版后,通过YARV可能对性能有一个很大的提升,但是相信也仅仅是和其他动态语言相比,与JAVA之类的静态语言可能仍然有差距。 编译型Ruby慢过Java这样一个假设是没有任何理由的。如果大家都是编译语言,性能的差异应该只是受具体的实现影响。目前编译型Ruby还很不成熟,自然不能和Java比性能,但是这条路不会太长。 引用 那当JAVA出现了一个比rails更完善的框架的时候,ror又该如何呢?在该文章的回复中,robbin说过“由于编程语言内在差异,Java再简化也简化不到rails的程度。”,但是你不要忘记,正因为动态语言具有JAVA所没有的优势,JAVA在新的版本中也已经整合了动态语言,这个问题在未来也许不再是问题,而且相信会比单独使用动态语言在性能上有更好的表现。 且不说用Java实现Rails的可能性,即使能用Java实现一个类似rails的框架,在这个框架之上写程序还是得用Java。写应用这一步用Java怎么赢过用Ruby? Java的对动态语言的支持实际上相当于一个解释器的接口。用C去编译或者解释Ruby难道会慢过用Java去解释Ruby?“相信会比单独使用动态语言在性能上有更好的表现”实在是很盲目的“相信”。 引用 “我和ozzzzzz都认为Sun的管理层和技术层意见是有分歧 的。Sun现在的CEO并不是Sun起家的创始人,对Java语言没有那么纯洁的怀旧感情。因此Sun管理层现在一系列动作都在表明Sun在把Java更加平台化,以提供ruby,groovy,javascript等脚本语言支持。未来Java会成为一个基础运行平台,上面可以跑各种脚本语言。” 我想这才是动态语言未来的真正出路,而java的未来也在此一览无余 “这才是动态语言未来的真正出路”,言下之意似乎如果Java不平台化动态语言就没有真正出路? Ruby一路走来,它是独立的,完整的。虽然现在不够流行,但发展很快是有目共睹的。你怎么就看到Ruby没有Java的支持就没与出路? 我觉得你有的不是疑惑,而是太多太多没有理由的“相信”。 |
|
返回顶楼 | |
发表时间:2007-02-22
calmness 写道 正所谓物以稀为贵,主流语言虽然用得多,但是相关人才也多,待遇取决于供求关系,供过于求自然就低,相反则高。但是这和语言本身未来的发展却不是正向的,正如你所说,它们是遗留系统的需要,这种需要只会越来越少,很少的机会会有越来越多的情况出现。
至少从目前的状况来看,遗留系统的存在一个逐渐增多的趋势。分析原因首先是硬件的更新,带来了新的平台转移的工作;SOA的兴起,带来了旧有系统的从新认识;新的BRP流行,带来了更多的系统改造而不是系统再造。特别是ada程序最近有了比2000年的时候更多的需求,当然这里不排除战争的因素。 而另外一个比较有意思的情况是,新的流行趋势(比如ruby和python,当然如果算上oz就更加明显)是将旧有的概念进行新的发扬(比如文档化代码就来自于ada)。同时新的面向语言的编程和DSL,造成了对于语言风格的新喜好。而实际上基于lisp的格调以及shell的方式是最近的趋势,这和c语言的灵活于随意是大相径庭的。不管你喜欢不喜欢,java的风格已经不是流行的了。我认为这其中的原因在于使用java这样的方式来描述业务需求是罗嗦而臃肿的。当然并不是优美的强大的就会流行,比如oz就很少有人知道。 |
|
返回顶楼 | |