歡迎關(guān)注“創(chuàng)世紀(jì)”微信訂閱號(hào):Sina創(chuàng)世紀(jì)

正文/尼克·希斯編譯/科技行者

世界上有幾百種編程語言,但真正流行的只有20多種,Python就是其中之一。許多年前,吉多·范·羅蘇姆創(chuàng)造了Python,并成為今天的“Python之父”。面對(duì)數(shù)百萬忠實(shí)粉絲,尼克希思和范羅森討論了Python的過去和未來。

1994年底,一群來自美國(guó)各地的精英程序員開會(huì)討論如何創(chuàng)造一種新的秘密武器。

巴里·華沙是20名參與者之一,他仍然記得第一次研討會(huì)的興奮。“我記得有人反復(fù)強(qiáng)調(diào),‘不要告訴別人我們?cè)谶@里,因?yàn)槲覀兊腜ython是獨(dú)一無二的技能?!?

當(dāng)時(shí)在馬里蘭國(guó)家標(biāo)準(zhǔn)局工作的華沙意識(shí)到Python語言會(huì)帶來一些前所未有的東西,大大降低代碼編寫和開發(fā)任務(wù)的難度?!拔业谝淮我姷絇ython的時(shí)候,就知道里面一定有不尋常的東西。它非常重視可讀性,寫Python代碼也挺有意思的。”華沙回憶道。

▲圖片:1994年,巴里華沙在首屆Python研討會(huì)上發(fā)言。

現(xiàn)在的Python已經(jīng)比原來的小團(tuán)隊(duì)開發(fā)人員激起了遠(yuǎn)更多的熱情。有人預(yù)測(cè)Python很快會(huì)成為世界上最流行的編程語言,因?yàn)樗匀灰员绕渌Z言快得多的速度吸引著更多的新用戶。每天都有數(shù)百萬人使用Python,就增長(zhǎng)而言,到目前為止它的用戶指數(shù)幾乎沒有下降。

Python被眾多專業(yè)和業(yè)余開發(fā)人員用來處理大大小小的任務(wù),尤其是網(wǎng)絡(luò)開發(fā)人員、數(shù)據(jù)科學(xué)家和系統(tǒng)管理員。今年早些時(shí)候,Python拼湊了第一張完整的來自約5億公里外黑洞的照片(如下圖所示),就像它支持世界各地?zé)o數(shù)計(jì)算機(jī)上的腳本一樣。

Python在眾多世界知名組織中發(fā)揮著關(guān)鍵作用,包括:幫助向全球超過1億個(gè)家庭傳輸視頻流,為圖片共享應(yīng)用Instagram提供支持,協(xié)助NASA推廣Tai 空的探索等。

Python,一個(gè)早期的故事

從某些角度來說,Python與它的名字來源——英國(guó)著名喜劇組合“Python與圣杯”驚人地相似。同樣在自己的少數(shù)受眾中,Python語言獲得了名氣,并迅速積累了巨大的影響力。

編程語言是由荷蘭程序員吉多·范·羅蘇姆作為一個(gè)輔助項(xiàng)目建立的。在20世紀(jì)80年代后期,范·羅森在荷蘭的CWI國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)中心開發(fā)了一個(gè)分布式系統(tǒng)。由于對(duì)現(xiàn)有編程語言的缺點(diǎn)感到沮喪,他決定創(chuàng)造一種新的語言——易于使用且功能齊全的語言。

對(duì)于一個(gè)局外人來說,創(chuàng)建自己的編程語言在我聽來就像是“我想自己造一架飛機(jī)”。然而,30多歲的范·羅森有自己的優(yōu)勢(shì)。他在CWI的一個(gè)團(tuán)隊(duì)中工作了三年,并創(chuàng)造了一種解釋性編程語言ABC。所以他已經(jīng)深刻理解了負(fù)責(zé)執(zhí)行程序員指令的解釋器在構(gòu)建過程中存在哪些問題,新語言需要哪些語法構(gòu)建單元。

▲圖片:吉多·范·羅蘇姆拍攝于2001年,當(dāng)時(shí)Python軟件基金會(huì)成立。

說了這么多,當(dāng)時(shí)van Rossum只能用有限的編程語言進(jìn)行項(xiàng)目開發(fā),難度可想而知。他當(dāng)時(shí)研究的阿米巴分布式計(jì)算系統(tǒng)只支持C或者Unix shell,兩者都有很大的局限性。c不僅需要開發(fā)人員手動(dòng)管理內(nèi)存(這項(xiàng)工作極其復(fù)雜),而且其導(dǎo)航機(jī)制也有很多錯(cuò)誤空;此外,C語言缺乏可以顯著減少開發(fā)人員日常工作的可重用代碼庫(kù)——換句話說,開發(fā)人員必須在每個(gè)新項(xiàng)目中重新發(fā)明輪子。另一方面,Unix shell也有它自己的問題——雖然它為常見任務(wù)提供了一套完整的實(shí)用程序,但是它運(yùn)行太慢,不能處理復(fù)雜的邏輯。

考慮到這些語言給開發(fā)者帶來的局限性,看來范·羅素姆創(chuàng)建自己的口譯語言確實(shí)是最好的選擇,可以直接借用ABC語言的最佳特性。

他說:“我當(dāng)時(shí)的想法很簡(jiǎn)單,‘你為什么不自己創(chuàng)造一種語言呢?’它可以借鑒ABC自己的思路,讓原本需要三年完成的項(xiàng)目,縮減到一個(gè)人,三個(gè)月內(nèi)就可以開發(fā)出來。作為一種默默無名的嘗試,Python正式進(jìn)入了醞釀期。"

1989年底,范·羅森開始努力工作,并決定借用他最喜歡的喜劇團(tuán)體蒙蒂Python的名字。有了與蛇相關(guān)的Python的名字和包裝好的logo,他把所有的時(shí)間都投入到了這個(gè)項(xiàng)目上。

雖然創(chuàng)造Python可以幫他名義上完成其他任務(wù),但van Rossum認(rèn)為最大的動(dòng)力來自于獨(dú)立創(chuàng)造語言帶來的挑戰(zhàn)和鼓勵(lì)。

他說:“我還記得,對(duì)我來說,提高工作效率最重要的是我相信我能做到。在某種程度上,我真的希望創(chuàng)造一個(gè)偉大的項(xiàng)目,列出我想要的代碼,讓它按照我想要的方式布局和設(shè)計(jì)。編程對(duì)我來說是一件非常有趣的事情?!?/p>

雖然單獨(dú)創(chuàng)建一種編程語言聽起來不太可靠,但范·羅松同志做得很好。80年代末,各種主流語言最大的問題就是給開發(fā)者帶來了極大的挫敗感。拉里·沃爾曾經(jīng)有一句名言,在開發(fā)Perl語言的過程中,最大的動(dòng)力主要來自于語言本身在解決編碼問題上的笨拙,以及設(shè)計(jì)中所體現(xiàn)的各種“懶惰、急躁、傲慢”。同樣,約翰·奧斯特胡特(John Ousterhout)在構(gòu)建集成電路交互工具的過程中,在糟糕現(xiàn)狀的驅(qū)動(dòng)下設(shè)計(jì)了Tcl。

短短三個(gè)月,van Rossum開發(fā)了一個(gè)Python解釋語言的工作原型。他說這個(gè)原型缺乏現(xiàn)代功能,但是已經(jīng)具備了Python目前所具備的各種特性。

他指出“今天Python中有很多重要的抽象;當(dāng)時(shí)沒有,但是語言本身看起來很像。”

“當(dāng)時(shí),我已經(jīng)開發(fā)了解釋器和語言的所有基本組件。從第一個(gè)Python解釋器出來的簡(jiǎn)單Python程序,到今天依然可以正常運(yùn)行?!彼a(bǔ)充說,函數(shù)的定義方式完全相同,縮進(jìn)機(jī)制完全相同,字典和元組使用完全相同的語法,甚至用戶在Python中開發(fā)時(shí)也面臨完全相同的交互提示。

然而,盡管他的兩位同事接受了這種語言,并立即開始使用它,但范·羅森對(duì)它在當(dāng)時(shí)的廣泛流行并沒有抱太大期望。畢竟他們都很清楚,在互聯(lián)網(wǎng)時(shí)代之前,掌握一門編程語言有多難。

與只需點(diǎn)擊幾下就可以完成軟件共享的方式不同,80年代的軟件發(fā)布非常困難。范·羅森回憶起他第一次推廣ABC的解釋性語言時(shí)的艱難歷程。

范·羅森說:“我還記得那是1985年左右,我去美國(guó)度假。那是我第一次去美國(guó)。我把帶ABC語言的磁帶放在行李箱里?!?/p>

他通過當(dāng)時(shí)剛剛成型的基本電子郵件系統(tǒng)獲得了對(duì)該語言感興趣的開發(fā)人員的地址和電話號(hào)碼列表。由于傳輸容量有限,注冊(cè)信息是郵件所能承載的極限。他只能挨家挨戶郵寄這些磁帶。盡管付出了巨大的努力,但農(nóng)行并沒有成功。

“因?yàn)檫@個(gè)發(fā)行難度,農(nóng)行雖然也有一系列優(yōu)秀的功能,但是并沒有走太遠(yuǎn)?!钡请S著互聯(lián)網(wǎng)革命的蓬勃發(fā)展,Python可以輕松地分發(fā)給用戶,而不需要裝滿磁帶的行李箱。

1991年,范·羅森通過alt.sources新聞組向全世界發(fā)布了Python語言。這是一個(gè)開源許可,開源許可的概念出現(xiàn)才六年。雖然Python解釋器仍然是由多達(dá)21個(gè)獨(dú)立的壓縮文件組成,需要在Usenet網(wǎng)絡(luò)上通宵下載,但是效率還是比幾年前的人工郵寄要高很多。

他說:“我希望這種新的語言能在一定程度上取得成功,但我以前嘗試過,但最終只是徒勞。”

根據(jù)以往的經(jīng)驗(yàn),van Rossum開始關(guān)注Python用戶,發(fā)現(xiàn)它已經(jīng)成長(zhǎng)了很久。漸漸地,他意識(shí)到相關(guān)的生態(tài)正在建立。在與Python社區(qū)進(jìn)行了一段時(shí)間的定期交流之后,他意識(shí)到他可能已經(jīng)創(chuàng)造了一種有望取得巨大成功的編程語言。

“我認(rèn)為這個(gè)實(shí)施將會(huì)非常非常緩慢。在我們完成第一個(gè)開源版本后,我為新版本制定了一個(gè)計(jì)劃,并與新興的Python社區(qū)進(jìn)行了討論。這種感覺很棒,有種干大事的感覺?!?/p>

Python為什么成功?

從這個(gè)意義上來說,Python的黃金時(shí)代正在一步步的接近。然而,直到20世紀(jì)90年代初至中期,這種年輕的語言才真正引起了全世界的關(guān)注。

范·羅森認(rèn)為,開發(fā)人員被Python吸引是因?yàn)樗诘谝淮蝿?chuàng)建這種語言時(shí)就感覺到了問題。開發(fā)人員想要一種高級(jí)的腳本語言,它在易用性和功能性之間達(dá)到理想的平衡,并且在處理像Unix shell這樣的復(fù)雜邏輯時(shí)沒有各種限制。他們希望擺脫C語言給開發(fā)人員帶來的內(nèi)存管理問題,面對(duì)基本相同的任務(wù),他們不愿意在每個(gè)項(xiàng)目開始時(shí)重寫實(shí)現(xiàn)代碼。

根據(jù)華沙的說法,Python在實(shí)用性上找到了一個(gè)平衡,而沒有犧牲優(yōu)秀的功能——在20世紀(jì)90年代初,沒有其他主流編程語言能達(dá)到這種平衡。他說:“當(dāng)時(shí)我在寫很多Perl,Tcl,C代碼,但是一點(diǎn)樂趣都沒有。然后Python出現(xiàn)了,我就覺得,‘哇,編程終于又有趣了!’"

Python帶來了清晰的語法,其中代碼是按縮進(jìn)分組的,這使得開發(fā)人員更容易理解代碼的含義。

高德納應(yīng)用平臺(tái)戰(zhàn)略團(tuán)隊(duì)研究總監(jiān)Fintan Ryan表示,這種清晰性讓Python贏得了很多開發(fā)者的心。無論在當(dāng)時(shí)還是現(xiàn)在,這種利用縮進(jìn)實(shí)現(xiàn)代碼分組的方法都是非常重要的,堪稱天才首創(chuàng)?!八峁┝朔浅:?jiǎn)潔的語法。我們?cè)谑褂闷渌Z言時(shí)需要強(qiáng)制執(zhí)行,但是Python可以自動(dòng)執(zhí)行。當(dāng)然,有些程序員喜歡這樣,有些則非常討厭這樣的設(shè)計(jì)?!?/p>

其實(shí)Python優(yōu)先考慮代碼可讀性也不是偶然的。范·羅森說,編程語言和開發(fā)人員之間的思想交流非常重要。畢竟編程的本質(zhì)是程序員告訴計(jì)算機(jī)做什么。

除了可讀性,Ryan說Python從早期就提供了一系列的內(nèi)置函數(shù),這使得它在其他編程語言中脫穎而出。他說,“Python從一開始就有類、異常處理等功能。Python還提供了對(duì)lambda、map、filter等函數(shù)的支持,這些函數(shù)在很多場(chǎng)景下都非常實(shí)用。”

如果20世紀(jì)80年代末的那些編程語言更完美,Python可能永遠(yuǎn)不會(huì)有光明的未來。事實(shí)上,van Rossum創(chuàng)建Python的動(dòng)機(jī)之一是,Perl腳本語言與他使用的阿米巴分布式計(jì)算系統(tǒng)不兼容。他指出,“Python最幸運(yùn)的一點(diǎn)是,Perl根本無法移植到阿米巴上。如果我能完成這樣的移植,我想我根本不會(huì)想到開始創(chuàng)建自己的編程語言。”

盡管Python在發(fā)布后很快吸引了許多鐵桿用戶,但直到20世紀(jì)90年代,它仍然是一種利基編程語言。Van Rossum說,該語言的主要競(jìng)爭(zhēng)對(duì)手包括Tcl/Tk和Perl,它們和python一樣,非常重視易用性和功能豐富這兩個(gè)目標(biāo)。

他指出,“在90年代,如果要對(duì)這三種語言進(jìn)行排名,Perl肯定是第一位的——而且它的優(yōu)勢(shì)超級(jí)明顯。Tcl/Tk排第二,Python只能排第三。”

今天的皮托恩與過去不同。根據(jù)年度堆棧溢出開發(fā)者調(diào)查(目前最全面的編程語言使用排名之一),Python已經(jīng)成為活躍開發(fā)者數(shù)量增長(zhǎng)最快的編程語言,而Perl已經(jīng)萎縮到可以忽略不計(jì)的程度。下圖也展示了Python的爆炸式增長(zhǎng)。目前,棧溢出上Python相關(guān)問題的數(shù)量遠(yuǎn)遠(yuǎn)超過任何其他編程語言。

▲圖:根據(jù)Stack Overflow數(shù)據(jù),在主流編程語言(包括Java、Java、C#、PHP、C++、python)的增長(zhǎng)趨勢(shì)中,Python的用戶呈現(xiàn)出了較大的增長(zhǎng)。圖像源/堆棧溢出

那么,Python是如何超越老對(duì)手的呢?為什么設(shè)計(jì)理念相似的兩種語言會(huì)遇到不同的命運(yùn)?Van Rossum認(rèn)為,一旦代碼庫(kù)增長(zhǎng)到一定規(guī)模,接下來的考驗(yàn)就是維護(hù)代碼庫(kù)的難度。他說:“人們普遍認(rèn)為,對(duì)于一個(gè)10行的腳本來說,Perl是完美的語言選擇。然而,如果面對(duì)多達(dá)500行的主線代碼和數(shù)千行的庫(kù)代碼,需要大量的約束來保證Perl代碼的可維護(hù)性。相比之下,即使沒有那么多約束,Python代碼仍然是相當(dāng)可讀和可維護(hù)的?!?/p>

“當(dāng)時(shí),許多互聯(lián)網(wǎng)開發(fā)人員——主要負(fù)責(zé)早期的互聯(lián)網(wǎng)工作——希望編寫更大的應(yīng)用程序。在他們看來,用Python語言編寫應(yīng)用程序要比用C、C++或Java語言簡(jiǎn)單得多,因?yàn)樗目删S護(hù)性優(yōu)勢(shì)?!?/p>

整個(gè)20世紀(jì)90年代,Python的使用規(guī)模一直在擴(kuò)大,而繼續(xù)為CWI工作的范·羅森發(fā)現(xiàn),他的成就正被世界上越來越多的人所接受和喜愛。

他指出,“我確實(shí)創(chuàng)造了杰出的成就,這些成就聯(lián)系了全世界的人——澳大利亞人、美國(guó)人、其他歐洲國(guó)家的人等等。我真的很享受這樣的成就。”

Python和Web

到了20世紀(jì)90年代中期,Python開始擁抱一種新的使用方式——從最初的錄音和回放腳本,逐漸走向Web開發(fā)。后來Web應(yīng)用開發(fā)成為Python語言的核心支柱之一。

Van Rossum指出,Python最初在Web服務(wù)器上的應(yīng)用主要面向后端腳本、Perl和Shell腳本。“其中一個(gè)重大事件是Web開發(fā),對(duì)我來說這也是一個(gè)非常有趣的經(jīng)歷。你可以創(chuàng)建動(dòng)態(tài)網(wǎng)頁,這已經(jīng)成為我最喜歡的Python應(yīng)用方向之一?!?/p>

Gartner的Ryan說,Python之所以在90年代受到開發(fā)人員的歡迎,是因?yàn)樗诳焖賱?chuàng)建強(qiáng)大腳本方面的出色表現(xiàn)。他說,“Python作為一種強(qiáng)大的腳本語言,降低了大多數(shù)用戶的入門門檻?!?/p>

除此之外,Ryan還強(qiáng)調(diào)Python語言的通用性和易用性,所以它吸引了很多不同類型的具有不同技術(shù)專長(zhǎng)的用戶。他指出,“系統(tǒng)管理員和其他用戶使用Python語言進(jìn)行系統(tǒng)自動(dòng)化和編程,而開發(fā)人員可以使用編程和繼承類等功能——Perl在功能上就差很多。一旦人們熟悉了這門語言,再考慮到Python的入門門檻相當(dāng)?shù)停麄€(gè)開發(fā)工作很快就會(huì)變得高效起來。”

到1994年,Python引起了Michale McLay的注意——他在當(dāng)時(shí)的國(guó)家標(biāo)準(zhǔn)局(NBS),現(xiàn)在的國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)擔(dān)任高級(jí)職務(wù)。這標(biāo)志著Python語言已經(jīng)正式進(jìn)入研究者和科學(xué)家的視野。麥克萊很好奇國(guó)家標(biāo)準(zhǔn)局的科學(xué)家是如何使用Python的。范·羅森說,他們“有很多數(shù)據(jù)要處理,但他們的編程水平往往不是很高?!?/p>

為了向標(biāo)準(zhǔn)局的技術(shù)人員推廣Python,麥克萊邀請(qǐng)當(dāng)時(shí)還在荷蘭CWI工作的van Rossum做了兩個(gè)月的訪問研究員。這一舉動(dòng)不僅影響了Python語言未來的發(fā)展,也給van Rossum的生活帶來了巨大的變化。

這期間,第一次Python研討會(huì)在國(guó)家標(biāo)準(zhǔn)局辦公室正式召開,范·羅森、巴里·華沙等Python早期支持者齊聚一堂,討論他們?cè)谟肞ython做什么,Python未來的發(fā)展方向在哪里。

在這里,范·羅森遇到了互聯(lián)網(wǎng)基礎(chǔ)技術(shù)之一——TCP/IP協(xié)議的開發(fā)者鮑勃·卡恩。

正是這次會(huì)議導(dǎo)致了卡恩和國(guó)家研究計(jì)劃倡議(CNRI)之間的合作。CNRI是一家位于弗吉尼亞州的非營(yíng)利研究機(jī)構(gòu),專注于網(wǎng)絡(luò)技術(shù)的戰(zhàn)略發(fā)展。

就像Python回應(yīng)人們對(duì)新編程語言的需求一樣,范·羅森說,當(dāng)他開始質(zhì)疑自己是否還有理由留在CWI時(shí),新的工作機(jī)會(huì)出現(xiàn)在他面前。

他說:“CWI更像是一個(gè)學(xué)術(shù)機(jī)構(gòu),所以它給了我一些實(shí)際的壓力。要么拿到博士學(xué)位,要么去別處找另一份工作?!?/p>

“可以想象,當(dāng)時(shí)我大約35歲。當(dāng)時(shí)讀博士不是一個(gè)好的選擇,也沒有什么吸引力。在此之前,在Python項(xiàng)目中,我面前有一些潛在的選擇,但我不同意。在這里,我喜歡這些人和他們提供的選擇。于是我趕緊答應(yīng)了?!?/p>

在CNRI,在一群Python愛好者的幫助下,范·羅森整理出了大量用于管理Python語言的結(jié)構(gòu)。1995年4月加入CNRI后,范·羅森領(lǐng)導(dǎo)了一個(gè)開發(fā)團(tuán)隊(duì)來構(gòu)建知識(shí)機(jī)器人項(xiàng)目。這些軟件被稱為移動(dòng)代理,負(fù)責(zé)運(yùn)行分布式計(jì)算機(jī)系統(tǒng),如互聯(lián)網(wǎng)。

團(tuán)隊(duì)使用Python語言,范·羅森歡迎杰里米·希爾頓、羅杰·馬斯、巴里·華沙、肯·曼海姆和弗雷德·德雷克,他們都繼續(xù)在Python社區(qū)中發(fā)揮重要作用。

▲照片:范·羅森,羅杰·馬斯,巴里·華沙

范·羅森說,“我們最終建立了一個(gè)4到10人的團(tuán)隊(duì),其中大多數(shù)人在CNRI工作,這是Python語言開發(fā)的核心?!?/p>

范·羅森在CNRI工作期間,團(tuán)隊(duì)幫助他建立了一個(gè)python.org網(wǎng)站,一個(gè)管理核心代碼庫(kù)變更的CVS服務(wù)器,以及一個(gè)Python特殊興趣小組的郵件列表(用于改進(jìn)和維護(hù)Python語言)。

自1991年公開發(fā)布以來,Python用戶社區(qū)迎來了大幅增長(zhǎng);到20世紀(jì)90年代下半葉,這種語言已經(jīng)吸引了世界各地的許多粉絲。這期間語言管理開始正式化。Python軟件基金會(huì)(PSF)的前身于2001年正式成立并更名。隨著社區(qū)的發(fā)展,從1994年開始舉辦的兩年一次的Python研討會(huì)逐漸演變成更大的一年一度的活動(dòng),最后發(fā)展成目前還在流行的PSF年度PyCon大會(huì)。

在世紀(jì)之交,Python語言的整體規(guī)模已經(jīng)超出了人們的想象,龐大的社區(qū)也在項(xiàng)目管理中發(fā)揮著積極的作用。這時(shí),人們終于不再像過去那樣擔(dān)心如果圭多被公交車撞了,Python會(huì)怎么做了。

范·羅森當(dāng)然繼續(xù)在這個(gè)項(xiàng)目中發(fā)揮核心作用,他的思維總是主導(dǎo)著語言的發(fā)展。正因?yàn)槿绱?,他多年來被很多Python稱為“仁慈的獨(dú)裁者”。

范羅森指出,“總的來說,長(zhǎng)期以來,我已經(jīng)能夠很好地消化壓力,培養(yǎng)了很多項(xiàng)目管理技能。我可以用這個(gè)把任務(wù)委托給別人,讓別人掌握自己的命運(yùn)?!?/p>

Gartner的Ryan指出,語言創(chuàng)作者擔(dān)任語言經(jīng)理的情況并不少見。拉里·沃爾類似于Perl,Ryan Dahl類似于Java運(yùn)行時(shí)Node.js但是他強(qiáng)調(diào)van Rossum的不同之處在于他在管理Python時(shí)總是強(qiáng)調(diào)公平性。

他說:“大家普遍認(rèn)為,范·羅森在項(xiàng)目的發(fā)展方向和整體管理之間找到了理想的平衡?!?/p>

事實(shí)上,van Rossum認(rèn)為,這種允許核心開發(fā)者在社區(qū)中進(jìn)行公開辯論的方式,是Python語言長(zhǎng)期保持開放并取得持續(xù)成功的決定性因素。

Python的演變

這些年來,Python取得了長(zhǎng)足的進(jìn)步。2008年,Python 3.0的引入使語言正式現(xiàn)代化,項(xiàng)目管理模式也迎來了關(guān)鍵性的變革。

最重要的變化發(fā)生在去年,當(dāng)時(shí),由于公眾對(duì)在語言中引入分配表達(dá)式的決定存在分歧,范·羅素姆辭去了BDFL的領(lǐng)導(dǎo)職務(wù)(相關(guān)建議在Python增強(qiáng)建議PEP572中提出)。

雖然此舉是為了進(jìn)一步提高代碼編寫效率,但是反對(duì)修改的人在網(wǎng)上對(duì)van Rossum進(jìn)行了嚴(yán)厲的批評(píng),也有人認(rèn)為這樣會(huì)導(dǎo)致Python代碼可讀性下降,難以維護(hù)。

范·羅素姆說,他已經(jīng)習(xí)慣了對(duì)新功能的辯論,但正是一些對(duì)手的固執(zhí)態(tài)度讓他下定決心做出一些自己的決定。

他指出,“我對(duì)一些做法非常失望,有些人會(huì)把技術(shù)觀點(diǎn)變成社交媒體上的抱怨或者對(duì)我的人身攻擊。這讓我覺得很壓抑?!?/p>

“過去,我一直知道,如果有人打算改變語言或改進(jìn)某些功能,社區(qū)中的核心開發(fā)人員會(huì)討論這件事的利弊。這樣,要么達(dá)成明確的共識(shí),要么在無法達(dá)成結(jié)果的時(shí)候,我會(huì)經(jīng)過深思熟慮,以某種方式做出決定。至于PEP572的提議,雖然有爭(zhēng)議,但我的選擇是“是的,我希望這樣做”。但很多人顯然不打算求同存異?!?/p>

“雖然這不是什么大的爭(zhēng)議,但是我感覺核心開發(fā)者社區(qū)還沒有完全信任我,我已經(jīng)不適合帶領(lǐng)這個(gè)項(xiàng)目前進(jìn)了。”

在他看來,之所以會(huì)出現(xiàn)這種語言變更爭(zhēng)議,是因?yàn)镻ython用戶的快速增長(zhǎng)。

“造成這個(gè)結(jié)果的原因可能是Python社區(qū)已經(jīng)很大了。我們很難在他們之間達(dá)成任何形式的共識(shí),因?yàn)闊o論決定哪種選擇,總會(huì)有持不同政見者跳出來反對(duì)。”

今年早些時(shí)候,Python核心開發(fā)人員(那些致力于維護(hù)和更新Python參考CPPython解釋器的人)選舉了一個(gè)指導(dǎo)委員會(huì)來監(jiān)督該語言的未來發(fā)展。范·羅森和華沙一起被選中,外加布雷特·坎農(nóng)、卡羅爾·威爾和尼克·科格蘭。

華沙表示,這樣的改變對(duì)于Python來說是必要的,因?yàn)镻ython的用戶群正在快速增長(zhǎng)。

他指出,“我覺得圭多的負(fù)擔(dān)太重了?!?/p>

華沙說:“25年前,一切都很好。當(dāng)時(shí)Python社區(qū)還很小,語言受眾有限。但是現(xiàn)在情況不同了。把一切都給一個(gè)人真的會(huì)很夸張。我覺得我們有必要和五個(gè)人分擔(dān)這個(gè)負(fù)擔(dān),僅僅是因?yàn)樗膫€(gè)人健康和社區(qū)參與。”

每次發(fā)布新的Python函數(shù),指導(dǎo)委員會(huì)都會(huì)進(jìn)行新一輪的選舉。華沙表示,這將為下一代Python語言領(lǐng)袖的輪換鋪平道路。

他指出,“如果你想讓Python在未來25年繼續(xù)健康運(yùn)行,就必須逐步排除圭多和我這樣的人?!?/p>

事實(shí)上,Python的整個(gè)核心開發(fā)者社區(qū)也歡迎指導(dǎo)委員會(huì)的成立。核心開發(fā)者馬里亞塔·維賈亞(Mariatta Wijaya)表示,這一舉措代表著該項(xiàng)目朝著正確的方向邁出了一大步。她指出,“對(duì)我來說,當(dāng)委員總比把一切都放在一個(gè)人身上好——畢竟責(zé)任和負(fù)擔(dān)太重了。這是一個(gè)好兆頭,未來社區(qū)會(huì)有更多的指導(dǎo)參考。”

▲圖片:Python核心開發(fā)者M(jìn)ariatta Wijaya在Python指導(dǎo)委員會(huì)成立儀式上

Python的未來

盡管Python仍然以驚人的速度吸引著新用戶,但社區(qū)的一些成員意識(shí)到了未來可能面臨的挑戰(zhàn)。要保持這種良好的勢(shì)頭,Python必須繼續(xù)發(fā)展。

在今年的Python語言峰會(huì)上,BeeWare公司的聯(lián)合創(chuàng)始人拉塞爾·基思·麥咭警告說,如果Python不能改進(jìn)移動(dòng)和新的網(wǎng)絡(luò)平臺(tái),它將面臨“生存風(fēng)險(xiǎn)”。

他指出,“智能手機(jī)和平板電腦正在滲透到臺(tái)式機(jī)和筆記本電腦從未涉足的市場(chǎng)領(lǐng)域。但是作為一個(gè)語言社區(qū),我們從來沒有考慮過如何在這些設(shè)備上使用Python語言?!彼岬絻鹤訒?huì)在學(xué)校用iPad?!爱?dāng)筆記本電腦最終成為小眾產(chǎn)品的時(shí)候,Python的生存空?

Keith-麥咭的BeeWare項(xiàng)目旨在實(shí)現(xiàn)一次性編寫Python應(yīng)用程序并在各處運(yùn)行的目標(biāo),從而解決Python目前的支持能力超出標(biāo)準(zhǔn)x86 PC平臺(tái)的問題。

他說Python語言未來的更新必須能夠更好的支持非x86硬件平臺(tái)上的代碼編譯需求;Python測(cè)試套件在移動(dòng)和Web平臺(tái)上容易崩潰;Python應(yīng)用的安裝包大小不斷膨脹,其中的依賴關(guān)系無法有效減少。在Android、Windows、Web上寫GUI代碼必須使用Asyncio庫(kù);標(biāo)準(zhǔn)庫(kù)中有大量模塊無法與CPPython以外的Python解釋器兼容。

Warsa表示,Keith-麥咭的思路很好,項(xiàng)目真的有必要思考一下Python如何與新平臺(tái)順利對(duì)接,包括手機(jī)、平板、WebAssembly等新技術(shù)。

華沙坦言,“現(xiàn)在Python對(duì)這些新興平臺(tái)的影響力確實(shí)有限?!彼M脩魧砟軌蛟趇Phone或安卓手機(jī)上下載應(yīng)用程序,而不會(huì)“意識(shí)到它是用Python編寫的?!?/p>

隨著現(xiàn)代芯片中處理器核心數(shù)量的不斷增加(英特爾最新服務(wù)器產(chǎn)品中的核心數(shù)量已經(jīng)達(dá)到48個(gè)),華沙也熱衷于推動(dòng)Python在跨核心任務(wù)分散方面做得更好。

他對(duì)埃里克·斯諾在解釋器方面的努力以及他擴(kuò)展Python以實(shí)現(xiàn)并行代碼運(yùn)行的能力感到興奮。他說:“我最想看到的是Python代碼可以用多核做更多的工作?!?/p>

斯諾參與了一個(gè)長(zhǎng)期項(xiàng)目,該項(xiàng)目旨在使Python能夠輕松高效地在多個(gè)處理器內(nèi)核之間劃分任務(wù)。斯諾專注于重寫Python現(xiàn)有子解釋器中的函數(shù),以改變每個(gè)子解釋器之間的交互方式。所有這些的關(guān)鍵是Python的全局解釋器鎖(GIL)。

華沙指出,“GIL目前并不完全準(zhǔn)確??赡軙?huì)在Python或3.9版發(fā)布。我覺得應(yīng)該會(huì)在未來兩到兩年半內(nèi)正式發(fā)布。我對(duì)結(jié)果很樂觀。我很高興埃里克能為此不懈努力,這確實(shí)是一項(xiàng)非常重要的工作。”

此外,即使是運(yùn)行多核多線程Python應(yīng)用程序的失敗嘗試,如Gilectomy,也能帶來許多有趣的教訓(xùn)。這將引導(dǎo)后來者在Python的跨核心工作負(fù)載分散方面做得更好。

Python社區(qū)也采取了措施來更新該語言內(nèi)置代碼的標(biāo)準(zhǔn)庫(kù)。他們最近發(fā)布了一個(gè)刪除庫(kù)中過時(shí)模塊的提議;在此期間,社區(qū)也開始解決一些對(duì)Python標(biāo)準(zhǔn)庫(kù)狀態(tài)的批評(píng)。這個(gè)庫(kù)已經(jīng)成為Python語言的一個(gè)主要優(yōu)勢(shì),因?yàn)樗哂袌?zhí)行常見任務(wù)的廣泛能力。但這個(gè)被稱為Python“內(nèi)驅(qū)電池”的庫(kù),在今年的Python語言峰會(huì)上受到質(zhì)疑,有與會(huì)者問是否可以開放人們對(duì)代碼庫(kù)的選擇,以便更靈活地使用Python(目前Python會(huì)固定捆綁這個(gè)標(biāo)準(zhǔn)庫(kù))。

還有一些關(guān)于Python核心開發(fā)者和Python指導(dǎo)委員會(huì)的問題,包括是否能反映Python用戶的不同子群體。

維賈亞說,“我希望看到委員會(huì)成員有更好的代表性,而不僅僅是明顯的性別平衡——種族和其他因素的平衡也非常重要?!?/p>

“在PyCon會(huì)議上,我與來自印度和非洲的PyLadies成員進(jìn)行了交流。他們認(rèn)為,“當(dāng)我們聽到Python或PyLadies時(shí),首先想到的是美國(guó)或加拿大的成員。其實(shí)全世界還有其他的用戶群。為什么看不到更多元化的組織?我覺得這個(gè)有道理,所以我覺得這方面有必要嘗試一下。畢竟,我們都應(yīng)該在社會(huì)上盡自己的責(zé)任。"

最后,盡管有“仁者獨(dú)裁者”的監(jiān)管,但Python的操作思路近年來越來越廣泛。華沙說,人們通過Python的各種用途探索不同的可能性,這就是新用途的大門。

他指出,“我們應(yīng)該從社區(qū)中吸收更多的營(yíng)養(yǎng),而不是自上而下地嚴(yán)格執(zhí)行自己的想法?!?/p>

對(duì)Python有很大影響的社區(qū)項(xiàng)目的一個(gè)典型例子是類型提示。這是Python 3.5引入的一個(gè)函數(shù),起源于2012年一個(gè)博士生引入的mypy項(xiàng)目。它負(fù)責(zé)提示可選的類型檢查,以幫助開發(fā)人員發(fā)現(xiàn)一些可能以其他方式引入軟件的錯(cuò)誤。

對(duì)于Python的實(shí)際應(yīng)用來說,很多開發(fā)人員往往是基于同樣龐大的代碼庫(kù)工作的,所以增加這樣一個(gè)額外的安全層不僅僅是一個(gè)額外的保證——它實(shí)際上代表了對(duì)代碼應(yīng)該做什么和不應(yīng)該做什么的額外洞察的建立,無疑會(huì)產(chǎn)生很大的影響。

華沙指出,“個(gè)人認(rèn)為,這使得Python可以擴(kuò)展到其他更大的組織——比如Instagram,它基本上是基于Python 3的。這個(gè)很重要?!痹谒磥恚琣syncio是社區(qū)創(chuàng)造力的另一個(gè)很好的例子,對(duì)語言的發(fā)展也有很大的影響。

隨著指導(dǎo)委員會(huì)的成立,并遠(yuǎn)遠(yuǎn)超過以前的用戶群體規(guī)模,范·羅森樂觀地認(rèn)為,“社區(qū)驅(qū)動(dòng)的語言進(jìn)化”將繼續(xù)“取得輝煌的成功”。

他說:“我們有一個(gè)非常可靠的核心開發(fā)人員社區(qū),現(xiàn)在我們有了一個(gè)新的治理系統(tǒng),所以我認(rèn)為我們已經(jīng)準(zhǔn)備好理解Python編程語言的所有演化要求了?!彼€贊揚(yáng)了社區(qū)在各個(gè)層面對(duì)Python的支持和貢獻(xiàn)。

華沙表示,如果有人質(zhì)疑Python社區(qū)探索新用途的能力,可以考慮一下Python語言在幫助捕捉歷史上第一個(gè)黑洞圖像方面發(fā)揮的重要作用。

“這真讓我吃驚。在Python社區(qū)里,我認(rèn)識(shí)很多瘋狂的科學(xué)家。他們總是在思考,在琢磨現(xiàn)在可以做的用例,在探索更多未來有望實(shí)現(xiàn)的新用例。”

1.《蠶食 Python正在蠶食全世界》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。

2.《蠶食 Python正在蠶食全世界》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/caijing/1079728.html