Python 3 能振興 Python

果果夫斯基發表於2014-08-14

我從Stephen A. Goss那讀到關於了《Python 3正在毀滅Python》。這篇文章有不少精彩的論點,但我卻並不認為Python 3是在毀滅Python,也不認為整個局面對Python一點也不利。

但是正如那些比較俗氣的格言所說,也許每一次危機也意味著一次機遇。

也許Python 3能振興Python。

顯然,麻煩的不僅僅是Python 2到Python 3的移植。時間不再是2005年了,年輕的程式設計師不再對Python的哪一個版本如此的激動了。不錯,現在市場上有很多Python的職位,但與此同時有更多的Java的職位。並且話說在從前市場上還有很多Perl的職位呢——據說現在不怎麼樣了。我的重點不是說職位的個數或者GitHub上面的倉庫的個數,我的重點是思想和熱情。我知道這有一點主觀,但我感覺Python最近在這兩方面有所缺失。

舉個例子來說我們看到人們正在從Python轉向Go。

儘管並不多,但是這個現象卻很值得注意(包括整個新建的開發小組發部落格聲稱要移植他們的程式碼庫),也足以產生一些輿論了(也能讓Rob Pike大吃一驚了,他最初希望人們從C/C++轉向Go)。

Python所面臨的挑戰來自西面八方。有的挑戰在某一領域蠶食Python的份額(例如新的不同步的專案會更加喜歡Node或者Go而不是Twisted,Rails仍然在web框架中佔有主導地位),某一專業的直接競爭(例如科學計算的Julia),以及普遍的競爭(Clojure,Groovy,Javascript,Dart等)。

所以這兒是我對於Python 3的想法,很簡單的想法:

Python變得誘人

Python 3已經和Python 2不相容了,並且人們也並沒有成群結隊的向Python 3移植,因此增加一些不相容的改變不僅沒有壞處,反而對這門語言更有好處了。

老實講,如果Python 3有足夠多的誘人的新特色,更多的人會願意移植到到Python 3的(至少他們新的專案會),並且越來越多的人會去移植他們Python 2的庫和專案。更甚,在下愚見,這會吸引更多的現在沒有在用Python的人們。

 

大家已經看到,Python 3是一個乏味的更新。

誠然,Python 3讓Python更加的清晰明瞭,並且也修正了一些長久的問題和令人頭疼的地方。但是它卻沒有帶來那麼大的改變。話說回來,在Python 3在構思的時候它的思路被設定得很寬鬆。Javascript那個時候也沒有那麼流行。YouTube還沒有誕生。那可是很久以前的事了。

現如今像合適的包絡,不可變性,好的非同步性等等可是犀利的黑客們考慮的重點。

 

話不多說,下面列舉了一些可能讓Python 3變得有趣的建議。至少對於我來說這會引起我的興趣:

  1. 移除全域性直譯器鎖(GIL,Global Interpreter Lock)。或者提供一個好的非同步處理機制。Guido的PEP 3156說不準可以解決這個問題。能擁有類似諸如Go的通道(channels)的原語也是挺好的。
  2. 讓Python更快。如果Javascript能變快,CPython也能變得很快。或者PyPy可以足夠成熟以替代CPython(應該只能有一個存在才對)。如果需要像Lars Bak這樣的大咖來做,去Kickstarter——我會出錢的。讓大公司也不好意思得也貢獻一點。不是說Dropbox也花錢開發他們基於Python的LLVM麼?
  3. 增加型別。嗯,是opt-in型別。這樣你能用來加快你的程式碼速度(對CPython來說),或者確保以有助於型別檢查(對Dart來說)。在標準庫中加入型別註解。
  4. 改進標準庫。找一個團隊去過一下這些標準庫,修正那些長期存在的煩人的問題,提高速度並且修正bug。改進這些庫的API,併為通用的東西提供更加簡便的介面(對比一下requests和urllib)和現有的標準庫一起提供一個名字域不一樣的新的改進後的標準庫。並且,讓他們的轉換能很方便的進行(也許可以通過某種自動化的工具完成)。
  5. 改進“讀取-求值-輸出迴圈”(REPL,Read-Eval-Print Loop)。拜託現在已經是2014年了。用現代的方法重新做做REPL吧。加點顏色什麼的。參考下IPython好了。把它弄成個Client/server的東西,這樣IDE和編輯器可以嵌入它。

 

所以說Python 3的開發人員,慢慢來。嗯,但也不要太慢了。大概3、4年的樣子吧。我們等ES6等了10年吧,3、4年我們還是能等的。

看起來也不是所有人都在用Python 3,那麼冒一點險好了。打破常規。更早更頻繁的釋出吧。多和社群打交道。

各位,Python 3其實也沒有真的在殺死Python。但是它也許能從正在殺死它的東西中拯救它。

 

後記:你怎麼看?你能想到更多的讓Python 3更加誘人的點子麼?什麼樣的新功能能激發你的興趣呢?

相關文章