自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

30歲的Ruby:單挑Java后,為何再難出頭?

原創(chuàng) 精選
開發(fā) 前端
曾經(jīng),Rails的出現(xiàn)極大地推動了Ruby語言的發(fā)展。在Rails風頭正勁時,即使是最保守的公司也開始考慮采用Ruby,甚至業(yè)界提出過“Ruby將挑戰(zhàn)Java”的言論。

編譯丨千山

如果你在Web開發(fā)領(lǐng)域摸爬滾打了許久,你就會親眼見證眾多語言和框架的興起和衰落。在群星明滅中,Ruby和它的Web應用框架Ruby on Rails就像一顆流星,在爆發(fā)出璀璨光華后又漸漸歸于寥落。

曾經(jīng),Rails的出現(xiàn)極大地推動了Ruby語言的發(fā)展。在Rails風頭正勁時,即使是最保守的公司也開始考慮采用Ruby,甚至業(yè)界提出過“Ruby將挑戰(zhàn)Java”的言論。

但現(xiàn)實是,站在十幾年后的今天回望,Ruby將取代Java的想法似乎很可笑。根據(jù)TIOBE公布的2023年1月編程語言排行榜,Ruby位列第十六,介于MATLAB和Object Pascal之間,同時Java的人氣依舊,排行第四。而且相較Java,Ruby在招聘熱度、市場需求和開發(fā)者關(guān)注度等方面都遠遠落后。

圖片

TIOBE 2023年1月編程語言排行榜,圖源:互聯(lián)網(wǎng)

但是,暫時還是不要把Ruby和某些已經(jīng)“入土”的語言放在一起。盡管Ruby不再占據(jù)主導地位,但在編程語言界仍然有它的一席之地。本文試圖追溯這門語言的興衰,通過一批Ruby程序員之口,解析Ruby為何崛起、又如何從鼎盛期衰落,以及為什么他們認為Ruby仍然有未來。

1、Ruby的光輝歲月:因何偉大

Ruby是一種用于面向?qū)ο缶幊痰慕忉屝阅_本語言,核心優(yōu)勢就是允許開發(fā)者快速構(gòu)建并啟動應用程序,特別是對于前端應用程序,這一點始終未變。

這門語言由松本行弘在1993年創(chuàng)建,1995年正式發(fā)布,基本和Java算是同期。但相比Java的“光環(huán)”,Ruby一直非常低調(diào)。

直到2004年,David Heinemeier Hansson發(fā)布了世界上首個Web MVC框架Ruby on Rails。這個小眾語言開始讓世界為之驚喜。

Ruby的發(fā)展可以說適逢其會。1994年萬維網(wǎng)誕生,十年后,Web 2.0逐漸興起。這期間,Rails的誕生又加速了Ruby的發(fā)展。從2000年開始,Ruby以“黑馬”之姿走出日本,受到全球開發(fā)者的關(guān)注,其受歡迎程度在TIOBE指數(shù)評級中逐漸達到頂峰。當時,不少大型網(wǎng)站,比如Twitter和Groupon都對這門語言青睞有加。

松本行弘曾在接受采訪時如此評價Ruby的“盛世”:“首先是得益于Web的快速發(fā)展,幾乎所有的軟件開發(fā)平臺都在瞄準Web這個領(lǐng)域。也就是說,在Web上能夠開發(fā)的應用變多了,這是一個主要的背景。另外,Ruby的優(yōu)勢在于開發(fā)效率比較高。這兩點結(jié)合起來,我認為就是Ruby on Rails成功的主要原因?!?/p>

歸根結(jié)底,促成Ruby崛起的因素有很多,但離不開這門語言自身的特質(zhì)。

首先,開發(fā)速度快。“Ruby on Rails仍然是小團隊影響大團隊的好方法,”《Programming Ruby 3.2》一書的合著者Noel Rappin說:“從零開始構(gòu)建真正有價值的產(chǎn)品,這仍然是最快的方法之一?!庇绕鋵τ趧?chuàng)業(yè)公司以及最小化可行產(chǎn)品的開發(fā)來說,試錯成本高,任何小小的延誤都可能招致失敗,因此Ruby on Rails就成了一種戰(zhàn)略上的選擇。

再者,使用簡單。由于Ruby語言本身采用大量英語單詞,上手難度低,而且Ruby on Rails的語法簡單明了,程序員只需編寫少量代碼就可以解決復雜的任務。清晰的語法可以讓開發(fā)人員在多個項目之間切換,這讓開發(fā)和維護代碼更為便利。

最后,社區(qū)的支持。強大而又凝聚力的社區(qū)對Ruby的發(fā)展發(fā)揮了巨大作用。Qwoted的首席技術(shù)官Kevin Trowbridge認為,這與語言本身的性質(zhì)有很大關(guān)系?!八撬芯幊陶Z言中最通俗易懂的,易讀易寫,這種理念不但有助于優(yōu)化產(chǎn)品,更能提升開發(fā)人員的生產(chǎn)力和幸福感,這也解釋了為什么它有如此強大的社區(qū)支持?!?/p>

當然編程語言界的競爭向來激烈,Ruby在向前推進的同時,其他語言和框架也沒有停滯不前。甚至隨著時代的發(fā)展,當互聯(lián)網(wǎng)公司逐漸更關(guān)注規(guī)模伸縮等問題時,Ruby開始暴露出可擴展性不佳等缺陷。

2、來自JavaScript和Python的挑戰(zhàn)

“Rails出現(xiàn)在網(wǎng)絡(luò)轉(zhuǎn)型和發(fā)展的風口浪尖,它既受益于這種增長,也推動了這種增長,但它不會是唯一成功的個例。這是一個既定的結(jié)論?!睆?006年開始成為Ruby開發(fā)人員的Matthew Boeh這樣描述。

在他看來,某種程度上甚至可以說“Ruby是其自身成功的受害者”。

“因為它的社區(qū)是近年來命令行復興的主要驅(qū)動力。在本世紀初,它向那些從未聽說過Lisp的人介紹了repr驅(qū)動的開發(fā),向那些被Perl的CPAN嚇跑的人介紹了包管理,向Java世界之外的人介紹了測試驅(qū)動的開發(fā)……這些在今天都是習以為常的必需品。盡管這些都不是Ruby的原創(chuàng),但都是Ruby愛好者推廣和使用的?!?/p>

如果說現(xiàn)在有一種語言在Ruby曾經(jīng)統(tǒng)治的領(lǐng)域占據(jù)主導地位,那就是JavaScript。

“隨著JavaScript發(fā)展成為一種全棧語言,工程師們可以用一種語言,甚至一個共享代碼庫來構(gòu)建前端、后端和移動項目,”New Relic開發(fā)總監(jiān)Jemeah Sius說,“Ruby很容易學習,有很高的安全標準,還有一個活躍的社區(qū)。但當有人想到全棧時,他們想到的是JavaScript、Node.js、React或其他他們喜歡的框架?!?/p>

Qwoted的首席技術(shù)官Trowbridge指出,JavaScript之所以能夠填補這一空白,是因為它已經(jīng)從開發(fā)人員曾經(jīng)不屑一顧的語言中得到了改進。事實上,隨著時間的推移,它變得更像Ruby了?!盀g覽器廠商在正規(guī)化、標準化、簡化和增強方面做出了努力,”他說?!八冗^去的JavaScript好太多了?!?/p>

“當前形式的JavaScript生態(tài)系統(tǒng)在2004年是不可想象的——它需要命令行復興和網(wǎng)絡(luò)平臺的起飛,”Boeh補充道?!皬?999年到2009年,整整十年時間才發(fā)布了一個新的JavaScript標準版本。而現(xiàn)在是一年一次?!?/p>

與此同時,Python已經(jīng)主導了當今最熱門的開發(fā)領(lǐng)域之一,人工智能和機器學習。“Python在科學界流行起來,因為他們可以比以往更快地建立模型和算法原型,所以它比Ruby領(lǐng)先了幾年”,Bhardwaj說,“另一方面,Ruby被認為執(zhí)行緩慢,因而沒有得到更多關(guān)注?!?/p>

New Relic的Sius對此表示贊同?!爱斢腥讼氲揭环N多功能語言,可以創(chuàng)建從游戲到VR到AI到ML的所有東西時,每個人都知道Python是明顯的贏家?!?/p>

3、Ruby的衰落

JavaScript和Python能在和Ruby的較量中占據(jù)上風的因素有很多,而且并不局限于語言本身的特性。

Qwoted的Trowbridge說:“Python和Ruby有很多相似處,比如,它們都是動態(tài)的解釋性腳本語言,適合在服務器上使用。它們運行效率不高,所以運行起來很昂貴,但它們都有令人難以置信的靈活性,所以對初學者來說也很友好。”

但當涉及到數(shù)據(jù)科學時,由于TensorFlow和Keras等框架的現(xiàn)成可用性,Python無疑更有優(yōu)勢。Bhardwaj說:“這些框架使程序員更容易構(gòu)建數(shù)據(jù)可視化和編寫機器學習程序?!?/p>

與此同時,JavaScript已經(jīng)產(chǎn)生了數(shù)不勝數(shù)的庫,開發(fā)人員可以輕松下載并適應乎所有目標。其中許多庫都是由社區(qū)成員開發(fā)的,這也推動了其他人的貢獻,就像滾雪球一樣,任何參與開源的人都熟悉這種效應。

在這場博弈中,還有一個不可忽視的大玩家在發(fā)揮著巨大的影響力,那就是主導了TensorFlow發(fā)布的谷歌。

谷歌將Python作為其內(nèi)部腳本語言,同時對提升JavaScript也表現(xiàn)得興趣盎然。Trowbridge認為谷歌使JavaScript比以前更快,內(nèi)存效率更高。與此同時,人們普遍認為Ruby在性能上落后,部分原因是它缺乏類似的企業(yè)贊助商和資源來改進它。

在Ruby曾經(jīng)興盛的一些領(lǐng)域,它還沒有被其他語言所取代。更確切地說,整體環(huán)境已經(jīng)發(fā)生了變化,所以這些利基市場已經(jīng)不再被識別。Boeh表示:“我最初是為一家本地創(chuàng)意機構(gòu)的客戶制作營銷網(wǎng)站和在線商店,我認為人們很容易忽視網(wǎng)絡(luò)開發(fā)世界的底層已經(jīng)被自動化取代了。幾年之內(nèi),整個業(yè)務就不復存在了——當他們可以用WordPress或Shopify做得相當不錯時,沒有人對這樣的定制網(wǎng)站感興趣?!?/p>

4、還有未來

2023年,Ruby已經(jīng)30歲了。相較Pascal、COBOL乃至Perl這些語言來說,Ruby的情況要好一些,但衰落之勢似乎不可逆轉(zhuǎn)。就像遠行之船,固然沒有下沉,但航速還是越來越慢。

Ruby到底還有沒有未來?面對這一質(zhì)疑,一眾開發(fā)人員還是表現(xiàn)樂觀。

其中,電子商務巨頭Shopify是最大的原因之一,因為Ruby on Rails是它的主要開發(fā)平臺。Bhardwaj說:“Ruby仍然是開發(fā)電子商務應用程序的最佳工具,因為它具有動態(tài)功能和靈活性。你可以通過不同的模塊構(gòu)建應用程序,然后再進行修改。這讓我們更容易更新應用以獲得更多功能?!?/p>

雖然Shopify的運營規(guī)模遠不如谷歌,但它仍然致力于成為Ruby的贊助人,就像谷歌為其青睞的語言所做的那樣。例如,Shopify最近開發(fā)了YJIT,這是一個即時編譯器,可以提高Ruby的性能,并已內(nèi)置于Ruby標準中。

Trowbridge表示,Ruby“作為一種出色的服務器端‘粘合劑’語言,它在Web應用程序的服務器組件上表現(xiàn)出色,就像Rails的‘只使用API’模式一樣”。他指出,在某些方面這個角色“讓Ruby基本上回到了它的起點”。

“總而言之,幾乎所有與我交談過的人都相信Ruby和Ruby on Rails將繼續(xù)在許多環(huán)境中使用。就像很多語言雖然不再像以前那樣流行,但仍在大量使用。我認為Java就是個典型案例,Ruby和Java將會有相似的發(fā)展軌跡?!?/p>

最后,還有很多人認為,Ruby的社區(qū)對Ruby始終抱有溫暖和熱情,這是很難在其他語言中找到的。就像Lumenova AI的首席技術(shù)官Cosmin Andriescu所說:“Rails仍然有一個主要的優(yōu)勢,它有大量的Ruby gem庫。相較之下,不少JavaScript框架的API不穩(wěn)定,在必要的Web開發(fā)工具方面還不夠成熟?!?/p>

Boeh補充道:“現(xiàn)在Ruby世界有很多令人興奮的發(fā)展。Ruby永遠不會再成為下一個重要的新事物,但我認為它會一直存在下去?!?/p>

5、寫在最后:到底還要不要學習Ruby

軟件的生命周期有其固有的規(guī)律,一門編程語言能夠堅持走過三十年絕非易事。

“Ruby有很多特性,我覺得最為大家喜愛的是它的簡潔、高效以及人性化。但同時也有開發(fā)者不喜歡Ruby,因為一旦應用到工作中,由于Ruby太靈活,犯錯的概率會隨之增大。還有人說Ruby很多東西都是在運行時來決定的,比較麻煩?!盧uby之父松本行弘在接受采訪時曾如是說。

他認為,這實際是一個取舍的問題?!皬氖褂肦uby的角度來說,我個人認為最重要的是靈活性,當然容易寫出bug的確很煩,不過我還是想要保留Ruby最重要的特性。而且,Ruby會持續(xù)改進,進一步提高開發(fā)效率。”

對于開發(fā)人員來說,是否要在職業(yè)規(guī)劃中學習Ruby,同樣是一個取舍問題。一方面,在過去的十年中,開發(fā)領(lǐng)域可謂百花齊放,Node.js、Angular和React在前端和后端各領(lǐng)風騷,JavaScript在市場需求穩(wěn)定性上越來越具有優(yōu)勢,Python后來者居上快速“殺入”主流編程語言圈;另一方面,不少公司對Ruby和Rails的開發(fā)者依舊有需求,自2008年以來出現(xiàn)的一切SaaS,在未來幾十年中都需要新的開發(fā)者加入進來。說到底,任何語言都是有應用場景限制的,而場景的變化是非常快的。不管你學不學、用不用Ruby,你總得深入一個語言。深入以后,才會有進一步衡量與評估的眼界。

參考鏈接:

??https://www.infoworld.com/article/3687219/whatever-happened-to-ruby.html??

??https://zhuanlan.zhihu.com/p/108825259?utm_source=wechat_session??

??https://www.duidaima.com/Group/Topic/OtherLanguage/3300??

責任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2014-03-25 09:56:42

程序員30歲后

2013-01-29 10:40:52

程序員

2017-09-20 09:06:20

程序員網(wǎng)站后端服務

2019-09-19 10:15:15

程序員人生第一份工作文章

2012-02-02 14:35:08

程序員

2009-05-06 09:56:22

Ruby性能改進

2009-07-23 09:41:32

程序員職業(yè)發(fā)展

2020-01-20 09:49:58

華為騰訊百度

2013-05-15 16:43:38

2014-10-30 13:46:10

谷歌

2015-02-27 09:28:22

程序員

2021-01-12 14:24:26

Python開發(fā)大數(shù)據(jù)

2012-12-07 13:25:03

職業(yè)規(guī)劃總結(jié)開發(fā)人員

2020-11-03 10:34:23

程序員IT互聯(lián)網(wǎng)

2018-04-15 16:11:57

RubyMatz語言

2020-07-20 08:15:10

工作公司團隊

2009-02-26 10:49:29

軟件工程師職業(yè)生涯職業(yè)規(guī)劃

2010-03-26 13:14:21

CentOS系統(tǒng)

2012-05-30 09:12:46

NodeJSRubyRails

2014-09-16 10:05:39

職場年薪
點贊
收藏

51CTO技術(shù)棧公眾號