Ruby 語言有哪些缺陷?
01-05
到處看到的都是 ROR 的好 Ruby 的好,我想知道這語言的缺陷在哪裡,希望各位談談經驗之談。
我想在多問一個問題...除了Rails....ruby還有其他的支持web應用的庫可選么?
1. Rails 版本升級太快,有時候不向下兼容,如果你平日不寫 test 或者是維持良好的 coding 習慣,遇到要升級時會很痛苦。
2. Rails 版本升級太快,不是很勤奮的 Developer,上手這一門框架會有被知識淹沒的痛苦
3. Rails 版本升級太快,google 到的有時候可能是過期的解答。首先,RoR != Ruby,這兩個東西不是並列的,不能並列來說。
- Ruby的缺點,最主要的是效率問題,老版本的GC機制有一些問題,雖然Ruby最新的效率已經不錯了,但是仍然還是有提升的空間,隨著Ruby的發展,這個問題會漸漸消失。
- 至Ruby的語法來說,其實是一個個人偏好的問題,我個人更喜歡Python一些。
我個人從Rails跑到了Bottle(Python),大致的理由如下:
- 我不喜歡Ruby的語法,當然,這個是個人偏好的問題。
- Rails版本升級實在是太快,對於初學者來說,入門門檻越來越高。在Rails 2.x的時代,學習的曲線還算可以接受;但是到了3.0,新功能大量湧入,導致曲線一下子變陡了。而且兼容性很煩人,框架不像是App,App版本可以隨時升級,沒關係。但是框架一升級,開發的人就痛苦了:要是不升級,就會有一堆bugs暗藏在裡面,要是升級,又得頭疼兼容性的問題。
- Rails社區是很活躍,但是太多的東西加入,感覺越來越臃腫。我個人不喜歡Rails 3.1把Coffeescript和SaSS默認引入,這兩個「語法糖」類似的東西,說實話很小眾,默認引入還得讓人自己去去掉。
- 從上面一點引入了一個風險,就是Rails本身被DHH控制。這本身不是錯誤,而是風險。風險在於,你必須接受DHH的決定,包括Coffeescript,包括SaSS,包括排斥Haml,感覺上不自由。我寧願Rails一個都別引入,留一片空白給大家發揮,但是Rails的C2C明白的告訴你,接受我們的決定吧,你別無選擇。
- 如果你的商業邏輯很標準,特別是涉及到大量的CRUD,Rails會很方便,而我個人來說,做的許多東西並不是很「標準」,導致Rails沒有完全發揮功效,寧願轉去一個輕量級的框架(Sinatra)自己構建。
個人觀點:
- ROR/Ruby的第三方庫雖然很多,但是很多都是個人作品,其企業級應用比較少。
- 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 |