自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編程語(yǔ)言大對(duì)決!Ruby和Python誰(shuí)更可讀?

開發(fā) 新聞
計(jì)算機(jī)編程語(yǔ)言Python和Ruby誰(shuí)更易懂可讀,網(wǎng)友們展開了激烈論戰(zhàn)。

也許很多人認(rèn)為,編程只要被計(jì)算機(jī)讀懂就可以了。

但是對(duì)于調(diào)試人員,或者維護(hù)人員來(lái)說(shuō),也得需要易懂可讀。

總之,越是容易理解和閱讀的代碼當(dāng)然越好了。

這不,關(guān)于編程語(yǔ)言Python和Ruby誰(shuí)更可讀,網(wǎng)友都吵翻了。

圖片

很多網(wǎng)友站隊(duì)Ruby,這是為什么呢?

Ruby大戰(zhàn)Python

?其實(shí),Ruby和Python幾乎沒(méi)有區(qū)別。

如果一個(gè)Python程序員打開了一個(gè)Ruby代碼庫(kù),他不需要外部資料也能輕松弄懂它。

反過(guò)來(lái)Ruby程序員也是如此。

然而,Ruby程序員不太可能像Python程序員瀏覽Ruby代碼庫(kù)那樣輕松地瀏覽Python代碼庫(kù)。

圖片

接下來(lái)本文將告訴你原因。

先讓我們先用Python來(lái)創(chuàng)建一個(gè)類「博客文章」。

圖片

我想要打印這篇博客文章的標(biāo)題,在Python中有兩種方法可以實(shí)現(xiàn):

圖片

第一種是簡(jiǎn)單的打印屬性(attribute)。

圖片

第二個(gè)是在我們的類中添加一個(gè) __str__ 方法:

圖片

這樣我們就能更輕松地打印標(biāo)題了。

圖片

那如果我想要改變這篇博客的標(biāo)題呢?

同樣很簡(jiǎn)單。

圖片

讓我們看看同樣的步驟在Ruby里表現(xiàn)如何。

圖片

類運(yùn)行同樣很輕松。

圖片

讓我們來(lái)試著打印這篇博客的標(biāo)題。

圖片

oops!出現(xiàn)了未定義的方法(undefined method)。

在Ruby中,無(wú)法像在Python中那樣訪問(wèn)實(shí)例變量。你需要一個(gè)getter。

圖片

你也不能直接設(shè)置屬性——你需要一個(gè)setter:

圖片

現(xiàn)在我們?cè)僭囍\(yùn)行看看。

圖片

到現(xiàn)在Python和Ruby的可讀性似乎都不錯(cuò),等等,讓我們看看下面的測(cè)試。

在Python里,我們可以通過(guò)BlogPost.count或post.count訪問(wèn)帖子的數(shù)量。

圖片

而在Ruby中,我們可以訪問(wèn)post.count,但我們不能像在 Python 中那樣訪問(wèn) BlogPost.count。

由于這是一個(gè)類變量,我們需要能夠從類本身訪問(wèn)它。

圖片

現(xiàn)在我們可以使用BlogPost.count了,但我們不用post.count,因?yàn)樗赡芘c常規(guī)實(shí)例變量混淆。

圖片

現(xiàn)在我們只能從BlogPost 類中訪問(wèn)count,那我們可以設(shè)置類變量嗎?

讓我們?cè)囋嚳础?/span>

圖片

OMG,我們從來(lái)沒(méi)有為這個(gè)變量定義過(guò)setter。

放到Python里怎么樣?

圖片圖片

有用了,我們甚至可以在類里完成這一操作。

那么有人就要問(wèn)了,Ruby的對(duì)象更直接嗎?

我認(rèn)為在 Ruby 中更容易看出類和實(shí)例屬性之間的區(qū)別。

Setter 和 getter 允許您清楚地指定哪些屬性是可讀和可寫的。

您可以通過(guò)不實(shí)現(xiàn) setter 來(lái)保護(hù)您的類屬性。在Python中,很容易意外寫入count屬性——這會(huì)破壞你的程序。

默認(rèn)情況下,post.count 和 BlogPost.count 都返回屬性的值,但如果它只能從類中訪問(wèn),則更容易注意到它是類屬性。文章最后的結(jié)論說(shuō),顯然Python和Ruby都比PHP或Java更容易閱讀,但Ruby更近了一步,它寫出來(lái)的代碼讓你一眼就能看明白。

網(wǎng)友爭(zhēng)論

關(guān)于Python和Ruby誰(shuí)更可讀,網(wǎng)友們?cè)谠u(píng)論區(qū)展開了激烈的討論。

圖片

單獨(dú)看,我認(rèn)為Ruby比Python更具可讀性,并且容易理解。實(shí)際上,Ruby代碼并非如此。一旦有人開始進(jìn)行高級(jí)元編程,你就想殺了他然后把他給埋了。

使用Ruby編寫的Web應(yīng)用開發(fā)框架Rails在很大程度上可以通過(guò)自主設(shè)計(jì)、良好的文檔,以及已經(jīng)編寫問(wèn)題答案的大量用戶群來(lái)擺脫這些困境。

圖片

網(wǎng)友大贊,這確實(shí)反映了我真實(shí)的經(jīng)歷。Ruby是一門非常一致的語(yǔ)言,但我認(rèn)為人們真正迷戀 Ruby 的是元編程,也包括我自己在內(nèi),很快你將需要在大腦中掌握大量上下文來(lái)理解所有正在發(fā)生的「魔力」。

有人就對(duì)其進(jìn)行了反駁。

圖片圖片

我精通的Python,直到現(xiàn)在我仍然無(wú)法在Ruby中做任何有用的事情。其實(shí),Python比Ruby更具可讀性、易懂。

我同意,對(duì)于這兩種語(yǔ)言的新手來(lái)說(shuō),Ruby的@和@@可能會(huì)使閱讀起來(lái)有點(diǎn)困難,而且對(duì)我來(lái)說(shuō)似乎更冗長(zhǎng),Python獲勝。

圖片

還有網(wǎng)友直接搬出了Ruby設(shè)計(jì)者Yukihiro Matsimuto曾說(shuō)過(guò)的話,

我沒(méi)有讓Ruby對(duì)于每個(gè)人來(lái)說(shuō)都很完美,因?yàn)槊總€(gè)人感受不同。沒(méi)有一種語(yǔ)言可以完美地適合所有人。

對(duì)于Guido van Rossum來(lái)說(shuō),最完美的語(yǔ)言可能是Python。

我希望看到Ruby能夠讓世界上每個(gè)程序員變得高效,享受編程,并且快樂(lè)編程。這是Ruby語(yǔ)言的主要目的。

圖片

有網(wǎng)友認(rèn)為這篇文章就是在諷刺。每次比較之后,當(dāng)他們說(shuō)Ruby更易讀時(shí),我都以為他們是在開玩笑,直到看到了多重繼承這部分。

圖片

要說(shuō),Python和Ruby真正受歡迎程度,那絕對(duì)是Python獲勝。

就拿GitHub在2021年底發(fā)布的年度報(bào)告來(lái)看,除了霸榜的JavaScript,Python是第二受歡迎的編程語(yǔ)言。

Ruby的受歡迎程度也是近年來(lái)連續(xù)下降。

圖片

從應(yīng)用廣泛程度上來(lái)看,Python的應(yīng)用范圍更廣。

除了web開發(fā)外,Python還被廣泛用在服務(wù)器后端的高性能服務(wù)器實(shí)現(xiàn),各種密集運(yùn)算,全文檢索,各種文本處理,系統(tǒng)管理等等。

那么,Ruby的應(yīng)用僅限在web開發(fā)領(lǐng)域。

圖片

再?gòu)男劫Y待遇上來(lái)看,

根據(jù)在線社區(qū)Glassdoor的數(shù)據(jù),Ruby開發(fā)人員的平均年薪應(yīng)約為76,540美元,或每月大概6380美元。

Python開發(fā)人員的平均年薪為92,000美元,相當(dāng)于每月近7670美元。

這么來(lái)看,Python開發(fā)人員薪水要比Ruby的高,每月多出來(lái)1000多美元。

不管怎么說(shuō),Python和Ruby更像是拼音輸入和五筆輸入的感覺(jué)。Python語(yǔ)言更簡(jiǎn)單,適合初學(xué)者,而Ruby的語(yǔ)法更豐富,要求更高。

那么,你覺(jué)得這兩種語(yǔ)言哪個(gè)更易懂可讀?

責(zé)任編輯:張燕妮 來(lái)源: 新智元
相關(guān)推薦

2017-02-24 19:08:48

PythonPHPRuby

2009-05-18 09:12:59

JavaRuby on RaiMVC

2017-10-09 08:45:13

編程語(yǔ)言Amazon AtheSharePoint

2017-01-20 16:55:13

編程PHPRuby Python

2017-01-20 17:40:12

PHP vs Ruby

2022-05-31 09:57:36

編程語(yǔ)言Go語(yǔ)言Python

2017-09-13 15:37:53

2014-11-26 10:49:32

編程語(yǔ)言

2009-07-21 10:04:57

Scala編程語(yǔ)言

2014-11-26 09:40:02

編程語(yǔ)言Ruby

2010-03-10 19:46:07

Python編程語(yǔ)言

2023-09-06 12:11:21

ChatGPT語(yǔ)言模型

2025-03-26 02:55:00

2019-07-30 07:30:56

編程語(yǔ)言PythonJava

2017-11-22 08:47:02

2013-11-12 11:06:10

扁平化UI設(shè)計(jì)

2011-09-22 16:10:09

編程語(yǔ)言

2011-07-12 09:12:54

PowerShellPowerCLI

2012-09-04 11:20:31

2018-04-15 16:11:57

RubyMatz語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)