我從Stephen A. Goss那讀到關(guān)于了《Python 3正在毀滅Python》。這篇文章有不少精彩的論點(diǎn),但我卻并不認(rèn)為Python 3是在毀滅Python,也不認(rèn)為整個(gè)局面對Python一點(diǎn)也不利。
但是正如那些比較俗氣的格言所說,也許每一次危機(jī)也意味著一次機(jī)遇。
也許Python 3能振興Python。
顯然,麻煩的不僅僅是Python 2到Python 3的移植。時(shí)間不再是2005年了,年輕的程序員不再對Python的哪一個(gè)版本如此的激動了。不錯(cuò),現(xiàn)在市場上有很多Python的職位,但與此同時(shí)有更多的Java的職位。并且話說在從前市場上還有很多Perl的職位呢——據(jù)說現(xiàn)在不怎么樣了。我的重點(diǎn)不是說職位的個(gè)數(shù)或者GitHub上面的倉庫的個(gè)數(shù),我的重點(diǎn)是思想和熱情。我知道這有一點(diǎn)主觀,但我感覺Python最近在這兩方面有所缺失。
舉個(gè)例子來說我們看到人們正在從Python轉(zhuǎn)向Go。
盡管并不多,但是這個(gè)現(xiàn)象卻很值得注意(包括整個(gè)新建的開發(fā)小組發(fā)博客聲稱要移植他們的代碼庫),也足以產(chǎn)生一些輿論了(也能讓Rob Pike大吃一驚了,他最初希望人們從C/C++轉(zhuǎn)向Go)。
Python所面臨的挑戰(zhàn)來自西面八方。有的挑戰(zhàn)在某一領(lǐng)域蠶食Python的份額(例如新的不同步的項(xiàng)目會更加喜歡Node或者Go而不是Twisted,Rails仍然在web框架中占有主導(dǎo)地位),某一專業(yè)的直接競爭(例如科學(xué)計(jì)算的Julia),以及普遍的競爭(Clojure,Groovy,Javascript,Dart等)。
所以這兒是我對于Python 3的想法,很簡單的想法:
讓Python變得誘人
Python 3已經(jīng)和Python 2不兼容了,并且人們也并沒有成群結(jié)隊(duì)的向Python 3移植,因此增加一些不兼容的改變不僅沒有壞處,反而對這門語言更有好處了。
老實(shí)講,如果Python 3有足夠多的誘人的新特色,更多的人會愿意移植到到Python 3的(至少他們新的項(xiàng)目會),并且越來越多的人會去移植他們Python 2的庫和項(xiàng)目。更甚,在下愚見,這會吸引更多的現(xiàn)在沒有在用Python的人們。
大家已經(jīng)看到,Python 3是一個(gè)乏味的更新。
誠然,Python 3讓Python更加的清晰明了,并且也修正了一些長久的問題和令人頭疼的地方。但是它卻沒有帶來那么大的改變。話說回來,在Python 3在構(gòu)思的時(shí)候它的思路被設(shè)定得很寬松。Javascript那個(gè)時(shí)候也沒有那么流行。YouTube還沒有誕生。那可是很久以前的事了。
現(xiàn)如今像合適的包絡(luò),不可變性,好的異步性等等可是犀利的黑客們考慮的重點(diǎn)。
話不多說,下面列舉了一些可能讓Python 3變得有趣的建議。至少對于我來說這會引起我的興趣:
- 移除全局解釋器鎖(GIL,Global Interpreter Lock)。或者提供一個(gè)好的異步處理機(jī)制。Guido的PEP 3156說不準(zhǔn)可以解決這個(gè)問題。能擁有類似諸如Go的通道(channels)的原語也是挺好的。
- 讓Python更快。如果Javascript能變快,CPython也能變得很快。或者PyPy可以足夠成熟以替代CPython(應(yīng)該只能有一個(gè)存在才對)。如果需要像Lars Bak這樣的大咖來做,去Kickstarter——我會出錢的。讓大公司也不好意思得也貢獻(xiàn)一點(diǎn)。不是說Dropbox也花錢開發(fā)他們基于Python的LLVM么?
- 增加類型。嗯,是opt-in類型。這樣你能用來加快你的代碼速度(對CPython來說),或者確保以有助于類型檢查(對Dart來說)。在標(biāo)準(zhǔn)庫中加入類型注解。
- 改進(jìn)標(biāo)準(zhǔn)庫。找一個(gè)團(tuán)隊(duì)去過一下這些標(biāo)準(zhǔn)庫,修正那些長期存在的煩人的問題,提高速度并且修正bug。改進(jìn)這些庫的API,并為通用的東西提供更加簡便的接口(對比一下requests和urllib)和現(xiàn)有的標(biāo)準(zhǔn)庫一起提供一個(gè)名字域不一樣的新的改進(jìn)后的標(biāo)準(zhǔn)庫。并且,讓他們的轉(zhuǎn)換能很方便的進(jìn)行(也許可以通過某種自動化的工具完成)。
- 改進(jìn)“讀取-求值-輸出循環(huán)”(REPL,Read-Eval-Print Loop)。拜托現(xiàn)在已經(jīng)是2014年了。用現(xiàn)代的方法重新做做REPL吧。加點(diǎn)顏色什么的。參考下IPython好了。把它弄成個(gè)Client/server的東西,這樣IDE和編輯器可以嵌入它。
所以說Python 3的開發(fā)人員,慢慢來。嗯,但也不要太慢了。大概3、4年的樣子吧。我們等ES6等了10年吧,3、4年我們還是能等的。
看起來也不是所有人都在用Python 3,那么冒一點(diǎn)險(xiǎn)好了。打破常規(guī)。更早更頻繁的發(fā)布吧。多和社區(qū)打交道。
各位,Python 3其實(shí)也沒有真的在殺死Python。但是它也許能從正在殺死它的東西中拯救它。
后記:你怎么看?你能想到更多的讓Python 3更加誘人的點(diǎn)子么?什么樣的新功能能激發(fā)你的興趣呢?