為什么我不會在新公司中使用Rails
從流量來說,在線文檔上傳及分享社區 Scribd 是世界第三大Rails站點。Jared Friedman是該公司的聯合創始人兼首席執行官。他從2006年就開始使用Rails,Scribd第一個版本是用Rails 0.7編寫的。現如今,Rails已經成為美國硅谷創業公司默認的Web應用程序開發框架。但Friedman認為這是個錯誤,并在近日 撰文 闡述了這一觀點。
Friedman列出了以下幾個方面的原因:
- Rails巔峰期已過 ——Friedman認為,現在在一家新公司中使用Rails就像2007年在一家新公司中使用Java Spring,其依據是谷歌趨勢中Web框架的搜索量變化,如下圖所示,:
- Rails有個大難題:Ruby ——基準測試顯示,截至目前,Ruby是主流編程語言中最慢的。語言設計是一個原因,但更深層次的原因是Ruby沒有一個大型的企業贊助商。在2007 年,Python、PHP及JavaScript也都是相當慢的腳本語言。非死book對PHP進行了巨大的投資,構建了 HipHop 轉譯器,提升了PHP的運行速度。谷歌則構建了一個快速的JavaScript JIT編譯器,無意間促成了服務器端JavaScript應用的暴增。相比之下,Ruby解釋器僅僅是志愿者的工作成果。在2007年到2012年之間, 有多個項目試圖提升Ruby的運行速度,如 Rubinius 、 JRuby 、 YARV ,但只有JRuby仍然在積極開發,而且最新的版本讓人看到了希望,只是仍然有很長的路要走。此外,推ter是第一家基于Rails成長起來的大型 科技公司,它曾試圖優化Ruby解釋器,但推ter工程師最終還是決定使用一種速度更快的語言重寫推ter,因為那比讓Ruby更快來的簡 單。
- Rails開發停滯,其它框架已經趕了上來 ——Rails 3于2010年8月發布,但GitHub四年之后才升級到這個版本,因為該版本的新特性沒有足夠的吸引力。Scribd在升級到Rails 3的過程中也遇到了很大的麻煩,導致他們現在都不確定是否還會升級到Rails 4。與此形成鮮明對比的是JavaScript的快速發展。Scribd經歷了從Prototype到jQuery到Coffeescript到 Angular再到React的轉換,每一次轉換都能帶來生產效率的提升。
- “新兵訓練營(BootCamps)” ——過去兩年出現了許多編程新兵訓練營。當講授服務器端開發時,他們絕大多數都會講授Rails,而不是其它語言。這導致優秀的開發人員,尤其是那些具有 計算機科學學位的開發人員看輕那些訓練營項目。Friedman注意到一種趨勢,就是有經驗的開發人員不想使用Rails。
- 有許多新框架成為Rails的有力競爭者 ——Friedman得出這一結論的一個依據是 Coding VC 對 AngelList 上廣受歡迎的公司所使用的服務器語言的 統計分析 ,如下圖所示:
另一個依據是indeed.com上的就業趨勢統計,如下圖所示:
Charles Nutter 是JRuby的核心開發人員。他評論說:
我討厭類似這樣的文章,用傳聞和猜測混淆視聽。
因此,他幾乎是逐條反駁了Friedman的觀點,而且言辭頗為激烈。他認為,谷歌趨勢并沒有給出總數,只能體現一種相對增長,而實際上,Rails比Node.js流行。關于性能,Nutter指出,在處理相對穩定的Rails請求時,JRuby的性能比 CRuby 更好。對于“Rails開發停滯”的觀點,Nutter認為十分荒謬,因為熟悉內情的人都知道,Rails是發展最快的框架之一。
網友AnneOminous在聲援Nutter的同時指出,Friedman提到的關于推ter的信息是錯誤的。推ter的其中一名 創建者之所以使用Scala重寫推ter引擎的某些部分,是因為他不擅長Ruby,未能正確使用。后來的分析也證明,他使用Scala所做的工作并 不比使用Ruby快多少。對于Friedman有關GitHub的說法,也有網友指出,GitHub之所以在Rails 3發布那么久之后才升級到Rails 3,是因為他們自己派生了Rails,使用了許多內部補丁。
總之,對于Friedman的觀點,反對者居多,但也有少數網友持贊同觀點。感興趣的讀者,可以進一步閱讀 原文 評論。