Python是一個(gè)糟糕的編程語言
我會(huì)再說一次:Python是一種糟糕的編程語言,今天它是如此受歡迎的唯一原因是因?yàn)楣雀柙?000年代的第一個(gè)十年推動(dòng)它。
Python的創(chuàng)造者Guido Van Rossum,實(shí)際上在谷歌2005年到2012年工作。Go和Dart并不圍繞(或至少他們不眾名人知)和C#中的人氣(偷竊Java的開發(fā)人員)谷歌可能覺得他們需要自己的語言。他們可能會(huì)想要擁抱Java,因?yàn)樗麄円呀?jīng)使用它是Android的,但他們一定是偏執(zhí)狂,因?yàn)樗麄円呀?jīng)與Oracle簽訂了法律問題。因此,無論出于何種原因,他們采用Python。我想在一個(gè)替代宇宙中,他們可以選擇,例如,Lua,也許在那里宇宙會(huì)成為今天的主導(dǎo)語言。當(dāng)然,Lua有點(diǎn)奇怪,所以它可能會(huì)畢竟沒有選擇那個(gè)。
但是,讓我們談?wù)劄槭裁碢ython糟透了。很難談?wù)摓槭裁从行〇|西糟透了,特別是在它流行時(shí),但這篇文章將是一種嘗試。我將覆蓋語言本身,而不是其表現(xiàn)或其實(shí)施。我將大多將其與Java和C#進(jìn)行比較,因?yàn)檫@些是兩個(gè)眾所周知的,成熟的語言,在軟件行業(yè)中有很多現(xiàn)實(shí)的使用量超過十五年。
碎片的語言
很長一段時(shí)間,Python有兩個(gè)主要版本在野外跑去。當(dāng)然,它們是Python 2和3,它們彼此不相容。所以你被涂上這種奇怪的情況,谷歌會(huì)說“來找伙計(jì)們,學(xué)習(xí)一些Python,這很酷!”然后你會(huì)下載它,你會(huì)選擇版本2和3之間的選擇,也許谷歌會(huì)告訴你“選擇3!”其他人會(huì)告訴你“選擇2!”然后,您會(huì)發(fā)現(xiàn)3只幾乎沒有任何兼容的庫,沒有人使用它,并且3為什么開發(fā)的原因是為打印函數(shù)和表情符號支持添加括號。最近只有情況得多。例如,Ubuntu最近逐步淘汰了Python 2。
丑陋的面向?qū)ο?/h3>
Python中的一個(gè)類看起來像這樣:
- class Car:
- def __init__(self):
- self.color = "red"
- self.wheels = 4
- def get_wheels(self):
- return f"{self.wheels}!"
我希望你喜歡那些self關(guān)鍵字,因?yàn)槟銜?huì)在Python的任何地方看到它們。
這是指類的實(shí)例變量的方式。它就像Java或C#中的這個(gè)關(guān)鍵字,只有在Python中,他們需要,因?yàn)镻ython是愚蠢的。
請注意此類有2個(gè)實(shí)例變量:color和wheels?請參閱如何在構(gòu)造函數(shù)中聲明并初始化它們?Python愚蠢的另一個(gè)例子。
你可能想知道“我如何使他們私有實(shí)例變量?”好吧,答案是你沒有。你不能。在Python中沒有私有實(shí)例變量如此。
您在Python中可以做得最好的是用兩個(gè)下劃線啟動(dòng)它們,如下所示:self .__ color =“red”
這是導(dǎo)致Python解釋器要敲打變量的名稱,因此它無法從類外部訪問(但有一些持久性,如果您想要,您仍然可以從類外部訪問變量)。所以它不會(huì)成為私有變量,但它變得令人作嘔。
當(dāng)然,它有效,但來了。想要在C#或Java中定義私有實(shí)例變量?將關(guān)鍵字私有放在前面。
如果您向Python開發(fā)人員詢問了這一點(diǎn),他們將回復(fù):“不要訪問另一個(gè)類的實(shí)例變量,lol”。一般來說,當(dāng)你指出他們的語言中的任何缺陷時(shí),Python開發(fā)人員將采取敵意和居高臨下。
空格
啊,空格。Python垃圾的另一個(gè)原因。在一個(gè)明智語言范圍中,程序塊是用括號完成的,或者開始和結(jié)束關(guān)鍵字,或類似的東西。但不是在Python!Python認(rèn)為向空格提供語義含義很好。為什么在地球上他們會(huì)給出語義含義,這是無法看到的東西嗎?誰認(rèn)為這是一個(gè)好主意?
雷德德特史蒂夫·霍夫曼的聯(lián)合創(chuàng)始人表示:
當(dāng)我們雇用新員工……我不認(rèn)為我們還聘請了一名了解Python的員工。我只是說,“你寫的一切都需要在Python。”所以我可以讀它。它真棒,因?yàn)槲铱梢詮姆块g里看到,看著他們的屏幕,他們的代碼是好還是壞的。 |
所以即使我想相信這個(gè)家伙能夠從整個(gè)房間做代碼評論,如何使用的空格比卷曲括號更好?在幾乎任何其他現(xiàn)代語言中,使用縮進(jìn)是寫入方法時(shí)的常態(tài)。只有在Python中,標(biāo)簽和空間之間的區(qū)別會(huì)導(dǎo)致口譯員有心臟病發(fā)作。
動(dòng)態(tài)類型
動(dòng)態(tài)類型很糟糕,任何不同意我的人可能都沒有寫過足夠的軟件來實(shí)現(xiàn)它。通過動(dòng)態(tài)鍵入,程序的增長越大,它變得更加明顯。我預(yù)測,在未來,所有主流編程語言都將靜態(tài)鍵入,并且使用動(dòng)態(tài)類型的語言將像使用弓箭一樣。您將能夠在YouTube頻道原始技術(shù)上以動(dòng)態(tài)類型的語言觀看人員編程。最近出現(xiàn)的語言,如類型簽字,給我希望。
一些Python程序員已經(jīng)意識到動(dòng)態(tài)鍵入是糟糕的,所以現(xiàn)在我們有Mypy,但如果你要向Python添加類型的注釋,你為什么不僅僅是像Java或C#這樣的語言?
常數(shù)
Python沒有常數(shù)。我的意思是,如果你在文章中邁出了這一點(diǎn),你期望了什么?使變量常量的問題,Python開發(fā)人員的建議是“只是不改變它”。
皇帝沒有衣服
Python是一個(gè)案例研究,人們?nèi)绾螄L試與某些東西一起生活,適應(yīng)它,并合理化他們對它的熱愛,所有,而不是將其扔出并找到更好的東西。這樣也許這是一種愛的信息,或希望,或者什么的?不知何故,來自1991年的這個(gè)副本語言超過了幾種更新的語言,對此做任何事情可能為時(shí)已晚。 2014年,它成為大學(xué)最受歡迎的介紹性教學(xué)。
因此,我們將開始看到更多的孩子用Python進(jìn)入業(yè)界作為他們的主要語言,并且Python只會(huì)隨著越來越多的軟件在其中編寫了越來越多的軟件。在這份寫作時(shí),它目前在Tiobe指數(shù)上排名第2,該公司指定Python“2020年的編程語言”。如果您想在2021年做機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué),答案是使用Python,因?yàn)樗蔷哂写蠖鄶?shù)庫支持的語言。至少我們可以感恩谷歌沒有選擇。
原文鏈接:https://medium.com/nerd-for-tech/python-is-a-bad-programming-language-2ab73b0bda5