首頁»RubyOnRails»不使用 Ruby 的十個理由

                    不使用 Ruby 的十個理由

                    來源:oschina 發布時間:2012-11-22 閱讀次數:

                      請注意:這是一篇主觀意識的文章。它的目的并不是要說服你使用或者不使用Ruby,或者其他任何技術。這篇文章所涉及到的環境是 Web 開發,而不是通用的編程。我想要通過這篇文章解釋這些年來非 Ruby 社區對于 Ruby 的一些看法,并且提醒人們以開放的心態來面對新的事物。敬請欣賞!

                      我最近做了一個15分鐘的演講“我喜愛的 Ruby 語言以及它的生態系統”。很顯然我的言論讓忠實的 PHP,.NET 和 Java 開發者感到不安。他們對 Ruby 不是好奇,而是感覺我在批評他們熱愛的技術。

                      既然這不是宗教,而是關于如何面對新的事物,我認為我們應該列出所有其他人認為不使用 Ruby 來做 Web 開發的理由。

                      1. Ruby 并沒有 Java 或者 PHP 那么成熟

                      這是對的。Java 和 PHP 被用于 Web 開發要比 Ruby 早很多。但是你知道嗎?我姥姥比 Ruby 要年長很多,但是我不認為我姥姥可以做 Web 應用。在 Web 時代,技術每幾年就要更新一次,老和成熟不一定就有優勢。在很多方面,Ruby 社區吸取了其他技術的教訓,所以能做的更好,相比碎片化的 PHP 社區來講。

                      如果你考察一門技術的標準只有時間的話,你從一開始就錯了。

                      2. Ruby 的性能不如 .NET 或者 Java

                      你又說對了!除此之外,Ruby 還比 Erlang,Lua,C++ 等等都要慢,但是你不使用 Erlang 或者 C++ 是嗎?Web 開發并僅僅是性能。你的應用不可能在上線第一天就有上百萬的用戶。你需要編碼,測試,發布,并且循環這個過程,你需要快速迭代。所以,一開始開發效率大于運行效率。老拿性能來說事是愚蠢并且錯誤的。Ruby 的應用也能像 .NET 或者 Java 應用那樣橫向擴展。

                      3. Ruby 在 Windows 下工作的不好

                      這是一定的。Windows 在很多方面是偉大的,但不包括開源的 Web 開發。Ruby 以及很多源自 *NIX 的偉大技術都不能在 Windows 下工作的很好。與其撞破腦袋抱怨你已經習慣了 Windows ,不如試試安裝 Linux ,讓生活繼續。技術的魅力在于學習新的事物,而不是呆在熟悉的環境里面一輩子。

                      4. Ruby 沒有 PHP 那么流行

                      的確是這樣的。技術并不是流行比賽,否則的話我們應該都用 JavaScript 來開發(目前在 Github 上最受歡迎的語言)。技術是一種達到目的的手段。流行度只是衡量使用率,社區活躍度的一個指標,用來幫助人們判斷技術的可用性,穩定性和支持程度。

                      5. Ruby 社區高傲并且勢力

                      嗯……這么說吧 Java 社區是頑固的,.NET 社區是封閉的,Perl 社區是古怪的,C++ 社區是一群抽煙的中年人。

                      我遇到過各種各樣不同背景的開發者。我并不是說 Ruby 沒有勢力的人,但是絕對不是主流。我想很多時候是這樣的一種情況:因為 Ruby 是相對比較新的技術,所以一些簡單的任務例如和第三方的測試,開發,迭代都相對容易。所以當 Ruby 程序員稱贊這些事情使用 Ruby 更容易的時候,他們并不是在看低其他技術,而只是在表述一種更簡單的開發方式。

                      6. Ruby 非常頑固,不自由

                      這個觀點不僅僅是錯誤,簡直就是愚蠢。讓我問你一個問題:編寫一個 HTTP 路由組件或者圖像處理類庫有多少種方式?

                      約定優于配置,最佳實踐和清晰的編碼標準不會讓開發者不自由。相反,它讓開發者專注于重要的事情,例如業務邏輯。

                      Ruby 固有的約定驅動的開發方式幫助開發者提高了開發效率,但同時尊崇社區驅動的標準,使得樣板文件最小化。

                      有趣的是,Ruby 是我知道的唯一一門語言,可以讓你在任何地方,任何時間更改任何東西。人們很喜歡這些標準和約定,應為它讓他們更有效率。

                      7. Ruby 沒有 Java 和.NET 可靠

                      Windows 沒有 NetBSD 那樣安全!!!如果你考察可靠性的唯一標準就是類型檢查的話,你看事情的角度就錯了。

                      雖然靜態語言嚴格的類型檢查和編譯屬性讓他們獲得了更好的性能,但是,坦白說,在你編程生涯中,有多少 bug 是應為錯誤的變量類型引起的?

                      Ruby 用來解決這個問題的方式是宣揚測試文化。也就是說,你的代碼的可靠性跟你的測試掛鉤,而不是你的方法聲明。

                      8. Ruby 缺少企業級的支持

                      恐怕你孤陋寡聞了吧?聽說過 Engine Yard嗎?沒有?他們提供非常出色的企業級 Ruby 支持。

                      所謂的企業級支持是很久以前企業通過綁定用戶銷售昂貴的,可靠的,最新的技術來獲得收入。但是你必須這么做嗎?難道你是如此的無能,因為缺少所謂的“支持”就不去選擇一項合適的技術?

                      讓我問你一個問題:你認為微軟需要多久才能發現,修復,承認,并且發布一個IIS的安全補丁?再想想,你真的認為金錢驅動的壟斷企業關心你 Web 應用的安全性嗎?

                      在以開源代碼為代表的技術創新時代,為了所謂的支持選擇一個封閉的,壟斷的技術,就是選擇了落后所有人一步。正大眼睛看看這些公司吧,Basho, Redhat, Canonical, 10gen, Cloudera, Engine Yard,他們提供開源的技術,并且提供企業級的付費支持。

                      9. Ruby 沒有很好的可擴展性

                      這是很老的話題,要追溯到 Twitter 剛剛開始的時候。當 Twitter 飛速發展的時候,他們必須修改 ActiveRecord 中深層次的代碼以獲得在 Rails 中支持多個 MySQL 數據庫。不幸的是,人們混淆了 Ruby 和 Rails。在 Twitter 這個案例中忽略了 Twitter 的快速成長得益于 Rails 的易于使用和快速開發。

                      任何成功的應用到最后都會遇到擴展性問題。Facebook 最后把 PHP 編譯成了 C++,Twitter 轉向了 Scala, Youtube 依然使用 Python,Apache 和 MySQL。沒有任何兩個 Web 應用是完全一樣的,我們應該從成功的 Web 應用中學習經驗,而不是上來就宣布某項技術的擴展性強于另外一項技術。

                      10. 尋找有經驗的 Ruby 程序員很困難

                      這倒是真的,但取決于你在世界的哪個地方。比如在 Israel,.NET 和 PHP 盛行,所以找到好的 Ruby 程序員是很困難的。但是你知道嗎?在那里更難找到有經驗的 Javascript 開發者!

                      非要較真的話,我也可以說找到好的 PHP 程序員比 Ruby 更困難。因為 PHP 社區分散,用戶生成的文檔和不一致的 API 是的學習難度提高。

                      不要因為困難而放棄一樣好東西,你可以自己培養 Ruby 開發者。我的意思是,如果你認為 Ruby 是正確的技術,那么為什么不多投入一些呢?

                      原文鏈接:10-reasons-not-to-use-ruby

                    QQ群:WEB開發者官方群(515171538),驗證消息:10000
                    微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
                    提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
                    網友評論(共1條評論) 正在載入評論......
                    理智評論文明上網,拒絕惡意謾罵 發表評論 / 共1條評論
                    登錄會員中心
                    福彩试机号今天