Rails、Ruby、JAVA前景比較

        在論壇裏看了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比較不太恰當,這兩種語言更應該相輔相成纔是正道。我的看法可能不夠深思熟慮,請各位一二。

======================================

評論    共 27 條  發表評論 

robbin     2007-02-19 12:44
一、做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了?等着失業阿?有哪種編程語言,哪種應用框架不會被取代?

 

calmness     2007-02-19 13:06
我並沒有認爲ROR最終會被取代,而我的觀點只是認爲我們不應該去爭論到底哪種語言更好,我只是認爲我們應該站在更寬廣的視覺上來看待這些語言,我之所以學習Ruby也是因爲我並不認爲Ruby會被取代,而是我認爲Ruby對於JAVA來說幫助更大於競爭,我更願意看到兩者相輔相成,而非是一天到晚的出現不同陣營之間無休止的爭論
 

ozzzzzz     2007-02-19 14:45
我不認爲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後最大的遺留系統的統治語言。
 

calmness     2007-02-19 15:07
“當然作爲程序員來說,最有利的是java成爲cobol後最大的遺留系統的統治語言。”呵呵,這句話有點悲觀過頭了吧,不管如何,我們做應用的還是應該以實際應用爲主,我不太喜歡參與這些爭論,我應該是個比較中庸的人吧,對於我來說用得上纔是最實際,我學Ruby也僅僅是因爲自己愛好,現在主要的開發還是用JAVA,爭論那麼多也沒用,至少目前實際項目中也無法用到。
 

lewisou     2007-02-21 18:28
技術的革新是在造福勤奮的程序員,有什麼好擔心的。
 

ozzzzzz     2007-02-21 20:12

calmness 寫道
“當然作爲程序員來說,最有利的是java成爲cobol後最大的遺留系統的統治語言。”呵呵,這句話有點悲觀過頭了吧,不管如何,我們做應用的還是應該以實際應用爲主,我不太喜歡參與這些爭論,我應該是個比較中庸的人吧,對於我來說用得上纔是最實際,我學Ruby也僅僅是因爲自己愛好,現在主要的開發還是用JAVA,爭論那麼多也沒用,至少目前實際項目中也無法用到。

 

我不是悲觀,而是闡述一個容易被忽略的事實——什麼樣的語言能力才能給程序員最大的錢途
其實一個以前是主流的語言的程序員,纔是最容易找到高收入和穩定工作的人。別的不說ada,cobol,Fortran 這個三個曾經的熱門語言,現在的就業環境就比java好的多,收入也高的多。而我們每次爭論語言的時候,一些人總是害怕他們現在學的東西過時。不用問他們一定以爲過時的就沒有人用了,工作也不好找了。但是事實恰恰相反啊。如果只是以編程爲一種謀生的手段,那麼這些過時的語言要比流行的和將要流行的語言更好。什麼纔是最大的中庸呢?這纔是最大的中庸。而最可憐的人其實才是那些以應用爲指導的,也就是趕時髦的人,他們只能喫別人的剩飯,進行最激烈的競爭。
因此要是想獲得一個好的錢途,要麼就要走在潮頭前面來引導潮流,要麼就跟在潮頭後面收攏潰敗的殘部。當然這兩頭都是少數人,而往往這兩部分人又都是是一羣人。
 

hurricane1026     2007-02-21 20:47

這段話好精彩,程序員應該以錢途爲指引。這樣才能給無論是個人還是整個行業和市場帶來最大的利益。ada和cobol程序員的工資確實很高。
 

calmness     2007-02-22 00:27
正所謂物以稀爲貴,主流語言雖然用得多,但是相關人才也多,待遇取決於供求關係,供過於求自然就低,相反則高。但是這和語言本身未來的發展卻不是正向的,正如你所說,它們是遺留系統的需要,這種需要只會越來越少,很少的機會會有越來越多的情況出現。
 

aardvark     2007-02-22 06:49

引用

也許當 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的支持就沒與出路?

我覺得你有的不是疑惑,而是太多太多沒有理由的“相信”。
 

ozzzzzz     2007-02-22 07:29

calmness 寫道
正所謂物以稀爲貴,主流語言雖然用得多,但是相關人才也多,待遇取決於供求關係,供過於求自然就低,相反則高。但是這和語言本身未來的發展卻不是正向的,正如你所說,它們是遺留系統的需要,這種需要只會越來越少,很少的機會會有越來越多的情況出現。

 

至少從目前的狀況來看,遺留系統的存在一個逐漸增多的趨勢。分析原因首先是硬件的更新,帶來了新的平臺轉移的工作;SOA的興起,帶來了舊有系統的從新認識;新的BRP流行,帶來了更多的系統改造而不是系統再造。特別是ada程序最近有了比2000年的時候更多的需求,當然這裏不排除戰爭的因素。
而另外一個比較有意思的情況是,新的流行趨勢(比如Ruby和python,當然如果算上oz就更加明顯)是將舊有的概念進行新的發揚(比如文檔化代碼就來自於ada)。同時新的面向語言的編程和DSL,造成了對於語言風格的新喜好。而實際上基於lisp的格調以及shell的方式是最近的趨勢,這和c語言的靈活於隨意是大相徑庭的。不管你喜歡不喜歡,java的風格已經不是流行的了。我認爲這其中的原因在於使用java這樣的方式來描述業務需求是羅嗦而臃腫的。當然並不是優美的強大的就會流行,比如oz就很少有人知道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章