科技行者 8月26日 北京消息:
世界上有幾百種編程語言,而真正流行的不過20余種,Python就是其中之一。多年前,Guido van Rossum創(chuàng)造了Python,成為了如今的「Python之父」。面對(duì)數(shù)百萬人忠誠擁躉,Nick Heath與van Rossum共同探討了Python的過去以及未來。
那一年是1994年底,來自美國各地的一群精英程序員召開會(huì)議,討論如何打造出一款新的秘密武器。
Barry Warsaw正是二十位與會(huì)成員之一,回憶起首屆研討會(huì)上大家的激動(dòng)之情,他至今仍記憶猶新。“我記得有個(gè)人反復(fù)強(qiáng)調(diào),‘千萬別告訴別人我們?cè)谶@里,因?yàn)槲覀兊腜ython是一招獨(dú)門絕技’。”
在那時(shí)候,當(dāng)時(shí)效力于馬里蘭州美國國家標(biāo)準(zhǔn)局的Warsaw就已經(jīng)意識(shí)到,Python語言會(huì)帶來一些前所未有的東西,極大降低代碼編寫與開發(fā)任務(wù)的難度。“當(dāng)我第一次見到Python時(shí),我就知道這里頭一定有些不同尋常的東西。它非常重視可讀性,而且編寫Python代碼也相當(dāng)有趣。”Warsaw回憶道。
▲ 圖:1994年,Barry Warsaw在第一屆Python研討會(huì)上發(fā)言。
如今,Python所激發(fā)的熱情已經(jīng)遠(yuǎn)遠(yuǎn)超出最初的開發(fā)人員小團(tuán)隊(duì)。有些人預(yù)測,Python將很快成為世界上最流行的編程語言,因?yàn)樗栽谝赃h(yuǎn)超其它語言的速度吸引著更多新用戶。每一天,都有數(shù)百萬人在使用Python,且至今其用戶指數(shù)在增長方面也幾乎沒有出現(xiàn)過下滑。
Python被無數(shù)專業(yè)以及業(yè)余開發(fā)人員用于處理大大小小的任務(wù),尤其受到網(wǎng)絡(luò)開發(fā)人員、數(shù)據(jù)科學(xué)家以及系統(tǒng)管理員們的青睞。今年早些時(shí)候,Python將來自約5億公里外黑洞的第一張完整照片拼接出來(如下圖),正如它在全球無數(shù)臺(tái)計(jì)算機(jī)上為腳本提供支持一樣。
Python在眾多全球知名的組織當(dāng)中發(fā)揮著關(guān)鍵作用,包括:幫助Netflix將視頻流傳輸至全球超過1億個(gè)家庭,為照片共享應(yīng)用Instagram提供支持,協(xié)助NASA推進(jìn)太空探索等等。
從某些角度來看,Python同其名稱來源、英國著名喜劇團(tuán)體“巨蟒與圣杯”有著驚人的相似。同樣是在自身的小眾受眾當(dāng)中,Python語言聲名鵲起并迅速積累起巨大的影響力。
該編程語言由荷蘭程序員Guido van Rossum以編外項(xiàng)目的形式建立。上世紀(jì)八十年代末,van Rossum正在荷蘭國家數(shù)學(xué)與計(jì)算機(jī)科學(xué)研究中心CWI當(dāng)中開發(fā)分布式系統(tǒng)。由于對(duì)現(xiàn)有編程語言的不足感到沮喪,他決定創(chuàng)建一種新型語言——既要易于使用,又得功能充沛。
對(duì)于一個(gè)局外人來說,創(chuàng)建自己的編程語言在我聽起來就像是“我要獨(dú)力制造一架飛機(jī)”。但是,時(shí)年三十多歲的van Rossum有著自己的優(yōu)勢。他曾投入三年時(shí)間在CWI的一個(gè)團(tuán)隊(duì)內(nèi)工作,并曾創(chuàng)建一種解釋性編程語言ABC。因此,他已經(jīng)深入理解到負(fù)責(zé)執(zhí)行程序員指令的解釋器在構(gòu)建過程中存在哪些問題,以及新語言需要哪些語法構(gòu)建單元。
▲ 圖:Guido van Rossum攝于2001年,當(dāng)時(shí)正值Python軟件基金會(huì)成立。
話雖如此,van Rossum當(dāng)時(shí)只能利用有限的編程語言進(jìn)行項(xiàng)目開發(fā),其中的難度可想而知。他當(dāng)時(shí)正在研究的Amoeba分布式計(jì)算系統(tǒng)只支持C或者Unix shell,而這兩者都有很大的局限性。C不僅要求開發(fā)人員必須以手動(dòng)方式管理內(nèi)存(這項(xiàng)工作極為復(fù)雜),其導(dǎo)航機(jī)制當(dāng)中也存在大量犯錯(cuò)空間;此外,C語言也缺乏能夠顯著減少開發(fā)人員日常工作的可復(fù)用代碼庫——換言之,開發(fā)者必須在每個(gè)新項(xiàng)目當(dāng)中重新發(fā)明輪子。另一方面,Unix shell則有著自己的問題——它雖然為常見任務(wù)提供一整套實(shí)用程序,但卻運(yùn)行速度太慢,且無法處理復(fù)雜的邏輯。
考慮到這些語言給開發(fā)人員帶來的種種限制,對(duì)于van Rossum來說,創(chuàng)建自己的解釋語言——能夠從ABC語言當(dāng)中直接借用最佳特性——看起來確實(shí)是最好的選擇。
他表示,“我當(dāng)時(shí)的想法很簡單,‘為什么不自己創(chuàng)造一種語言’,它可以從ABC當(dāng)中借鑒自己的想法,從而將原本需要三年完成的項(xiàng)目壓縮到一個(gè)人就能在三個(gè)月之內(nèi)開發(fā)完成。作為一次寂寂無名的小嘗試,Python正式進(jìn)入孕育期。”
1989年底,van Rossum開始認(rèn)真工作,并決定從他最喜愛的喜劇團(tuán)體“巨蟒與圣杯(Monty Python)”處借用這個(gè)名字。有了與蛇相關(guān)的Python之名,再加上纏繞的徽標(biāo),接下來他把自己能夠支配的所有時(shí)間都投入到了項(xiàng)目當(dāng)中。
雖然創(chuàng)造Python在名義上能夠幫助他完成自己的其它工作,但van Rossum認(rèn)為最大的動(dòng)機(jī),其實(shí)來自自主創(chuàng)造語言所帶來的挑戰(zhàn)與激勵(lì)。
他表示,“我還記得,最能讓自己提高工作效率的,就是堅(jiān)信自己能夠做到的信念。在某種程度上,我真的很希望能夠創(chuàng)建出一個(gè)偉大的項(xiàng)目,列出我想要代碼,并讓它按照我想要的方式進(jìn)行布局與設(shè)計(jì)。編程對(duì)我來說是件很有趣的事兒。”
盡管單槍匹馬創(chuàng)造編程語言聽起來好像不太靠譜,但van Rossum同志還是很好地完成了工作。在上世紀(jì)八十年代末,各類主要語言的最大問題,就是會(huì)帶來開發(fā)人員們非常強(qiáng)烈的挫敗感。Larry Wall曾有一句名言,他說在開發(fā)Perl語言的過程中,最大的動(dòng)力主要來自語言本身在解決編碼問題上的笨拙,以及設(shè)計(jì)中體現(xiàn)出的種種“懶惰、急躁與狂妄自大”。同樣的,John Ousterhout也是在構(gòu)建集成電路交互工具的過程當(dāng)中,在糟糕現(xiàn)狀的驅(qū)使下設(shè)計(jì)出Tcl。
在短短三個(gè)月當(dāng)中,van Rossum就開發(fā)出一套Python解釋語言的工作原型。他表示這套原型缺少現(xiàn)代功能,但其中已經(jīng)出現(xiàn)了當(dāng)前Python所具備的種種特征。
他指出,“如今的Python當(dāng)中擁有很多重要的抽象;當(dāng)時(shí)沒有,但語言本身看起來已經(jīng)極為相似。”
“當(dāng)時(shí),我已經(jīng)開發(fā)完成解釋器以及語言的所有基本組件。來自首套Python解釋器中的簡單Python程序直到今天仍能正常運(yùn)行。”他還補(bǔ)充道,函數(shù)的定義方式完全相同、縮進(jìn)機(jī)制完全相同、字典與元組使用的語法完全相同,甚至連用戶在使用Python開發(fā)時(shí)面對(duì)的交互提示符也完全相同。
不過,雖然他的兩位同事接受了這種語言并立即開始使用,但van Rossum當(dāng)時(shí)對(duì)其廣泛流行并沒有抱很大的期望。畢竟他們都很清楚,在互聯(lián)網(wǎng)時(shí)代到來之前,獲取一種編程語言有多么困難。
不同于如今只需幾下點(diǎn)擊就能完成軟件共享的方式,上世紀(jì)八十年代的軟件發(fā)布可謂困難重重。van Rossum回憶起最早推廣ABC解釋語言時(shí)的艱辛歷程。
van Rossum表示,“我還記得那時(shí)候大概是1985年,我去美國度假。那是我第一次去美國,我把存儲(chǔ)著ABC語言的磁帶放在了行李箱里。”
通過當(dāng)時(shí)才剛剛成形的基礎(chǔ)電子郵件系統(tǒng),他得到了一份對(duì)該語言有興趣的開發(fā)人員的住址與電話清單。由于傳輸能力有限,這些報(bào)名信息就是郵件所能承載的極限了。他只能挨家挨戶郵寄這些磁帶。盡管付出了不小的努力,但ABC并沒能獲得成功。
“就是因?yàn)檫@種分發(fā)上的困難,雖然ABC也擁有一系列非常出色的特性,但卻沒能走得太遠(yuǎn)。”但隨著互聯(lián)網(wǎng)革命的蓬勃發(fā)展,即使不用裝滿磁帶的手提箱,Python也能夠被輕松分發(fā)到用戶手中。
Van Rossum于1991年通過alt.sources新聞組向全世界發(fā)布了Python語言。這是一份開源許可,而這時(shí)距離開源許可這個(gè)概念的出現(xiàn)才剛剛過去六年。雖然Python解釋器仍然由多達(dá)21個(gè)獨(dú)立的壓縮文件組成,但需要在Usenet網(wǎng)絡(luò)上下載整整一夜,但其效率仍然遠(yuǎn)遠(yuǎn)高于幾年前的手動(dòng)郵寄。
他表示,“我希望這種新生的語言能夠在一定程度上獲得成功,但我之前也嘗試過,最終卻只是徒勞一場。”
根據(jù)以往的經(jīng)驗(yàn),van Rossum開始關(guān)注Python的用戶群體,并發(fā)現(xiàn)其長期處于增長態(tài)勢。漸漸地,他意識(shí)到相關(guān)生態(tài)正在建立。在經(jīng)過一段時(shí)間與Python社區(qū)的定期互動(dòng)之后,他意識(shí)到自己可能創(chuàng)造了一種有望大獲得成功的編程語言。
“我認(rèn)為這種實(shí)現(xiàn)過程會(huì)非常非常緩慢。在我們完成第一個(gè)開源版本之后,我制定出一份新版本的規(guī)劃方案,并與剛剛出現(xiàn)的新興Python社區(qū)進(jìn)行探討。這種感覺很棒,有種在干大事的感覺。”
從這種意義上講,Python的黃金時(shí)代正步步來臨。而這種年輕的語言,直到二十世紀(jì)九十年代早期至中期,真正在世界范圍內(nèi)引起廣泛關(guān)注。
Van Rossum認(rèn)為開發(fā)人員之所以會(huì)被Python所吸引,靠的就是他當(dāng)初創(chuàng)造這款語言時(shí)感受到的種種問題。開發(fā)人員想要一種高級(jí)腳本語言,在易用性與功能性之間找到理想的平衡,且不像Unix shell那樣在處理復(fù)雜邏輯方面存在種種限制。他們希望擺脫C語言給開發(fā)者帶來的內(nèi)存管理難題,也不愿再在每個(gè)項(xiàng)目的起步之初面對(duì)基本相同的任務(wù)重新編寫實(shí)現(xiàn)代碼。
Warsaw表示,Python在實(shí)用性方面找到了平衡,同時(shí)也沒有犧牲出色的功能性——在上世紀(jì)九十年代初,沒有任何一種其它主流編程語言能夠?qū)崿F(xiàn)這種平衡。他表示,“當(dāng)時(shí)我一直在編寫大量的Perl、Tcl以及C代碼,但完全沒有樂趣可言。這時(shí)Python出現(xiàn)了,我的感覺就像,‘哇哦,編程終于又有趣了起來!’”
Python帶來的,是清晰明確的語法,其中通過縮進(jìn)將代碼進(jìn)行分組,并使得開發(fā)人員能夠更輕松地理解代碼含義。
分析公司Gartner應(yīng)用程序平臺(tái)戰(zhàn)略團(tuán)隊(duì)研究主管Fintan Ryan表示,這種清晰性使得Python成功贏得眾多開發(fā)人員的“芳心”。無論是在當(dāng)時(shí)還是現(xiàn)在,這種利用縮進(jìn)實(shí)現(xiàn)代碼分組的做法都非常重要、堪稱天才的創(chuàng)舉。“它提供一種非常干凈的語法。我們?cè)谑褂闷渌Z言時(shí)需要強(qiáng)制執(zhí)行,但Python卻能夠自動(dòng)執(zhí)行。當(dāng)然,有些程序員喜歡這樣,有些則非常討厭這種設(shè)計(jì)。”
事實(shí)上,Python優(yōu)先考慮代碼的可讀性并非偶然之舉。van Rossum表示,編程語言與開發(fā)人員之間的思想交流非常重要,畢竟編程的本質(zhì)就是由程序員告訴計(jì)算機(jī)該做什么。
除了可讀性優(yōu)勢之外,Ryan表示從早期開始,Python就提供一系列內(nèi)置功能,這也使其從其它編程語言當(dāng)中脫穎而出。他表示,“Python從起步階段就擁有類與異常處理等功能。Python還提供對(duì)lambda、map以及filter等函數(shù)的支持能力,這些在不少場景下都非常實(shí)用。”
如果八十年代后期的那些編程語言能夠更完善一些,那么Python可能將永無出頭之日。事實(shí)上,van Rossum創(chuàng)建Python的動(dòng)機(jī)之一,就是Perl腳本語言在他使用的Amoeba分布式計(jì)算系統(tǒng)上無法兼容。他指出,“對(duì)于Python來說,最幸運(yùn)的就是Perl根本無法被移植到Amoeba之上。如果能夠完成這樣的移植,我想自己壓根不會(huì)想到著手創(chuàng)造自己的編程語言。”
盡管在發(fā)布之后很快吸引到眾多硬核用戶粉絲,但直到上世紀(jì)九十年代,Python仍然只是一種小眾編程語言。Van Rossum表示,該語言的主要競爭對(duì)手包括Tcl/Tk與Perl,這兩者與python一樣非常重視簡單易用與功能豐富這兩大目標(biāo)。
他指出,“在九十年代,如果要對(duì)這三種語言進(jìn)行排名,那么Perl絕對(duì)是第一——而且優(yōu)勢超級(jí)明顯。Tcl/Tk位列第二,Python則只能屈居第三。”
如今的Pythohn早已不同于往日。根據(jù)年度Stack Overflow開發(fā)者調(diào)查(目前最為全面的編程語言使用情況排名之一),Python已經(jīng)成為活躍開發(fā)人員數(shù)量增長最快的編程語言,而Perl則早已萎縮至可以忽略不計(jì)的程度。下圖同樣體現(xiàn)出Python爆炸式的增長勢頭,目前在Stack Overflow上與Python相關(guān)的問題在增長數(shù)量上遠(yuǎn)遠(yuǎn)超過任何一種其它編程語言。
▲ 圖:據(jù)Stack Overflow數(shù)據(jù)顯示,在主流編程語言增長趨勢中(包括Java、JavaScript、C#、PHP、C++、python),Python的用戶呈現(xiàn)巨大增長。圖片來源/Stack Overflow
那么,Python是如何超越舊日競爭對(duì)手的?兩種設(shè)計(jì)思路類似的語言,又為什么會(huì)迎來截然不同的命運(yùn)?Van Rossum認(rèn)為,一旦代碼庫增長至一定規(guī)模,接下來考驗(yàn)的就是代碼庫的維護(hù)難度。他表示,“人們普遍發(fā)現(xiàn),對(duì)于10行的腳本,Perl是最完美的語言選項(xiàng)。但如果面對(duì)多達(dá)500行的主線代碼與幾千行的庫代碼,那就需要大量約束才能保證Perl代碼的可維護(hù)性。相比之下,即使不施加這么多約束,Python代碼仍然具有相當(dāng)?shù)目勺x性與可維護(hù)性。”
“當(dāng)時(shí)有不少互聯(lián)網(wǎng)開發(fā)人員——主要負(fù)責(zé)早期互聯(lián)網(wǎng)工作——希望編寫更為龐大的應(yīng)用程序。在他們看來,由于可維護(hù)性優(yōu)勢,使用Python語言編寫應(yīng)用程序要比使用C、C++或者Java語言簡單得多。”
整個(gè)九十年代,Python的使用規(guī)模不斷擴(kuò)展,而繼續(xù)效力于CWI的van Rossum則發(fā)現(xiàn)他的成果正為世界上越來越多的人們所接受并喜愛。
他指出,“我確實(shí)創(chuàng)造出了出色的成果,它把世界各地的人們聯(lián)系在一起——澳大利亞人、美國人、其他歐洲國家的人等等。我很享受這樣的成就。”
到九十年代中期,Python開始迎來新的使用方式——從原本的音頻錄制與回放腳本,逐步邁向Web開發(fā)。而后來,Web應(yīng)用程序開發(fā)也成為Python語言的核心支柱之一。
van Rossum指出,Python最初在Web服務(wù)器上的應(yīng)用主要面向后端腳本以及Perl與Shell腳本。“其中一件大事在于Web開發(fā),這對(duì)我來說也是一種非常有趣的體驗(yàn)。大家可以創(chuàng)建動(dòng)態(tài)網(wǎng)頁,這也成為我個(gè)人最喜愛的Python應(yīng)用方向之一。”
Gartner公司的Ryan表示,Python之所以能夠在上世紀(jì)九十年代在開發(fā)人員中大受歡迎,憑借的就是它在快速創(chuàng)建強(qiáng)大腳本方面的出色表現(xiàn)。他表示,“作為一種功能強(qiáng)大的腳本語言,Python降低了大部分用戶的入門門檻。”
除此之外,Ryan還強(qiáng)調(diào)稱Python語言功能多樣且易于上手,因此吸引到許多不同類型的用戶,他們的技術(shù)專長也各不相同。他指出,“系統(tǒng)管理員及其他一些用戶利用Python語言進(jìn)行系統(tǒng)自動(dòng)化與編程,開發(fā)人員則可以使用其中的函數(shù)編程等功能,同時(shí)使用繼承類——相比之下,Perl在功能性方面要差得多。一旦人們熟悉了這種語言,而且考慮到Python的入門門檻相當(dāng)?shù)停麄€(gè)開發(fā)工作很快就會(huì)變得效率可觀。”
到1994年,Python引起了Michale McLay的注意——他在當(dāng)時(shí)的美國國家標(biāo)準(zhǔn)局(NBS)、即如今的美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)擔(dān)任高級(jí)職務(wù)。這預(yù)示著Python語言開始正式進(jìn)入研究人員與科學(xué)家的視野。McLay當(dāng)時(shí)很好奇國家標(biāo)準(zhǔn)局的科學(xué)家如何使用Python語言。Van Rossum表示,他們“有大量數(shù)據(jù)需要處理,但他們的編程水平往往不是很高。”
為了向標(biāo)準(zhǔn)局內(nèi)的技術(shù)人員推廣Python,McLay邀請(qǐng)當(dāng)時(shí)仍在荷蘭CWI工作的van Rossum以客座研究員的身份前來工作2個(gè)月。這一舉動(dòng),不僅影響到Python語言的未來發(fā)展,同時(shí)也給van Rossum的生活帶來了巨大變化。
在此期間,第一屆Python研討會(huì)在國家標(biāo)準(zhǔn)局的辦公室里正式召開,van Rossum、Barry Warsaw以及其他Python早期支持者們共聚一堂,討論他們各自在用Python實(shí)現(xiàn)什么、Python的未來發(fā)展方向又在哪里。
在這里,van Rossum遇到了Bob Kahn,而后者正是互聯(lián)網(wǎng)基礎(chǔ)技術(shù)之一——TCP/IP協(xié)議——的開發(fā)者。
正是此次會(huì)議,促成了Kahn與國家研究計(jì)劃倡議(CNRI)之間的合作。CNRI是位于弗吉尼亞州的非營利性研究組織,專注于網(wǎng)絡(luò)技術(shù)的戰(zhàn)略發(fā)展事務(wù)。
正如Python回應(yīng)了人們對(duì)于新型編程語言的需求一樣,van Rossum表示就在他開始質(zhì)疑自己是否還有理由留在CWI的時(shí)候,新的工作機(jī)會(huì)出現(xiàn)在他的面前。
他表示,“CWI更像是一個(gè)學(xué)術(shù)機(jī)構(gòu),因此給了我一些現(xiàn)實(shí)壓力。要么考取博士學(xué)位,要么就得在其他地方重新找工作。”
“大家可以想象一下,當(dāng)時(shí)我大概35歲左右,那個(gè)時(shí)候再去攻讀博士學(xué)位其實(shí)不是太好的選擇,而且也沒什么吸引力。而且在此之前,憑借著Python項(xiàng)目,已經(jīng)有一些潛在選擇擺在我的面前,但我沒有同意。而在這里,我喜歡這些人,也喜歡他們提供的選項(xiàng)。所以我很快答應(yīng)了下來。”
在CNRI,在一支Python愛好者小組的幫助下,van Rossum整理出大量用于管理Python語言的結(jié)構(gòu)。在1995年4月正式加入CNRI之后,van Rossum帶領(lǐng)一支開發(fā)者團(tuán)隊(duì)致力于構(gòu)建Knowbot程序。這些軟件被稱為移動(dòng)代理,負(fù)責(zé)運(yùn)行互聯(lián)網(wǎng)等跨分布式計(jì)算機(jī)系統(tǒng)。
該團(tuán)隊(duì)使用的正是Python語言,而van Rossum迎來了Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer以及Fred Drake等重要成員,他們也都繼續(xù)在Python社區(qū)當(dāng)中發(fā)揮重要作用。
▲ 圖:Van Rossum、Roger Masse、Barry Warsaw
Van Rossum表示,“我們最終建立起一個(gè)由4到10人組成的團(tuán)隊(duì),其中大多數(shù)人都在CNRI工作,這也正是Python語言的開發(fā)核心。”
就在van Rossum效力于CNRI的同時(shí),該團(tuán)隊(duì)協(xié)助他建立起python.org網(wǎng)站、用于管理核心代碼庫變更的CVS服務(wù)器,以及面向Python特別興趣小組的郵件列表(用于改進(jìn)及維護(hù)Python語言)。
自1991年公開發(fā)布以來,Python用戶社區(qū)迎來了顯著增;到九十年代下半葉,該語言甚至在全球范圍內(nèi)吸引到諸多擁躉。在此期間,語言的管理也開始步入正式化。Python軟件基金會(huì)(PSF)的前身正式建立,并于2001年完成更名。在社區(qū)發(fā)展的同時(shí),1994年起召開的兩年一度的Python研討會(huì)也逐步演變成規(guī)模更大的年度盛會(huì),并最終發(fā)展成當(dāng)下仍然人氣爆棚的PSF年度PyCon大會(huì)。
到新世紀(jì)之交,Python語言的整體規(guī)模已經(jīng)超出人們的想象,而龐大的社區(qū)也在項(xiàng)目管理當(dāng)中發(fā)揮著積極作用。這時(shí)候,人們終于不再像過去那樣,擔(dān)心“如果Guido被公共汽車撞了”,Python語言該怎么辦這類問題。
Van Rossum當(dāng)然繼續(xù)在項(xiàng)目中扮演著核心角色,而且他的思維也始終主導(dǎo)著語言的發(fā)展。正因?yàn)槿绱?,多年以來他被很多Python稱為“仁慈的獨(dú)裁者”。
Van Rossum指出,“總體來講,在很長一段時(shí)間里,我都能夠很好地消化壓力,并且培養(yǎng)起不少項(xiàng)目管理技能。我可以借此向他人委派任務(wù),讓人們掌握自己的命運(yùn)。”
Gartner公司的Ryan指出,由語言創(chuàng)造者擔(dān)任語言管理者的做法并不罕見。Larry Wall之于Perl,以及Ryan Dahl之于JavaScript運(yùn)行時(shí)Node.js,都是類似的情況。但他強(qiáng)調(diào)稱,van Rossum的不同之處在于他在管理Python時(shí)總是強(qiáng)調(diào)公平。
他表示,“人們普遍認(rèn)為,van Rossum在項(xiàng)目的發(fā)展方向與整體管理之間找到了理想的平衡點(diǎn)。”
事實(shí)上,van Rossum認(rèn)為這種允許核心開發(fā)人員在社區(qū)當(dāng)中進(jìn)行公開辯論的方式,正是Python語言長期保持開放性并獲得持續(xù)成功的決定性因素所在。
這些年里,Python語言取得了重大飛躍。2008年,Python 3.0的推出使得該語言正式完成現(xiàn)代化,項(xiàng)目的管理方式也不斷迎來關(guān)鍵性改變。
最重要的變化出現(xiàn)在去年,由于公眾對(duì)于將分配表達(dá)式引入語言的決定(相關(guān)提議于Python增強(qiáng)提案PEP572當(dāng)中提出)存在分歧,van Rossum辭去了自己在BDFL的領(lǐng)導(dǎo)者角色。
雖然此舉是為了進(jìn)一步提升代碼編寫的效率,但反對(duì)變革的人們?cè)诰W(wǎng)上對(duì)van Rossum發(fā)出嚴(yán)厲批評(píng),有些人認(rèn)為這樣會(huì)導(dǎo)致Python代碼的可讀性下降、進(jìn)而導(dǎo)致難以維護(hù)。
Van Rossum表示,他習(xí)慣于圍繞新功能的問題開展辯論,但正是一部分反對(duì)者保持的頑固態(tài)度,使他下定決心做出一些自己的決定。
他指出,“我對(duì)某些做法感到非常失望,有些人會(huì)把技術(shù)層面的意見,轉(zhuǎn)化為社交媒體上的抱怨或者是對(duì)我個(gè)人的攻擊。這讓我感到非常沮喪。”
“過去,我一直很清楚,如果有人打算改變語言或者改進(jìn)某些功能,那么社區(qū)的核心開發(fā)人員就會(huì)討論事情的利弊。如此一來,要么是達(dá)成明確的共識(shí),要么就是在爭不出個(gè)結(jié)果時(shí),由我在認(rèn)真考慮之后以某種方式做出決定。對(duì)于PEP572號(hào)提案,雖然其中確實(shí)存在爭議,但我的選擇是「沒錯(cuò),我希望這樣做」。不過很多人顯然不打算求同存異。”
“雖然這并不是什么太大的爭端,但我覺得,核心開發(fā)者社區(qū)對(duì)我已經(jīng)沒有充分的信任,我不再適合帶領(lǐng)這個(gè)項(xiàng)目繼續(xù)前進(jìn)。”
在他看來,之所以會(huì)出現(xiàn)這一次語言變化方面的糾紛,是因?yàn)镻ython在用戶數(shù)量方面的快速增長。
“造成這樣結(jié)果的原因,可能在于Python社區(qū)的規(guī)模已經(jīng)如此之大。我們很難在其中達(dá)成任何形式的共識(shí),因?yàn)闊o論決定采用哪個(gè)選項(xiàng),總會(huì)有異見人士跳出來反對(duì)。”
今年早些時(shí)候,Python核心開發(fā)人員們(即致力于維護(hù)及更新Python引用CPython解釋器的人員)選出了一個(gè)指導(dǎo)委員會(huì),用以監(jiān)督該語言的未來發(fā)展方向。Van Rossum與Warsaw,外加Brett Cannon、Carol Willing與Nick Coghlan等核心開發(fā)人員一同入選。
Warsaw表示,對(duì)于用戶群體快速增長的Python語言來說,這樣的變革非常必要。
他指出,“我認(rèn)為Guido肩上的擔(dān)子太重了。”
Warsaw表示,“25年前,一切都還很好。當(dāng)時(shí)的Python社區(qū)還很小、語言受眾也比較有限。但現(xiàn)在情況不同了,如果仍然把一切都交給一個(gè)人,那真的太夸張了。我認(rèn)為單純出于對(duì)他個(gè)人健康以及社區(qū)參與度的考慮,我們也有必要把這副擔(dān)子分?jǐn)偨o五個(gè)人。”
每一次新的Python功能發(fā)布之后,指導(dǎo)委員會(huì)都會(huì)進(jìn)行新一輪選舉。Warsaw表示,這將給Python語言下一代領(lǐng)導(dǎo)者的輪替鋪平道路。
他指出,“如果想讓Python在未來25年當(dāng)中繼續(xù)保持健康的運(yùn)作狀態(tài),那么就必須逐步把Guido和我這樣的人排除在外。”
事實(shí)上,Python的整個(gè)核心開發(fā)人員社區(qū)也歡迎設(shè)立指導(dǎo)委員會(huì)。核心開發(fā)人員Mariatta Wijaya表示,此舉代表著項(xiàng)目朝著正確的方向邁出了一大步。她指出,“對(duì)我來說,由委員會(huì)負(fù)責(zé)要比一切歸于一人更好——畢竟其中的責(zé)任與負(fù)擔(dān)都太重了。這是個(gè)好兆頭,未來社區(qū)將有更多指導(dǎo)意見可供參考。”
▲ 圖:Python核心開發(fā)人員Mariatta Wijaya在Python指導(dǎo)委員會(huì)成立儀式上
雖然Python仍在以驚人的速度吸引新用戶,但社區(qū)中的部分成員也意識(shí)到未來可能出現(xiàn)的挑戰(zhàn)。要保持這種良好的勢頭,Python就必須持續(xù)發(fā)展。
在今年的Python語言峰會(huì)上,BeeWare公司聯(lián)合創(chuàng)始人Russel Keith-Magee警告稱,如果不能針對(duì)移動(dòng)與新型網(wǎng)絡(luò)平臺(tái)做出改善,那么Python就將面臨“生存風(fēng)險(xiǎn)”。
他指出,“智能手機(jī)與平板電腦正在向著臺(tái)式機(jī)與筆記本從未觸及過的市場領(lǐng)域滲透。但作為語言社區(qū),我們一直沒有考慮過如何在這些設(shè)備上使用Python語言。”他提到自己的兒子會(huì)在學(xué)校里使用iPad,“當(dāng)筆記本電腦最終成為一類小眾產(chǎn)品時(shí),Python的生存空間又在哪里?”
Keith-Magee的BeeWare項(xiàng)目旨在實(shí)現(xiàn)Python應(yīng)用程序的一次編寫、隨處運(yùn)行目標(biāo),從而解決Pytho目前在標(biāo)準(zhǔn)x86 PC平臺(tái)之外的支持能力問題。
他表示,Python語言的未來更新必須能夠更好地支持非x86硬件平臺(tái)上的代碼編譯需求;Python的測試套件很容易在移動(dòng)及Web 平臺(tái)上發(fā)生崩潰;Python應(yīng)用程序的安裝包大小一直在不斷膨脹,且其中的依賴項(xiàng)無法得到有效縮減;在Android、Windows以及Web上編寫GUI代碼時(shí),必須使用asyncio庫;標(biāo)準(zhǔn)庫中有大量模塊無法兼容除CPython以外的其它Python解釋器。
Warsa表示,Keith-Magee的思路非常好,而且項(xiàng)目現(xiàn)在確實(shí)有必要思考Python該如何與新平臺(tái)實(shí)現(xiàn)順暢對(duì)接——包括手機(jī)、平板電腦以及WebAssembly等新興技術(shù)。
Warsaw坦言,“現(xiàn)在Python在這些新興平臺(tái)上的影響力確實(shí)比較有限。”他希望未來用戶能夠在iPhone或者Android手機(jī)上隨意下載應(yīng)用,而無需“意識(shí)到這是使用Python編寫而成的。”
隨著現(xiàn)代芯片內(nèi)部處理器核心數(shù)量的不斷攀升(英特爾最新服務(wù)器產(chǎn)品中的核心數(shù)量已經(jīng)達(dá)到48個(gè)),Warsaw也熱衷于推動(dòng)Python在跨核心任務(wù)分散方面做得更好。
他對(duì)于Eric Snow在子解釋器方面做出的努力,以及擴(kuò)展Python以實(shí)現(xiàn)代碼并行運(yùn)行的能力感到興奮。他表示,“我最希望看到的,就是Python代碼能夠利用多個(gè)核心完成更多工作。”
Snow參與了一個(gè)長期項(xiàng)目,旨在讓Python能夠輕松在多個(gè)處理器核心之間高效實(shí)現(xiàn)任務(wù)分割。Snow專注于對(duì)Python現(xiàn)有子解釋器中的功能進(jìn)行重新編寫,以改變各子解釋器間的彼此交互方式。而實(shí)現(xiàn)這一切的關(guān)鍵,正是Python的全局解釋器鎖(GIL)。
Warsaw指出,“GIL目前還沒有完全準(zhǔn)確就緒。也許會(huì)在Python 3.8或者3.9版本中推出。我想其正式發(fā)布時(shí)間,應(yīng)該在未來的兩年到兩年半之間。我對(duì)結(jié)果感到樂觀。我很高興Eric能夠?yàn)榇瞬恍概Γ@確實(shí)是一項(xiàng)非常重要的工作。”
另外,即使是在多核心多線程Python應(yīng)用運(yùn)行方面遭遇失敗的嘗試——例如The Gilectomy,也能夠帶來不少有趣的經(jīng)驗(yàn)教訓(xùn)。這將指導(dǎo)后來者在Python的跨核心工作負(fù)載分散方面做得更好。
Python社區(qū)還采取措施以實(shí)現(xiàn)語言內(nèi)置代碼標(biāo)準(zhǔn)庫的現(xiàn)代化。他們最近發(fā)布了一項(xiàng)刪除庫內(nèi)過時(shí)模塊的提議;在此期間,社區(qū)還開始著手解決針對(duì)Python標(biāo)準(zhǔn)庫狀態(tài)的一些批評(píng)意見。該庫憑借著廣泛的常見任務(wù)執(zhí)行能力,而成為Python語言的一大主要優(yōu)勢。然而,這套被稱為Python“內(nèi)驅(qū)電池”的庫卻在今年的Python語言峰會(huì)上面臨質(zhì)疑,有與會(huì)者詢問是否可以開放人們的代碼庫選擇權(quán),從而以更靈活的方式使用Python(目前Python會(huì)固定捆綁這套標(biāo)準(zhǔn)庫)。
還有一些針對(duì)Python核心開發(fā)人員與Python指導(dǎo)委員會(huì)的問題,包括他們能否切實(shí)反映當(dāng)下Python用戶當(dāng)中的不同細(xì)分群體。
Wijaya表示,“我希望看到委員會(huì)成員能夠有更好的代表性,而不只是做到表面上的性別平衡——種族以及其它因素的平衡同樣非常重要。”
“在PyCon大會(huì)上,我與來自印度及非洲的PyLadies成員進(jìn)行了交流。她們認(rèn)為,「當(dāng)我們聽到Python或者PyLadies組織時(shí),首先想到的只會(huì)是美國或者加拿大的成員。實(shí)際上,世界各地還有其他用戶群體。為什么我們不能看到更多樣化的組織方式呢?」我認(rèn)為這很有道理,所以我覺得有必要在這方面做出嘗試,畢竟我們都應(yīng)該在社區(qū)當(dāng)中盡到自己的責(zé)任。”
最后,盡管有著“仁慈的獨(dú)裁者”的監(jiān)督,近年來Python的運(yùn)營思路已經(jīng)變得愈發(fā)廣泛。Warsaw表示,人們通過Python的多種使用方式探索著不同的可能性,而這正是通向新用途的大門。
他指出,“我們應(yīng)該從社區(qū)中吸取更多養(yǎng)分,而非自上而下硬性貫徹自己的思路。”
社區(qū)項(xiàng)目對(duì)Python產(chǎn)生巨大影響的一個(gè)典型實(shí)例,正是Type Hints。這是一項(xiàng)通過Python 3.5推出的功能,源自2012年由一位博士生推出的mypy項(xiàng)目。其負(fù)責(zé)提示可選的類型檢查,幫助開發(fā)人員發(fā)現(xiàn)某些可能通過其它方式被引入軟件的錯(cuò)誤。
對(duì)于Python的實(shí)際應(yīng)用而言,往往會(huì)有眾多開發(fā)人員立足同一大型代碼庫進(jìn)行工作,因此添加這樣的額外安全層不僅僅是多了一重保障——這實(shí)際上代表著建立起代碼該做什么以及不該做什么的額外洞察見解,且無疑將產(chǎn)生重大影響。
Warsaw指出,“就個(gè)人而言,這使得Python能夠被擴(kuò)展至其它規(guī)模更大的組織當(dāng)中——例如基本上以Python 3為基礎(chǔ)的Instagram。這一點(diǎn)非常重要。”在他看來,asyncio正是社區(qū)創(chuàng)意的另一個(gè)好例子,同樣對(duì)語言的發(fā)展產(chǎn)生了巨大影響。
隨著指導(dǎo)委員會(huì)的建立以及遠(yuǎn)超以往的用戶群體規(guī)模,van Rossum樂觀地認(rèn)為“社區(qū)驅(qū)動(dòng)下的語言演變”將繼續(xù)“取得輝煌的成功。”
他表示,“我們擁有一個(gè)非常可靠的核心開發(fā)人員社區(qū),現(xiàn)在又有了一套新的治理系統(tǒng),因此我想我們已經(jīng)做好了準(zhǔn)備,能夠就會(huì)Python編程語言的一切演變需求。”他同時(shí)贊揚(yáng)了社區(qū)內(nèi)對(duì)于Python各個(gè)層面的支持與貢獻(xiàn)。
Warsaw表示,如果還有人質(zhì)疑Python社區(qū)探索新用途的能力,不妨先想想Python語言在幫助捕捉有史以來第一幅黑洞圖像方面發(fā)揮的重要作用。
“這真的讓我感到驚喜萬分。在Python社區(qū)當(dāng)中,我就認(rèn)識(shí)不少非常瘋狂的科學(xué)家。他們總是在思考,琢磨當(dāng)下能夠做到的用例,并探索未來有望實(shí)現(xiàn)的更多新型用例。
好文章,需要你的鼓勵(lì)
這項(xiàng)研究提出了"高效探測"方法,解決了掩碼圖像建模AI難以有效評(píng)估的問題。通過創(chuàng)新的多查詢交叉注意力機(jī)制,該方法在減少90%參數(shù)的同時(shí)實(shí)現(xiàn)10倍速度提升,在七個(gè)基準(zhǔn)測試中均超越傳統(tǒng)方法。研究還發(fā)現(xiàn)注意力質(zhì)量與分類性能的強(qiáng)相關(guān)性,生成可解釋的注意力圖譜,展現(xiàn)出優(yōu)異的跨域適應(yīng)性。團(tuán)隊(duì)承諾開源全部代碼,推動(dòng)技術(shù)普及應(yīng)用。
伊利諾伊大學(xué)研究團(tuán)隊(duì)開發(fā)了CLAIMSPECT系統(tǒng),通過層次化分解復(fù)雜爭議、智能檢索相關(guān)文獻(xiàn)、多角度收集觀點(diǎn)的方法,將傳統(tǒng)的"真假"判斷轉(zhuǎn)變?yōu)槎嗑S度分析。該系統(tǒng)能夠自動(dòng)構(gòu)建爭議話題的分析框架,識(shí)別不同觀點(diǎn)及其支撐證據(jù),為科學(xué)和政治爭議提供更全面客觀的分析,已在生物醫(yī)學(xué)和國際關(guān)系領(lǐng)域驗(yàn)證有效性。
清華大學(xué)研究團(tuán)隊(duì)首次提出情感認(rèn)知融合網(wǎng)絡(luò)(ECFN),讓AI能像人類一樣理解和表達(dá)情感。該系統(tǒng)通過多層次情感處理架構(gòu),在情感識(shí)別準(zhǔn)確率上比現(xiàn)有最佳系統(tǒng)提升32%,情感表達(dá)自然度提升45%。研究突破了傳統(tǒng)AI情感理解的局限,實(shí)現(xiàn)了跨模態(tài)情感融合、動(dòng)態(tài)情感追蹤和個(gè)性化情感建模,為醫(yī)療、教育、客服等領(lǐng)域帶來革命性應(yīng)用前景。
哈佛大學(xué)研究團(tuán)隊(duì)通過創(chuàng)新的多智能體強(qiáng)化學(xué)習(xí)方法,讓AI在戰(zhàn)略游戲中學(xué)會(huì)復(fù)雜推理。研究發(fā)現(xiàn)AI通過游戲競爭能發(fā)展出類人思維能力,在邏輯推理、創(chuàng)造性解決問題等方面表現(xiàn)顯著提升。這項(xiàng)突破性成果為未來AI在醫(yī)療、教育、城市管理等領(lǐng)域的應(yīng)用奠定基礎(chǔ),展現(xiàn)了通過模擬人類學(xué)習(xí)過程培養(yǎng)真正智能AI的新路徑。