程式語言大對決!Ruby和Python誰更可讀?
也許很多人認為,程式設計只要被計算機讀懂就可以了。
但是對於除錯人員,或者維護人員來說,也得需要易懂可讀。
總之,越是容易理解和閱讀的程式碼當然越好了。
這不,關於程式語言Python和Ruby誰更可讀,網友都吵翻了。
很多網友站隊Ruby,這是為什麼呢?
Ruby大戰Python
其實,Ruby和Python幾乎沒有區別。
如果一個Python程式設計師打開了一個Ruby程式碼庫,他不需要外部資料也能輕鬆弄懂它。
反過來Ruby程式設計師也是如此。
然而,Ruby程式設計師不太可能像Python程式設計師瀏覽Ruby程式碼庫那樣輕鬆地瀏覽Python程式碼庫。
接下來本文將告訴你原因。
先讓我們先用Python來建立一個類「部落格文章」。
我想要列印這篇部落格文章的標題,在Python中有兩種方法可以實現:
第一種是簡單的列印屬性(attribute)。
第二個是在我們的類中新增一個 __str__ 方法:
這樣我們就能更輕鬆地列印標題了。
那如果我想要改變這篇部落格的標題呢?
同樣很簡單。
讓我們看看同樣的步驟在Ruby裡表現如何。
類運行同樣很輕鬆。
讓我們來試著列印這篇部落格的標題。
oops!出現了未定義的方法(undefined method)。
在Ruby中,無法像在Python中那樣訪問例項變數。你需要一個getter。
你也不能直接設定屬性——你需要一個setter:
現在我們再試著執行看看。
到現在Python和Ruby的可讀性似乎都不錯,等等,讓我們看看下面的測試。
在Python裡,我們可以通過BlogPost.count或post.count訪問帖子的數量。
而在Ruby中,我們可以訪問post.count,但我們不能像在 Python 中那樣訪問 BlogPost.count。
由於這是一個類變數,我們需要能夠從類本身訪問它。
現在我們可以使用BlogPost.count了,但我們不用post.count,因為它可能與常規例項變數混淆。
現在我們只能從BlogPost 類中訪問count,那我們可以設定類變數嗎?
讓我們試試看。
OMG,我們從來沒有為這個變數定義過setter。
放到Python裡怎麼樣?
有用了,我們甚至可以在類裡完成這一操作。
那麼有人就要問了,Ruby的物件更直接嗎?
我認為在 Ruby 中更容易看出類和例項屬性之間的區別。
Setter 和 getter 允許您清楚地指定哪些屬性是可讀和可寫的。
您可以通過不實現 setter 來保護您的類屬性。在Python中,很容易意外寫入count屬性——這會破壞你的程式。
預設情況下,post.count 和 BlogPost.count 都返回屬性的值,但如果它只能從類中訪問,則更容易注意到它是類屬性。文章最後的結論說,顯然Python和Ruby都比PHP或Java更容易閱讀,但Ruby更近了一步,它寫出來的程式碼讓你一眼就能看明白。
網友爭論
關於Python和Ruby誰更可讀,網友們在評論區展開了激烈的討論。
單獨看,我認為Ruby比Python更具可讀性,並且容易理解。實際上,Ruby程式碼並非如此。一旦有人開始進行高階超程式設計,你就想殺了他然後把他給埋了。
使用Ruby編寫的Web應用開發框架Rails在很大程度上可以通過自主設計、良好的文件,以及已經編寫問題答案的大量使用者群來擺脫這些困境。
網友大讚,這確實反映了我真實的經歷。Ruby是一門非常一致的語言,但我認為人們真正迷戀 Ruby 的是超程式設計,也包括我自己在內,很快你將需要在大腦中掌握大量上下文來理解所有正在發生的「魔力」。
有人就對其進行了反駁。
我精通的Python,直到現在我仍然無法在Ruby中做任何有用的事情。其實,Python比Ruby更具可讀性、易懂。
我同意,對於這兩種語言的新手來說,Ruby的@和@@可能會使閱讀起來有點困難,而且對我來說似乎更冗長,Python獲勝。
還有網友直接搬出了Ruby設計者Yukihiro Matsimuto曾說過的話,
我沒有讓Ruby對於每個人來說都很完美,因為每個人感受不同。沒有一種語言可以完美地適合所有人。
對於Guido van Rossum來說,最完美的語言可能是Python。
我希望看到Ruby能夠讓世界上每個程式設計師變得高效,享受程式設計,並且快樂程式設計。這是Ruby語言的主要目的。
有網友認為這篇文章就是在諷刺。每次比較之後,當他們說Ruby更易讀時,我都以為他們是在開玩笑,直到看到了多重繼承這部分。
要說,Python和Ruby真正受歡迎程度,那絕對是Python獲勝。
就拿GitHub在2021年底釋出的年度報告來看,除了霸榜的JavaScript,Python是第二受歡迎的程式語言。
Ruby的受歡迎程度也是近年來連續下降。
從應用廣泛程度上來看,Python的應用範圍更廣。
除了web開發外,Python還被廣泛用在伺服器後端的高效能伺服器實現,各種密集運算,全文檢索,各種文字處理,系統管理等等。
那麼,Ruby的應用僅限在web開發領域。
再從薪資待遇上來看,
根據線上社群Glassdoor的資料,Ruby開發人員的平均年薪應約為76,540美元,或每月大概6380美元。
Python開發人員的平均年薪為92,000美元,相當於每月近7670美元。
這麼來看,Python開發人員薪水要比Ruby的高,每月多出來1000多美元。
不管怎麼說,Python和Ruby更像是拼音輸入和五筆輸入的感覺。Python語言更簡單,適合初學者,而Ruby的語法更豐富,要求更高。
那麼,你覺得這兩種語言哪個更易懂可讀?
- Spring中實現非同步呼叫的方式有哪些?
- 帶引數的全型別 Python 裝飾器
- 整理了幾個Python正則表示式,拿走就能用!
- SOLID:開閉原則Go程式碼實戰
- React中如何引入CSS呢
- 一個新視角:前端框架們都卷錯方向了?
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 手寫程式語言-遞迴函式是如何實現的?
- 一文搞懂模糊匹配:定義、過程與技術
- 新來個阿里 P7,僅花 2 小時,做出一個多執行緒永動任務,看完直接跪了
- Puzzlescript,一種開發H5益智遊戲的引擎
- @Autowired和@Resource到底什麼區別,你明白了嗎?
- CSS transition 小技巧!如何保留 hover 的狀態?
- React如此受歡迎離不開這4個主要原則
- LeCun再炮轟Marcus: 他是心理學家,不是搞AI的
- Java保證執行緒安全的方式有哪些?
- 19個殺手級 JavaScript 單行程式碼,讓你看起來像專業人士
- Python 的"self"引數是什麼?
- 別整一坨 CSS 程式碼了,試試這幾個實用函式
- 再有人問你什麼是MVCC,就把這篇文章發給他!