Python編程語言與Ruby之間的比較
Python編程語言在使用中有不少的問題需要我們去學習。當然在和其他的編程語言比較的時候,Ruby就是首要的比較對象。下面我們就來看看Python編程語言和Rub之間的比較。
最近,我需要一種快速開發語言,目前炙手可熱的快速開發語言就是Python和Ruby了。Ruby和Python編程語言都是非常優秀的腳本語言,雖然他們的設計哲學幾乎完全不同,但他們效率差不多,應用領域也差距不大,似乎天生就是競爭對手。到底選那個呢?我做了一些簡單的比較。
我們比較兩種語言的時候,拋開性能問題不說,一般最在意的大概就是資源和學習曲線。
總體的印象,用一個不大恰當的比喻:如果Python編程語言是Java,那么Ruby就是.net。我們知道,Java世界非常復雜,非常多樣性,任何一個需求,都會有很多開源項目,他們用不同的思想來實現,性能特點迥異,到底選那個,總是令人犯難。現在Python也是如此,而由于Python編程語言開發難度遠遠低于Java,導致Python的相關項目比Java還要多得多。#t#
資源上,兩者社區都很強,有趣的是,現在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能不能作到這一點,還需要時間來證明。