人們為什麼不使用Python3?
關於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
相關文章
- GC是什麼?為什麼我們要去使用它GC
- 請轉發給你們老闆--為什麼人們恨工作?
- 為什麼不建議使用gotoGo
- 機器人能為我們做點什麼?人類不必恐慌機器人
- 為什麼我們做分散式使用Redis?分散式Redis
- 我們為什麼要使用CRM系統?
- 我們為什麼要使用GO語言?Go
- 為什麼工廠老闆們從不「迷信」人工智慧?人工智慧
- 為什麼不建議使用eval和with?
- 為什麼java不推薦使用vectorJava
- 我們為什麼需要模擬服務機器人?機器人
- 為什麼玩家不願在遊戲裡當壞人?遊戲
- 為什麼有些技術人員不寫部落格?
- 為什麼我們越來越不喜歡用網站?網站
- 為什麼我們不喜歡IT行業的7個原因行業
- 為什麼有很多名人讓人們警惕人工智慧?人工智慧
- 為什麼電話機器人回答不上問題?機器人
- 為什麼我們需要 VuexVue
- 我們為什麼要用RedisRedis
- 我們為什麼而工作
- 為什麼客戶不喜歡我們開發的軟體
- 為什麼IDEA不推薦你使用@Autowired ?Idea
- 為什麼 Android 中不建議使用 EnumsAndroid
- 為什麼Spring官方不推薦使用 @Autowired?Spring
- Typescript 中的泛型是什麼 - 為什麼使用它們,它們如何與程式碼示例一起使用TypeScript泛型
- 程式設計師收入那麼高,為什麼卻從不見他們炫富?程式設計師
- 什麼是Web workers?為什麼我們需要他Web
- 為什麼我們總樂此不疲的在遊戲中釣魚?遊戲
- 為什麼我們要使用無伺服器架構伺服器架構
- oracle為什麼不走索引Oracle索引
- 為什麼,不推薦使用STOP()方法? 對程式有什麼影響嗎?
- 為什麼不建議使用免費的IP代理?
- 為什麼 Mac 使用者不選擇 LinuxMacLinux
- 在css中為什麼說不建議使用@import?CSSImport
- 為什麼開發者不喜歡市場人員的 8 個理由
- 美團二面:為什麼不推薦使用 MyBatis 二級快取?大部分人都答不上來!MyBatis快取
- 淺談DAST,什麼是DAST,開發人員為什麼要使用它?AST
- 為什麼不建議使用自定義Object作為HashMap的key?ObjectHashMap