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

Python 3 正在毀滅 Python

開發(fā) 后端 前端
對(duì)于 Python 社區(qū)來(lái)說,Python 3 是最糟糕的的一個(gè)東西了。我依舊記得,當(dāng)我第一次使用Python的時(shí)候,我已經(jīng)在C++的領(lǐng)域摸爬滾打了很長(zhǎng)時(shí)間,Python對(duì)我來(lái)說就像是一本圣經(jīng)。

對(duì)于 Python 社區(qū)來(lái)說,Python 3 是最糟糕的的一個(gè)東西了。我依舊記得,當(dāng)我***次使用Python的時(shí)候,我已經(jīng)在C++的領(lǐng)域摸爬滾打了很長(zhǎng)時(shí)間,Python對(duì)我來(lái)說就像是一本圣經(jīng)。我可以隨便打開一個(gè)文本編輯器,幾秒鐘或幾分鐘之后,一個(gè)可以正常工作的程序就誕生了,而不用去花費(fèi)幾小時(shí)或幾天的時(shí)間。我仍記得,Python 2.5問世的時(shí)候添加了許多好用的新特性。我愛Python,但同時(shí)我也承認(rèn)她有缺點(diǎn),但是還都說得過去,所有的語(yǔ)言都有缺點(diǎn)。她的優(yōu)勢(shì)在于她很有趣。盡管Python 3相比Python 2來(lái)說有了一些小的提升,但是她丟掉了很多Python 2的優(yōu)勢(shì)。

Python 2最重要的一個(gè)優(yōu)勢(shì)在于擁有眾多的第三方庫(kù),可以用來(lái)做任何事情,但是Python 3沒有這個(gè)優(yōu)勢(shì)。誠(chéng)然,有很多的庫(kù)已經(jīng)移植到Python 3了,但是有更多的庫(kù)沒有移植,也不容易移植。例如,你需要解析 X,但是X不像YAML和JSON那樣容易解析。很可能有一個(gè)第三方的解析器可供選擇,但是只可以用Python 2,而沒有針對(duì)Python 3的移植版本。此外,加之Python 2中的字節(jié)字符串(str)和Python 3 中的字節(jié)字符串(bytes)之間有著功能上的差異,使得這更難移植。而事實(shí)上,移植它非常困難,并且需要很多的小技巧(trick)來(lái)兼容Python 2和Python 3。所以,你有兩種選擇,要么使用Python 2 (已經(jīng)不建議使用的語(yǔ)言)快速的開發(fā)你的程序,但這會(huì)花費(fèi)你十倍以上的時(shí)間去移植相關(guān)的庫(kù)(以及所有的依賴)。要么,使用另一門同樣擁有很多庫(kù)的編程語(yǔ)言,但是不用再困擾于Python 2 / 3之間的問題。第二種選擇顯然不受歡迎,因?yàn)槿绻覀冞@樣做了,在我們的生產(chǎn)環(huán)境中已經(jīng)有很多Python 3的程序了并且大部分Python 2的庫(kù)需要被移植。不管這些情況是否存在,人們要么繼續(xù)使用Python 2開發(fā)程序,要么選擇另一門不會(huì)打自己臉的語(yǔ)言。

Python 2的另外一個(gè)優(yōu)點(diǎn)是,用它寫的程序幾乎不用更改就可以運(yùn)行在下一版本上。如果你的軟件是基于Python 2的,那么就可能花費(fèi)一大筆錢才能將其遷移至Python 3,因?yàn)槟阈枰墓こ炭赡芟喈?dāng)?shù)卮?,并且塞滿了各種類庫(kù)手冊(cè),而他們不能被遷移。這在商業(yè)策略上非常不明智,因?yàn)槟悴坏貌粸榇嘶ㄙM(fèi) 大量的金錢和工程師的時(shí)間才能把工程遷移到Python 3。你不妨問問其他人將整個(gè)代碼遷移到Ruby,或者,那還更劃算。至此,要是你不得不重寫你的軟件,你還會(huì)選擇Python 3嗎?不。

大多數(shù)比較受歡迎并且支持兼容Python 2和Python3的庫(kù)是通過運(yùn)行在各自平臺(tái)上的語(yǔ)言子集(subset)來(lái)寫的。我最喜歡的Python庫(kù)之一的SQLAlchemy做的很好,Django也是這樣做的,但是稍有遜色。語(yǔ)言子集,我稱之為Python X,并不那么好用,需要很怪異的hack,并且通常性能不如Python2 或 Python 3。將現(xiàn)有的Python 2的庫(kù)移植到Python X有趣嗎?沒有什么趣味可言,反而很悲哀,因?yàn)檎怯捎谟腥げ旁炀土私裉斓腜ython。

不幸的是,Python 2 已經(jīng)不推薦使用了,Python 3用的也不多。Python 3 的改變比較小,沒有得到多少,反倒失去了不少。在過去的幾個(gè)月里,我使用Python 3編寫程序和服務(wù)。我個(gè)人感覺(沒有吹噓的意思),和用Python 2 寫程序沒有太多差別,除了第三方的庫(kù)少一些。真沒有其他的令人眼前一亮的了。Python的社區(qū)原本要在過去的幾年中轉(zhuǎn)移到Python 3,但是,他們逐漸發(fā)現(xiàn),人們正在轉(zhuǎn)向新的語(yǔ)言(或重新改進(jìn)過的舊語(yǔ)言)。這些語(yǔ)言大都擁有非常棒的功能,像強(qiáng)大的類型系統(tǒng),模式匹配,更好的性能,更好的支持線程和高并發(fā),更簡(jiǎn)單的FFI,更好的lambda表達(dá)式等等。

一種解決方案是fork Python 2.7,并繼續(xù)開發(fā)它,以向后兼容的方式添加新的功能,以便大多數(shù)不能移植的Python 2的應(yīng)用程序可以繼續(xù)演化和改善,并給人們和花費(fèi)了大量時(shí)間來(lái)開發(fā)它的公司帶來(lái)價(jià)值。這是正確的事(實(shí)際上,如果Guido和其他Python社區(qū)中的***以官方的名義這樣做而不是強(qiáng)制fork就更好了)。Python 3中的功能需要向后移植到Python 2,并且需要發(fā)布Python 2.8。對(duì)于少數(shù)已經(jīng)在使用純Python 3開發(fā)程序的人來(lái)說,可以使用像3to2這樣的工具來(lái)兼容Python 2.8。之后,Python 3就可以逐漸的退居幕后,這樣以來(lái),那些Python庫(kù)的維護(hù)者就可以使用Python 2而不用使用Python X了。

雖然還有些別的方案,但復(fù)興Python 2明顯是現(xiàn)在應(yīng)該做的,其他的都不值一提。因?yàn)楣俜降呢?fù)責(zé)人對(duì)Python 2的使用者十分不屑,所以別指望他們會(huì)來(lái)復(fù)興Python 2。如果社區(qū)不重振旗鼓并復(fù)興Python 2,那Python 3在幾年后就會(huì)變成Python的標(biāo)準(zhǔn),同時(shí)很多相應(yīng)的類庫(kù)會(huì)被接入(盡管大多數(shù)肯定永遠(yuǎn)都不可能),很多的投資會(huì)失去。到那時(shí),整個(gè)社區(qū)就會(huì)很明顯地萎縮,失去她原有的光輝??纯碢erl的下場(chǎng)吧,人們會(huì)離開去別的地方。

英文原文:Python 3 is killing Python

譯文鏈接:http://www.oschina.net/translate/python-3-is-killing-python

責(zé)任編輯:林師授 來(lái)源: 開源中國(guó)社區(qū) 編譯
相關(guān)推薦

2020-11-16 19:05:08

Python編程語(yǔ)言開發(fā)

2020-10-18 12:07:16

Python開發(fā)科學(xué)

2019-08-26 15:41:51

2018-03-27 10:25:47

3D打印模型3D打印市場(chǎng)

2014-12-16 11:02:06

PythonGitHub

2018-09-13 08:19:50

Python Java 編程語(yǔ)言

2009-02-04 17:33:24

ibmdwPython

2011-02-18 16:51:19

2016-09-20 09:18:29

存儲(chǔ)

2011-02-16 09:21:44

ReactOSWindows

2023-10-16 08:57:52

2014-07-24 09:30:37

PythonPython 3

2023-09-07 10:47:47

2021-10-08 07:50:57

軟件設(shè)計(jì)程序

2017-05-10 11:30:28

人工智能

2011-12-26 09:38:56

2013-12-04 10:00:56

PythonR語(yǔ)言數(shù)據(jù)科學(xué)家

2010-02-03 10:36:00

HTML 5Flash視頻

2021-07-09 10:20:32

人工智能AI開發(fā)

2022-08-24 08:17:14

RedisRDBAOF
點(diǎn)贊
收藏

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