標籤:

Ruby 語言有哪些缺陷?

到處看到的都是 ROR 的好 Ruby 的好,我想知道這語言的缺陷在哪裡,希望各位談談經驗之談。

我想在多問一個問題...除了Rails....ruby還有其他的支持web應用的庫可選么?


1. Rails 版本升級太快,有時候不向下兼容,如果你平日不寫 test 或者是維持良好的 coding 習慣,遇到要升級時會很痛苦。

2. Rails 版本升級太快,不是很勤奮的 Developer,上手這一門框架會有被知識淹沒的痛苦

3. Rails 版本升級太快,google 到的有時候可能是過期的解答。


首先,RoR != Ruby,這兩個東西不是並列的,不能並列來說。

  1. Ruby的缺點,最主要的是效率問題,老版本的GC機制有一些問題,雖然Ruby最新的效率已經不錯了,但是仍然還是有提升的空間,隨著Ruby的發展,這個問題會漸漸消失。
  2. 至Ruby的語法來說,其實是一個個人偏好的問題,我個人更喜歡Python一些。

我個人從Rails跑到了Bottle(Python),大致的理由如下:

  1. 我不喜歡Ruby的語法,當然,這個是個人偏好的問題。
  2. Rails版本升級實在是太快,對於初學者來說,入門門檻越來越高。在Rails 2.x的時代,學習的曲線還算可以接受;但是到了3.0,新功能大量湧入,導致曲線一下子變陡了。而且兼容性很煩人,框架不像是App,App版本可以隨時升級,沒關係。但是框架一升級,開發的人就痛苦了:要是不升級,就會有一堆bugs暗藏在裡面,要是升級,又得頭疼兼容性的問題。
  3. Rails社區是很活躍,但是太多的東西加入,感覺越來越臃腫。我個人不喜歡Rails 3.1把Coffeescript和SaSS默認引入,這兩個「語法糖」類似的東西,說實話很小眾,默認引入還得讓人自己去去掉。
  4. 從上面一點引入了一個風險,就是Rails本身被DHH控制。這本身不是錯誤,而是風險。風險在於,你必須接受DHH的決定,包括Coffeescript,包括SaSS,包括排斥Haml,感覺上不自由。我寧願Rails一個都別引入,留一片空白給大家發揮,但是Rails的C2C明白的告訴你,接受我們的決定吧,你別無選擇。
  5. 如果你的商業邏輯很標準,特別是涉及到大量的CRUD,Rails會很方便,而我個人來說,做的許多東西並不是很「標準」,導致Rails沒有完全發揮功效,寧願轉去一個輕量級的框架(Sinatra)自己構建。

順便吐槽一下Django,感覺Django太不靈活了,模塊都定死了,想要換都不行。用這種Full-stack的Framework直到我發現,帶來的累贅要遠遠大於帶來的好處,所以我還是喜歡Bottle這樣的Micro-Framework。


個人觀點:

  1. ROR/Ruby的第三方庫雖然很多,但是很多都是個人作品,其企業級應用比較少。
  2. Ruby的虛擬機性能還不足夠強大穩定。


1). 社區氣質不錯。idea產生和採納速度都是領先的,才會催生homebrew這樣基於git的軟體倉庫項目;

2). github上開發項目非常活躍,參與度很高;

從這兩點看Ruby是入門者選擇的語言,Ruby社區是值得加入/不可忽視的社區。對於其他已經選擇其他語言的人(比如我),也值得關注和借鑒。


Ruby語法非常靈活,糖衣很多,有時候上手確實很頭疼。


multi threading support


最大的缺點也就是他最大優點:靈活性和動態類型

這門語言對紀律和智商的要求太高了


RUBY最大的優點最大的缺點: 能夠輕易的修改一個現有的類,太靈活了

導致有時候你都不知道這個方法什麼時候定義的,什麼時候又被重寫或刪除了


ruby和rails最大的問題是升級的時候向下兼容做得不好(社區產品的通病吧?),ruby的多線程其實是假的(單一進程內),rails每一個新版本都裝進去一堆花里胡哨但並不怎麼成熟的新功能,用rails做企業應用真的要非常小心。


當然是一直以來為人詬病的並發能力,實在太弱了


比Rails更底層的實現是sinatra和rake,rake是調用系統的shell,很多不錯的ruby gem是基於sinatra的,比如dashing。


學習容易,畢業難。


0.語言本身沒有什麼缺陷不缺陷的,仁者見仁,不過和python相比,大概ruby語法糖多了點。。

1.ruby vm性能在腳本語言里確實不算優秀(1.9.2很不錯了)。

2.Rails的版本升級會帶來對你很多誘惑性的new features,同時伴隨著不向下兼容的痛苦。。。

3.gem百花齊放,不過使用每個gem前確保該gem有足夠多的人維護,或者你自己有能力去hack,不然說不定那天維護者玩消失了。。


GIL這些說爛的就不提了,設計上的缺點就是對OOP以及duck typing過於執著,導致對象傳遞的層數一旦太多,就很難對它進行分析。

目前好點的IDE比如Rubymine,在這方面同VS相比依然很差。


推薦閱讀:

用 Ruby 做的成功商業網站少是什麼原因?
有哪些 Ruby 大牛的 Blog 推薦?
值得看的ruby的開源項目有哪些?
Rails求學,感覺跟Rails相關的話題實在太少。建個話題尋專家,路過的留名吧。

TAG:Ruby | RubyonRails |