人們為什麼不使用Python3?

ourjs發表於2014-01-03

  關於Python 3

  Python 社群的朋友和開發者們,我們們一起聊聊Python3吧。Python3在2008年12月3日首次釋出。當時廣泛的說法是:程式設計師接受Python3將是一個漫長的過程,這個過程被預期為五年。現在,我們剛剛度過了這個標誌性的5年。

  在Python 3釋出起初以及隨後的幾年裡,我感到非常興奮,像個傳教士一樣宣傳它,把自己的專案移植到它上面去。在過去一兩年裡,我啟動的每一個新專案從一開始就採用Python 3開發。

  最近半年,我一直在反思Python3的地位,興奮逐漸被失落取代。

  人們通常的看法是:在Python3流行的頭幾年,一些開源專案將會跟隨潮流,隨之而來的Python3浪潮,將會像開閘的洪水一樣一發而不可收。在用Python語言寫的Web開源框架Django的世界裡,這種看法意味著我們需要一個Web伺服器閘道器介面(WSGI)規範,使資料庫驅動用Python3編寫,接著我們開發人員才可以向Python3轉變,最後才能使我們的使用者接受Python 3。

  當下,所有必備的條件都有了:Django(以及很多Django上的第三方App)現在已經支援Python3了,NumPy以及其他很多科學計算庫都支援Python3,Python本身的幾個新版本也都已經發布了。但是,使用者們仍舊不使用Python3。

  看一看Python包的下載統計,我們可以發現:Python3包下載量佔不到2%。更糟糕的是,幾乎沒有程式碼是為Python3而寫的。當我說我所有的新程式碼支援Python3,但是我卻用Python2編譯器在本地執行,我測試時,也是用Python2編譯器。 Trivis CI用Python3為我執行了這些程式碼,當然,我的程式碼不全是用Python 3寫的。擁有大規模Python程式碼庫的公司,我所瞭解的,沒有一個公司寫Python 3程式碼,並且基本上沒有一個在考慮將他們的程式碼庫向Python 3轉變。

  從Python3.1時代開始,人們經常說的是,Python3新的特性和標準庫的新特性將會作為激勵人們升級Python3的動力。不要誤會!Python3.3中確實有一些很酷的東西,但事實上,99%的人卻無法用到這些功能。所以,當給別人說:“Python3中有很多好功能”,我實際上在心裡說:“去你媽的,騙你的!”,因為對使用者來講,狀況根本沒有改觀,相容性問題依然存在。

  除了上面所提到的這些,有一點對Python自身的發展也有極其惡劣的影響,那就是“沒有使用者反饋”這一環節。Python 3僅僅在被較早接受它的人使用,這個事實意味著來自使用者的對於新功能的反饋幾乎沒有,即使有,這一小部分人的意見也不能完全代表整個Python社群。當我們對Python3.X系列研究越深,它反而會變得越糟糕。如今,我們正在其他特性上開發新的功能,但是可惜的是,這些功能未能受到實際的廣泛使用。

  人們為什麼不使用Python3?

  首先,我認為是缺乏緊迫感。許多年前,在我還不知道如何程式設計的時候,使Python 3版本和Python 2版本並存的決議已經存在。回想起來,這是一個錯誤,這導致Python社群徹底缺乏進步的緊迫感,這種緊迫感的匱乏逐漸使進步意識蕩然無存。

  第二,我覺得Python 3從根本上來講很無趣,這使得掌握它的人很少。它也沒有人們想要的“big ticket items”,像移除GIL或追求更優良的效能(為了追求效能,多大會選擇PyPy)。反而,它有許多新庫和小的調整,很多有經驗的Python開發者們總會習慣性避免這些不一致的地方。當然,不管需要付出多麼長的時間去升級,人們的開發也不會停下來。即使Python 2看起來要在這裡待一段時間,這也阻止不了他們開發的腳步。

  我們現在身處何地?

  總之,不是一個幸福的地方。首先,我認為,我們很多人需要切實認識到Python 3的現狀。尤其是這樣的事實:在過去的幾年裡,對於普通的Python開發人員而言,Python語言沒有變得更好。對我們Python社群而言,使Python 2和Python 3走兩條不同道路是錯誤的,我們需要把它們整合在一起。 我有一個想法:釋出一款Python 2.8,修補Python 3的每個新特徵。同時棄用所有向後相容方式不能改變的東西,例如,str + unicode將產生一條警告,同樣的,沒有from _ _future_ _import unicode_literals的所有檔案也會產生警告。使用者需要能夠趕上連續的升級過程,Python 3破壞了這個過程,我們來解決它。 這只是我的想法,我們需要更多的想法來建起Python 2和Python 3之間的橋樑,因為隨著每個Python 3新版本的釋出,它們間的鴻溝會越來越大。

  感謝Maciej Fijalkowski和其他人的評論。不用說,剩下的是鄙人的拙見。

  原文 alexgaynor.net 作者:Alex Gaynor 翻譯:Tianyi_Ting

相關文章