選Ruby還是選Python?
最近,我需要一種快速開發語言,目前炙手可熱的快速開發語言就是Python和Ruby了。Ruby和Python都是非常優秀的指令碼語言,雖然他們的設計哲學幾乎完全不同,但他們效率差不多,應用領域也差距不大,似乎天生就是競爭對手。到底選那個呢?我做了一些簡單的比較。
我們比較兩種語言的時候,拋開效能問題不說,一般最在意的大概就是資源和學習曲線。
總體的印象,用一個不大恰當的比喻:如果Python是Java,那麼Ruby就是.net。我們知道,Java世界非常複雜,非常多樣性,任何一個需求,都會有很多開源專案,他們用不同的思想來實現,效能特點迥異,到底選那個,總是令人犯難。現在Python也是如此,而由於Python開發難度遠遠低於Java,導致Python的相關專案比Java還要多得多。
資源上,兩者社群都很強,有趣的是,現在Java社群存在被Ruby同化的危險,至少我訂閱的幾個Java blog聚合中談Ruby比Java還多。Ruby的社群較為集中,Python則比較分散。我總懷疑Ruby的日本使用者較多,但因為不懂日文,很難確認這個想法。對於一個母語非英語的創始人,我總是有點恐懼,怕很難理解他,怕很難得到最新訊息等等,雖然這個擔心目前看來並無必要,不過,誰知道會怎麼樣呢!
Ruby之所以現在突然變得熱門,和rails這套架構是分不開的。考慮Ruby,就要考慮到Ruby on rails。rails提供了一套非常好的web開發框架,開發效率非常高。Python雖然有很多類似的架構實現,但並沒有出現一個能夠一統江湖的架構。Python的zend雖然完整,但更偏向於web伺服器,不能用來和rails比較。
Ruby比pyton更容易上手。從語言特徵看,Ruby有很多有意思的創造,比如說block,但大規模的應用這些好玩的東西讓程式變得混亂。Python語法強調簡單,但是由於太靈活,簡單得太過分,於是傳統程式設計師經常會看到一些令人大吃一驚的表達方式。我不知道這應該算優點還是缺點,至少我認為語法過於靈活,容易導致不同程式設計師的程式碼風格差異過大,增加了學習成本。
初期入門,Ruby更容易,但一旦達到一定複雜度,那麼Ruby的難度驟然加大。Python入門不容易,複雜的時候也不會太痛苦。rails有入門簡單,深入難的問題。rails生成的目錄是做什麼用途?o/r mapping如何實現的?如何把資料從web中傳遞到資料庫的。這些都是Ruby程式設計師早晚要面對的問題。Python則不會這樣,如果搞不清楚這些,大概根本沒辦法開始。整合度太高的快速開發工具都有這個特點,無論是VB、Delphi,還是.net,有多少使用了半年以內的開發人員可以說清楚工程目錄下面所有的檔案的用途、每個檔案中的語法?我相信很多很有經驗的使用者也未必說的清楚。
從架構上看,二者雖然實際上相差甚遠,但最後表現出來的結果反而很相似。Ruby是純粹的OO語言,而Python是函式和OO混合型。雖然Ruby也能用函式風格的編碼方式,但實際上是模擬出來的。他們的這個差距對於普通的程式設計師影響並不大,畢竟看起來差不多。
總體來說,如果是非專業人員初嘗開發,Ruby是合適的。對於專業的程式設計師,我還是建議選擇Python。
對於未來發展,我認為Python的發展可預見,會較為平穩。Python已經屬於一個社群,而非一個人,但Ruby由於種種原因,Ruby的作者maze的意志仍然會對Ruby的發展造成較大影響。Sun控制著Java,但由於sun的資源強大,且組織了jcp進行統籌,所以Java發展很不錯,但Ruby能不能作到這一點,還需要時間來證明。
我們比較兩種語言的時候,拋開效能問題不說,一般最在意的大概就是資源和學習曲線。
總體的印象,用一個不大恰當的比喻:如果Python是Java,那麼Ruby就是.net。我們知道,Java世界非常複雜,非常多樣性,任何一個需求,都會有很多開源專案,他們用不同的思想來實現,效能特點迥異,到底選那個,總是令人犯難。現在Python也是如此,而由於Python開發難度遠遠低於Java,導致Python的相關專案比Java還要多得多。
資源上,兩者社群都很強,有趣的是,現在Java社群存在被Ruby同化的危險,至少我訂閱的幾個Java blog聚合中談Ruby比Java還多。Ruby的社群較為集中,Python則比較分散。我總懷疑Ruby的日本使用者較多,但因為不懂日文,很難確認這個想法。對於一個母語非英語的創始人,我總是有點恐懼,怕很難理解他,怕很難得到最新訊息等等,雖然這個擔心目前看來並無必要,不過,誰知道會怎麼樣呢!
Ruby之所以現在突然變得熱門,和rails這套架構是分不開的。考慮Ruby,就要考慮到Ruby on rails。rails提供了一套非常好的web開發框架,開發效率非常高。Python雖然有很多類似的架構實現,但並沒有出現一個能夠一統江湖的架構。Python的zend雖然完整,但更偏向於web伺服器,不能用來和rails比較。
Ruby比pyton更容易上手。從語言特徵看,Ruby有很多有意思的創造,比如說block,但大規模的應用這些好玩的東西讓程式變得混亂。Python語法強調簡單,但是由於太靈活,簡單得太過分,於是傳統程式設計師經常會看到一些令人大吃一驚的表達方式。我不知道這應該算優點還是缺點,至少我認為語法過於靈活,容易導致不同程式設計師的程式碼風格差異過大,增加了學習成本。
初期入門,Ruby更容易,但一旦達到一定複雜度,那麼Ruby的難度驟然加大。Python入門不容易,複雜的時候也不會太痛苦。rails有入門簡單,深入難的問題。rails生成的目錄是做什麼用途?o/r mapping如何實現的?如何把資料從web中傳遞到資料庫的。這些都是Ruby程式設計師早晚要面對的問題。Python則不會這樣,如果搞不清楚這些,大概根本沒辦法開始。整合度太高的快速開發工具都有這個特點,無論是VB、Delphi,還是.net,有多少使用了半年以內的開發人員可以說清楚工程目錄下面所有的檔案的用途、每個檔案中的語法?我相信很多很有經驗的使用者也未必說的清楚。
從架構上看,二者雖然實際上相差甚遠,但最後表現出來的結果反而很相似。Ruby是純粹的OO語言,而Python是函式和OO混合型。雖然Ruby也能用函式風格的編碼方式,但實際上是模擬出來的。他們的這個差距對於普通的程式設計師影響並不大,畢竟看起來差不多。
總體來說,如果是非專業人員初嘗開發,Ruby是合適的。對於專業的程式設計師,我還是建議選擇Python。
對於未來發展,我認為Python的發展可預見,會較為平穩。Python已經屬於一個社群,而非一個人,但Ruby由於種種原因,Ruby的作者maze的意志仍然會對Ruby的發展造成較大影響。Sun控制著Java,但由於sun的資源強大,且組織了jcp進行統籌,所以Java發展很不錯,但Ruby能不能作到這一點,還需要時間來證明。
相關文章
- 選擇python還是web前端好PythonWeb前端
- 選擇 Python3.6 還是 Python 3.7Python
- Python初學者,選擇Python2還是選擇Python3好?Python
- 人生苦短,我選Python,C++,還是Java?PythonC++Java
- 怎樣選擇TCP還是選擇UDPTCPUDP
- Python 選列表 list 還是元組 tuple 的思考Python
- 面試題:“選redis還是memcache”面試題Redis
- 畫流程圖,選Visio還是選億圖Edraw流程圖
- 學習Python選擇Python2還是Python3呢?Python
- Java選擇自學還是培訓?Java
- Java之外選擇Scala還是Groovy?Java
- 軟體選型兩難困境 選SaaS還是本地部署?
- 程式設計師:選擇效率,還是選擇質量?程式設計師
- 學Python選什麼系統好?Windows還是Linux?PythonWindowsLinux
- 資料科學領域,你該選 Python 還是 R ?資料科學Python
- 你應該選擇 Ubuntu 還是 Fedora?Ubuntu
- 選擇HTTPS代理還是SOCKS代理?HTTP
- iOS 開發選擇OC還是Swift?iOSSwift
- React 還是 Vue:你該如何選擇?ReactVue
- 開發該選擇Blocks還是DelegatesBloC
- 管理 node 版本,選擇 nvm 還是 n?
- 非程式設計師選擇學習C++還是Python?程式設計師C++Python
- netty系列之:選byte還是選message?這是一個問題Netty
- 學Python應該選擇Linux系統還是Windows系統?PythonLinuxWindows
- 想要從事資料分析,選擇python還是R語言呢?PythonR語言
- 如何選擇谷歌seo還是adwords廣告?谷歌
- 分析選擇Salesforce CRM還是Zoho CRM(上)Salesforce
- 選redis還是memcache,原始碼怎麼說?Redis原始碼
- ajax中該選json還是normal formJSONORM
- 微服務選擇Spring Cloud還是Dubbo?微服務SpringCloud
- php還是java,選擇比努力更重要!PHPJava
- 虛擬共享儲存:選iSCSI還是NFS?NFS
- 8月1日雲棲精選夜讀|資料科學領域,你該選Python還是R?資料科學Python
- 學習python選擇線上好還是線下好?各有哪些優劣勢?Python
- 參加IT程式設計培訓,究竟是選擇Python還是Java?程式設計PythonJava
- 小程式還是APP,企業該如何選擇?APP
- 前端週刊第59期:選 Flow 還是 TypeScript?前端TypeScript
- “選redis還是memcache”,面試官究竟想考察啥?Redis面試