標籤:

Ruby 和 Ruby on Rails 在 2017 年還有前途嗎?

我是在校學生,最近在一家公司實習,公司是一個小國家的IT業內相對較大的公司,而這個國家這麼多IT企業貌似使用 Ruby on Rails(RoR) 的僅有我們一家。從國內外各種技術網站/門戶/社區來看,RoR 在過去的這兩年完全沒有人氣似的,現在是 JS 的天下,不是么?所以想求證下業界人士,RoR 是不是還有前途?


我也有同感,下面我來分析一下為什麼ruby/rails為什麼聲音小了

首先看大公司為什麼很少用rails,據我所知有

1. rails的性能和內存佔用不理想,規模效益不高

2. ruby作為動態語言在大團隊開發上存在劣勢,不能像java有介面和靜態類型檢查

3. 小眾語言,招人困難

4. rails單塊設計,不適合大公司拆分、細化、優化的訴求

而rails更多是創業小公司在用,我的經驗包括:

1. 全棧框架,有自己的前端邏輯

2. 完善的生態

3. 開發速度快,對人員數量要求少

4. 學習曲線很線性,容易培養(全棧的)開發人員

可以看到,核心問題在於人力成本是否佔主要地位,如果人力成本在公司運作中比重很大,那麼使用Rails等快速開發框架,減少團隊規模,則有對公司發展好。

大家再想想這幾年中國經濟形勢如何?實體凋敝,房價暴漲,很多人都覺得創業還不如買幾套房子。這樣創業公司少了,用ruby/rails的自然也少了。

再看這幾年的技術發展趨勢,一個是經過多年的發展,rails的很多思想都被其他語言和工具吸收了,在開發效率上可能達不到以前那種數量級的差異。

而考慮到很多開發者已經熟悉了自己的一套框架和工具鏈,在能實現相同功能的前提下,沒有十足的必要學習另外一種新的技術

而前端則不一樣,瀏覽器只支持js,整個前端的生態則又建立在nodejs之上,客戶端開發則是全新領域。

所以ruby/rails近幾年聲音變小也是正常現象,即使我認為目前在開發體驗上還沒有能超過rails的全棧框架。

從產品層面來看,早年的拼技術,看你東西能不能做出來,後來拼產品設計,講究快速開發和快速試錯,在web時代,rails在這些方面都有優勢,而到了移動時代,產品設計和快速迭代的部分從後端移到前端,後端變成了一個配合,尤其是在早期階段的重要程度降低了。而今各端流量基本瓜分乾淨,各種現成的平台服務讓技術的重要程度又降低了。而往後看,vr,人工智慧也不是ruby所擅長的領域(而像Python在AI領域的布局是10多年前就已經開始了,雖然可能是無意的碰巧)。

種種加起來,可以看到ruby/rails幾乎不可能再掀起新的浪潮。

總結了這麼多,就是,rails本身所擅長的領域在現在已經變得很狹窄也不那麼重要了,所以才聲音小了。但如果你要做的事情符合他的目標,那它依然是一個很棒的選擇


怎麼可能沒有前途。看待問題的時候要放眼世界而不是只盯著中國。

題主可以稍微搜索下2016年rubygem的增長數。

首先需要明確的是ruby和rails應該分開討論

  • 首先來說說ruby語言本身:ruby作為一門1995年誕生的語言,如今已經有20年以上的歷史,依然在編程語言領域中佔有一席之地,自然能說明一些問題。

至少在我看來,ruby在很多年前就已經有了不少現代語言才有的特性。

至少ruby中的元編程特性是獨樹一幟的,哪怕在同樣具備元編程能力的其他動態語言中也是大放異彩。用ruby寫出的代碼有著靜態類型語言開發者想都不敢想的簡潔。

至少在我看來ruby社區在創新性和接受新鮮事物的程度是所有語言中最高的。

拿你可能比較熟悉的前端方面來說,coffeescript、sass,都是ruby社區的產物。

ios開發方面,大名鼎鼎的cocoapods也是ruby寫的。

mac系統的依賴管理工具homebrew,mac用戶人手一份。

java中的play框架,php的laravel,js的sails,都是向rails致敬的產物。nodejs的express,靈感也來自ruby的sinatra框架。

ruby社區中還有大量優秀的gem,如果你是一個ruby開發者,這些都將成為你的財富。

雖然這些都屬於過去的輝煌,但是es6標準中吸納了不少coffee script的特性,也說明了ruby社區對其它生態的影響非常深遠。

ruby社區接受新鮮事物的態度也是其它社區難以企及的,ruby china上永遠不乏對最新技術的討論,例如angular/react,rust/elixir。

  • 至於rails,我現在依然將它作為我後端項目的第一選型,rails5中也引入了api mode和action cable等新特性使得它更貼近如今富前端的開發方式。雖然常有人詬病它的性能,但是其實大部分場景下只要遵循最佳實踐,很難出現性能問題。而且rails開發方面有著大量前人總結的經驗範式,哪怕你使用的是其它的開發語言,這些知識都可以使你受益匪淺。

另外rails源碼中充滿了各種ruby的法術和精巧的構思,通過閱讀源碼也可以使你對ruby乃至整個編程的水平大大提升。

至於說到在中國的前途,ruby在中國由於缺少營銷或者民族情感等原因並不是太火,但是學不學習ruby說到底還是取決於你想要成為什麼樣的程序員,如果你只是想學一門安身立命的技術,ruby可能會使你事倍功半,你還是學習一些像java和python這樣比較好找工作的語言,但如果你想要成為一個頂尖的開發者,學習ruby將會使你對編程有新的認識。

說到底我比較反感因為哪個語言比較火就有一堆人趨之若鶩的現象,前幾年iOS開發可以說是程序員中的高富帥,可是如今呢?說到底誰也不能保證你學會nodejs之後nodejs的處境會否像現在的ObjC程序員一樣慘。

這個世界上沒有編程語言,只有編程。


因為 Ruby/Rails 的最佳場景現在已經不吃香了,所以連帶著 Ruby/Rails 本身也不是很熱門,但是,如果做 Web 類的管理應用,我實在沒耐心使用其它技術棧,差距太大。

比如前幾個月做的: larrow/shelter ,基於 RoR ,和 vmware/harbor 的應用場景差不多,雖然功能上只有後者的幾分之一,但是架不住代碼量是後者的幾十分之一,再看看代碼的可讀性,基本上做基於 Web 應用系統我最終還是用了 Ruby / Rails


1. 前端:JS MVC框架的路越來越廣,已經不用太依賴服務端模板。

2. 後端/服務端:去除了模板的需求,API提供能力、邏輯運算能力、網路支撐能力(甚至微服務支持能力)是重點。——不管是Ruby、PHP還是Java,都面臨此類現實需求和趨勢,所以Go火起來是有原因的。

3. 要不然就像Python、R這樣的,有優勢明顯的應用領域,而且有可觀的市場佔有率——早期收穫的紅利。

上面三類情況,也是擠壓Ruby/Rails的關鍵因素。Ruby的重點應該在第二項發力:開發效率、服務提供、性能提升——不願看到一門友好語言的沒落。


既然說到前途,那答案是明確的,沒有。原因:

1. 動態特性帶來系統不穩定性

2. 性能遲遲沒有解決

3. 骨子裡還是web 2.0那一套


前途當然有,看你怎麼去理解。

使用Ruby on Rails的大公司確實不多,Rails的性能也一直被詬病。最近幾年移動開發和Javascript又大熱,現在的後端在很多時候都只提供API。在這樣的大環境下,Rails作為一個全棧框架彷彿很難發揮自己的優勢。即使是在Ruby圈子內,也有很多的開發者轉而選擇Grape/Sinatra/Padrino這樣相對輕量級的框架。

但是這並不代表Rails沒有前途(不值得學習)。

在我個人看來,Rails依舊是最優秀的web框架,拋開Rails高效的開發效率不說,Rails融合了幾乎整個web開發領域最精髓的思想。關於Rails的優點,我舉幾個明顯的來說:

1. Rails開發者們常掛在嘴邊的Convention over Configuraion(約定大於配置): 開發者遵循約定(最佳實踐),省去大量的重複的配置時間。雖然現在在大多數編程語言/框架中也都採用了這種做法,但是以「約定大於配置」作為信條的Rails無疑將這一優點發揮到了極致。

2. Omakase(主廚精選): 這個詞最早源於日式餐廳,客人不需要自己操心該點哪些菜,直接選擇主廚精選,大廚便會給你搭配好一系列最佳的菜品。Omakase也是Rails的核心思想之一。Rails默認就替使用者做出了一系列選擇,經典的全棧MVC架構,使用Assets Pipeline打包壓縮靜態資源,ActiveRecord+DB migration去操作資料庫,默認使用sass編寫css,jbuilder去構建json,用turbolinks讓你的網站可以有單頁應用一樣的體驗......而且在我看來,Rails不僅僅是替你做出了這些選擇,同時也是向你灌輸了這些最佳實踐。如果對於一個沒有接觸過Rails的開發者來說,Rails能大大開拓你在web開發領域的認識和見解。(我在沒學Rails之前,並不知道有migration這樣方便好用的東西,也不知道用sass。)

3. 近乎完美的生態:曾經跟一個同事討論去開發一個新項目時的技術選型,其中有很重要的一點就是看技術的生態圈。在web領域沒有Rails做不了的事,幾乎所有問題Rails都有十分成熟的庫(gem)和解決方案。讓你不用重複去造輪子,在開發中可以節省大量的時間。

4. 強大的社區驅動力:以DHH為首的社區成員們一直在推動著Rails的前進,社區成員們都樂於給Rails貢獻代碼(Rails目前有超過3000+的contributor)。而且Rails也一直樂於接受新的東西,例如去年yarn剛剛出的時候,Rails就將其集成進了assets pipeline。作為中國的開發者,Ruby的中文社區Ruby China也是一個非常優秀的中文技術社區,社區十分友好,有什麼好的新東西就會分享出來大家一起使用。社區的官方網站也是大家一起在維護。

可能由於這兩年以React/Vue/Angular為首的前端圈子的火熱讓Ruby/Rails的聲音小了下去,但是Ruby社區並沒有慢下來,對於web開發人員來說,Rails依舊是最好的選擇之一。

不過這也並不代表Ruby社區只能局限於Ruby/Rails,越來越多的人開始關注語言和框架上的性能問題。所以這兩年社區里不少人也都開始接觸語法近似Ruby的函數式編程語言Elixir,框架設計和Rails有異曲同工之妙的Phoenix。最近兩年Ruby圈子的Conference上面也出現了不少Elixir的聲音。Elixir/Phoenix的核心開發者們本身也是Ruby社區的那些人。

所以我的結論是Ruby和Rails依舊很優秀,值得開發者去學習,對於創業公司來說Rails高效的開發效率也能讓其早日讓產品上線,性能問題本身對於一個產品來說在達到大規模的用戶量之前就不重要。不過作為開發人員也不能局限於語言和框架,應當跟隨社區的腳步一同前進。


2017.1.20 更新

下文也是最近剛剛出爐的基於 Ruby gems 在 2016 年下載量分析統計進一步的證明 ruby 沒有死(前景):Is Ruby dead? Hell no! - Analyzing RubyGems stats for 2016

同意 @張漢東 的回答,同樣的在 ruby china 也有一些大牛在國外,根據他們的反饋海外的情況還是很有市場的,比如 fredwu:fredwu (Fred Wu) · Ruby China

另外附送一份 2017 年昨天才熱乎乎出爐的關於 ruby 的調查報告 Ruby Survey Results (Jan 2017)

從報告的結果來看參與的人員都是工作需要和做 side project 再用,用的最多的框架還是 ruby on rails,這個真的是任何框架都很難撼動的。

同樣的如果你用 macOS 和開發 iOS/Mac 你會發現平台上非常熱門的輪子工具都是 ruby 造出來的,homebrew、cocoapods、fastlane、vagrant、huginn、gitlab 等。

我個人的結論 Ruby 是一個非常趁手的快速解決問題的工具,無論是處理腳本還是做 web。但如果在中國生存打拚建議除了 ruby 之外再學習一門熱門語言比如 python、java、c/c++/c# 這些語言基本上是經久不衰的,任何時候都會有需要的市場。


2017的前途是

1. 演算法

2. 語言熟練

3. 框架熟練

4. 項目經驗

前途不決定於一門語言,而是正規企業面試時,考察的基本點。

1. 有多少演算法可以隨心寫出,偽碼即可

2. ruby 語法熟悉程度

3. rails 原型製作 論壇,點評,問答 cms ...

4. 工程級代碼

國內快糙猛風格比較流行,講究 工程級別 代碼的公司不多,能寫出高質量的工程級代碼,隨便 ruby, go, java ,c++ 都很有前途。

rails 目前已經成熟到政治正確,不會因為選擇 rails 令 項目失敗,

而大數據方面,對接成熟框架的介面,和演算法實現都有在快速發展。做應用有介面項目,做基礎演算法可以去填坑。

最後,中文社區就一個,而且氛圍好,

這不禁令人想起,iPhone 誕生時的場景,就一款,而且不錯。


看描述,題主好像是在國外?

目前Rails在美國和中國,創業公司用的比例比較大,先不談未來Rails會怎麼樣,起碼2017年,你指望它找工作應該是沒問題。可能你待的那個國家比例比較少吧,但是作為一名國際生,學好Rails其實可以找一些遠程工作嘗試下。

曹力所說的Rails的情況比較客觀,但是,Ruby的生態其實是非常成熟的,而且也在不斷的進化。而Rails只是其中一個Web框架而已,雖然是主流框架只有它,但是現在也不斷有新生的框架出現,對於創業公司來說,夠用了。一門語言,一個框架,它的出現,只是為了解決一個領域的問題而已,不要奢望它是萬能的完美的。

說到前途,其實我個人的看法一直是這樣的:語言和框架只是一個讓你領悟編程的工具,你是實習生,目前的問題在於尋找一個切入點去深入一門編程語言和Web開發,Ruby和Rails是一個很好的選擇,通過學習和使用Ruby/Rails,可以讓你對整個領域的知識有深入的了解,你的學習,不是為了掌握一門工具,而是為了掌握一個領域的知識。當然,你選php/nodejs都是殊途同歸。 所謂前途,不是某個語言和框架的前端,而是你自己的前途,通過深入學習一門語言和框架之後,再學其他語言和框架都很簡單。除了Ruby,目前還有很多現代編程語言值得你學習,比如Rust、Golang、Elixir,去學習這些語言背後的思想,融入到你的知識體系中。不要把自己局限於某個語言的程序員,而應該是一名格局比較大的程序員,這樣你編程領域的前途才會更寬更廣。

一點個人看法,希望對題主有幫助。關評了,如果想討論,請私信。


有前途啊。

我們公司做醫藥行業軟體,後端Ruby on Rails,前端強耦合React+Ant.Design,客戶端Electron,移動端Weex。

坐標河南鄭州,發展的如火如荼。

[鄭州] 民生葯業集團,招聘 Ruby on Rails 高級開發,JS 高級開發。 · Ruby China


淺度用戶聊聊,結論沒前途。

rails的時代已經過去了,連一向被吐槽笨重的Java在Spring Boot的助力下都可以快速啟動一個項目,現在像個樣子的語言初始化一個Web項目很是輕而易舉。

Ruby的語言優勢,其實也代表了更高的學習成本,所以大規模普及的概率不大,所以Rails的式微也是情理之中。


人在任何領域都可以很有前途

語言其實一樣

如果沒有你可以改變

大多數人都用的不一定是最好的

最好的東西不一定要讓每一個人用


作為一個rails初學者

說實話,當我在知乎上看到這個問題時,我學ruby/rails的動力和自信都下降了幾分


沒有在像python一樣,在數據分析領域開闢一塊新的領地,是一件比較遺憾的事情


沒有前途了,如果是後端的話,考慮 Elixir 或 Go 吧


我覺得ruby做命令行開發比python好用多了


ruby依然很酷.

但是如果要說前途, 那麼前途是不大了... 哪怕ruby 3x3出來. 想翻盤也很難了.


本來想說勿問前程,用心學習的.但是我還是說說我個人的經歷吧.我大學畢業以後也找了個rails工程師的工作,公司的項目越做越大以後發現rails的項目變得越來越難維護, 因為每個人都有自己的一套,因為ruby實在太靈活. 而且招人很難招,換言之,換工作也沒那麼容易,畢竟大都是創業公司居多.現在我們公司的項目都往JAVA遷移了. 但是還是建議多多研究Rails的思想,不管以後是否用Rails做項目, Rails的思想還是棒的,被很多框架借鑒. 講到Rails的前途,曾經他很美好


有前途

我以前在黑馬當過java培訓老師,工資還可以不吹。

黑馬是一萬多塊錢,四個月

在看李笑來ruby培訓,五萬塊錢,兩個月

怎麼看待李笑來的全棧工程師課程? - 編程 - 知乎

明顯ruby老師錢多


有前途。

當年松本開發 ruby 的時候自己都知道 ruby 可能不會火,於是他找到了 rails 的作者,說我開發了一門語言你幫我開發個框架吧,然後有了 rails,有了二十世紀初的 rails 繁榮。

挨個說,ruby 這門語言本身寫起來就很優雅很爽,黑客與畫家的作者曾經說,寫伺服器要用 lisp,但是說實話,lisp 都太難寫了,純函數式是很難的。ruby 吸取了 lisp 的優點,可以說師承了 lisp。所以 ruby 很適合做伺服器開發。比 Java 寫起來輕鬆的多,又比 erlang 寫起來快。

rails 這個框架說實話,裡面的思想之先進,是很多框架學習的例子,可以說很多框架都在抄 rails。所以值得學。

再說並發性,ruby 的性能一直是被人詬病的,但是性能問題不能光從語言層面解決。支付寶核心的某些部分還是 rails 寫的。

國內很多創業公司都在使用 rails,比如簡書,薄荷,大疆,百詞斬,暴走漫畫。

國外,Airbnb,twitter,GitHub。

最後插一句,現在是 ruby 2.4,ruby 3.0 將會重寫核心部分,參考 erlang 和 go 的模型解決一直被詬病的並發問題。相信我,不久的將來,ruby 會再次火遍大江南北。


推薦閱讀:

ruby語言前景如何?
使用 jeykll 或 octopress 在 GitHub 上架 Blog 的工作原理是怎樣的?
女,26歲,做了一年多的自動化測試,最近在糾結要不要轉行,求指點。?
為什麼說Ruby繼承了Lisp?
Ruby除了使用rails開發web應用還能做什麼?

TAG:Ruby | RubyonRails |