當(dāng)初由于無(wú)法忍耐編程語(yǔ)言的種種缺點(diǎn),Guido van Rossum 一手創(chuàng)建了 Python 編程語(yǔ)言。如今 Python 已有數(shù)百萬(wàn)使用者,在本文中將基于 Python 的過(guò)去及今后的計(jì)劃展開(kāi)了討論。
1994 年底,一群來(lái)自美國(guó)各地的頂級(jí)程序員開(kāi)會(huì)討論他們的新式秘密武器。
Barry Warsaw 是當(dāng)初參加首次 Python 編程語(yǔ)言研討大會(huì)的 20 名成員之一,對(duì)他來(lái)說(shuō),當(dāng)年那個(gè)激動(dòng)人心的時(shí)刻至今仍歷歷在目。
“我還記得有一個(gè)人說(shuō),我們不能告訴任何我在這里,因?yàn)槭褂?Python 是一種競(jìng)爭(zhēng)優(yōu)勢(shì)。這是一種秘密武器,對(duì)吧?”
那次大會(huì)在馬里蘭州的那個(gè)后來(lái)成為了美國(guó)國(guó)家標(biāo)準(zhǔn)局的地方舉行,Warsaw 說(shuō),他們能明顯感受到 Python 提供的新功能能夠降低編寫代碼的難度,讓開(kāi)發(fā)工作更為輕松。
他回憶道:“在第一次接觸 Python 的時(shí)候,我就感覺(jué)到一些特別之處。編寫 Python 代碼是一種樂(lè)趣,而且可讀性非常高?!?/p>
Python 之父Guido van Rossum
如今,人們對(duì) Python 的喜愛(ài)已遠(yuǎn)遠(yuǎn)超出最初的那幾名開(kāi)發(fā)者的圈子,有人預(yù)測(cè) Python 很快就會(huì)成為世界上最流行的編程語(yǔ)言,因?yàn)檫@種語(yǔ)言新用戶的增長(zhǎng)速度超過(guò)了任何其他編程語(yǔ)言。數(shù)百萬(wàn)計(jì)的程序員每天都在使用 Python,而且其用戶的增長(zhǎng)指數(shù)沒(méi)有絲毫減緩的趨勢(shì)。
無(wú)論是專業(yè)人士還是業(yè)余開(kāi)發(fā),無(wú)論項(xiàng)目的大小,人們紛紛選擇了 Python,尤其是 Web 開(kāi)發(fā)人員、數(shù)據(jù)科學(xué)家和系統(tǒng)管理員,他們尤其喜歡 Python。今年早些時(shí)候,有人利用 Python 合成了首張距離地球 5500 萬(wàn)光年的黑洞照片,而另一方面,Python 也成為了全球電腦上為無(wú)數(shù)黑客攻擊腳本提供動(dòng)力的編程語(yǔ)言。 Python 在全世界一些知名的組織中也發(fā)揮著關(guān)鍵性作用,它幫助 Netflix 為全球超過(guò) 1 億個(gè)家庭帶來(lái)了在線視頻,幫助 Instagram 為千家萬(wàn)戶提供了照片共享,還幫助 NASA 展開(kāi)太空探索。
早年的 Python Python 這個(gè)名字源自英國(guó)的一組超現(xiàn)實(shí)幽默表演團(tuán)體蒙提·派森(Monty Python),從某些方面來(lái)說(shuō),該編程語(yǔ)言的發(fā)展與這個(gè)表演團(tuán)體如出一轍——同樣的離奇曲折,又驚世駭俗。而 Python 編程語(yǔ)言本身也在自己的領(lǐng)域享有盛名和影響力。
Python 編程語(yǔ)言始自荷蘭程序員 Guido van Rossum 的一個(gè)業(yè)余項(xiàng)目。20 世紀(jì) 80 年代末,Van Rossum 在荷蘭國(guó)家數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究中心(Centrum Wiskunde & Informatica,CWI)開(kāi)發(fā)分布式系統(tǒng)?,F(xiàn)有編程語(yǔ)言的缺陷令他感到萬(wàn)分沮喪,于是他決定創(chuàng)建一門新的編程語(yǔ)言——一門易于使用且功能齊全的編程語(yǔ)言。
在外人看來(lái),創(chuàng)建自己的編程語(yǔ)言就好像是說(shuō)“我要建造自己的飛機(jī)”,但是當(dāng)時(shí)三十多歲的 Van Rossum 擁有一些先發(fā)優(yōu)勢(shì)。他在一個(gè) CWI 的團(tuán)隊(duì)中工作了三年,期間他們創(chuàng)建了一種解釋性的編程語(yǔ)言 ABC,所以他對(duì)執(zhí)行程序指令的解釋器以及新語(yǔ)言所需的語(yǔ)法基本構(gòu)成已有深入的了解。
此外還有很重要的一點(diǎn),當(dāng)時(shí)的 Van Rossum 意識(shí)到使用那些功能有限的編程語(yǔ)言來(lái)完成工作的難度太大。當(dāng)時(shí)他在研究 Amoeba 分布式計(jì)算系統(tǒng),寫代碼需要使用 C 或 Unix shell,這兩者都有很大的局限性。C 不僅要求開(kāi)發(fā)人員應(yīng)對(duì)手動(dòng)管理內(nèi)存的復(fù)雜性以及遇到潛在錯(cuò)誤的危險(xiǎn),而且還缺少開(kāi)發(fā)人員日常工作所需的可重用代碼庫(kù),每次遇到新項(xiàng)目開(kāi)發(fā)人員都需要重新開(kāi)發(fā)基本的組件。而 Unix shell 則有完全不同的問(wèn)題:它為解決常見(jiàn)的任務(wù)提供了一套實(shí)用程序,但其運(yùn)行速度太慢,無(wú)法處理復(fù)雜的邏輯。
這些語(yǔ)言上的限制讓開(kāi)發(fā)人員的工作痛苦不堪,因此對(duì)于 Van Rossum 來(lái)說(shuō),創(chuàng)建自己的解釋語(yǔ)言才是最好的選擇(而且他還可以借鑒 ABC 語(yǔ)言的部分功能)。 “當(dāng)時(shí)我就在想,為什么不創(chuàng)建自己的編程語(yǔ)言呢?我從 ABC 中借鑒了一些想法,同時(shí)將項(xiàng)目的規(guī)模從三年的開(kāi)發(fā)降低到我可以獨(dú)自承受的工作量,作為我的業(yè)余項(xiàng)目在三個(gè)月內(nèi)完成。于是,Python 誕生了。”他說(shuō)。
1989 年底,Van Rossum 正式啟動(dòng)了這個(gè)項(xiàng)目,這門編程語(yǔ)言的名字來(lái)自他最喜歡的戲劇表演團(tuán)蒙提·派森(Monty Python),由于 Python(蟒蛇)與蛇有關(guān),所以后來(lái)他選用了樣子有點(diǎn)像蛇纏繞的 Python 標(biāo)志。
“當(dāng)時(shí)的我并沒(méi)有太多豐富的社交生活。因此,我把看電視的時(shí)間花在編程上,有時(shí)也會(huì)邊看電視邊寫代碼?!彼姓J(rèn)說(shuō)。
雖然名義上他創(chuàng)建 Python 是為了幫助減輕自己的工作負(fù)擔(dān),但 Van Rossum 說(shuō)更大的動(dòng)力來(lái)自面對(duì)創(chuàng)建自己的編程語(yǔ)言的巨大挑戰(zhàn)。
“我并不清楚我是不是真的相信創(chuàng)建這樣一門編程語(yǔ)言可以提高我的工作效率??赡茉谀撤N程度上,我只是很喜歡親手創(chuàng)建一個(gè)大項(xiàng)目的想法,展示我想展示的代碼,按照我想要的方式設(shè)計(jì)。我很享受編程的樂(lè)趣?!彼f(shuō)。
盡管僅憑個(gè)人的力量創(chuàng)建一門編程語(yǔ)言的想法聽(tīng)起來(lái)很不尋常,但當(dāng)時(shí)的 Van Rossum 生在一個(gè)英雄輩出的年代。20 世紀(jì) 80 年代后期,在開(kāi)發(fā)工具給當(dāng)時(shí)的開(kāi)發(fā)人員造成的重重挫敗感的刺激下,各大主流編程語(yǔ)言如雨后春筍般紛紛涌現(xiàn)。拉里·沃爾(Larry Wall)曾說(shuō),他創(chuàng)建 Perl 語(yǔ)言的動(dòng)力就來(lái)自通過(guò)編程解決問(wèn)題的難度過(guò)大,以及自身的“懶惰、急躁和狂妄自大”。還有,John Ousterhout 堅(jiān)持不懈地尋找更好的語(yǔ)言來(lái)創(chuàng)建構(gòu)建集成電路的交互式工具,最后他設(shè)計(jì)出了 Tcl。
在短短三個(gè)月內(nèi),Van Rossum 就創(chuàng)建了 Python 這種解釋語(yǔ)言的工作原型,他說(shuō)這個(gè)原型缺少現(xiàn)代功能,但仍不失為一種現(xiàn)代的編程語(yǔ)言。
“如今的Python有很多重要的抽象,當(dāng)時(shí)沒(méi)有,但語(yǔ)言本身看起來(lái)還是差不多?!彼f(shuō)。
“當(dāng)時(shí),我只做了解釋器和編程語(yǔ)言的基本組件。一些簡(jiǎn)單的能在第一個(gè)Python解釋器上運(yùn)行的程序在如今的Python上仍然有效?!彼f(shuō),并補(bǔ)充說(shuō)函數(shù)的定義方式相同,縮進(jìn)也相同,字典和元組也是用相同的語(yǔ)法創(chuàng)建的,而且還有一個(gè)熟悉的交互式提示符,你可以在上面鍵入Python代碼并立即執(zhí)行計(jì)算。
雖然Van Rossum的兩位同事在拿到這門語(yǔ)言后立即開(kāi)始使用,但他本身對(duì)進(jìn)一步的推廣并沒(méi)有抱太大期望,因?yàn)樗麄冃闹敲髟诨ヂ?lián)網(wǎng)出現(xiàn)之前的時(shí)代,順利推廣一門編程語(yǔ)言是多么困難。
雖然如今在與整個(gè)世界共享軟件時(shí),你只需點(diǎn)擊幾下鼠標(biāo),然而在20世紀(jì)80年代你需要付出更多的努力,Van Rossum想起當(dāng)時(shí)(在Python前)發(fā)布ABC時(shí)的困難重重。
“記得85年左右,我去美國(guó)度假,那是我第一次去美國(guó),我的行李箱里裝滿了磁帶?!?Van Rossum說(shuō)。
他通過(guò)當(dāng)時(shí)簡(jiǎn)陋的基本電子郵件系統(tǒng)找到了對(duì)ABC有興趣的人的地址和電話號(hào)碼,由于無(wú)法通過(guò)電子郵件傳輸龐大的源代碼,所以他不得不挨家挨戶發(fā)磁帶。盡管付出了這么多努力,ABC仍然沒(méi)能取得成功。
“盡管我們的ABC有很好的特性,但是發(fā)行量依然不理想?!彼f(shuō)。但隨著互聯(lián)網(wǎng)革命的蓬勃發(fā)展,如今無(wú)需裝滿磁帶的行李箱,就可以很輕松地分發(fā)Python。 1991年,Van Rossum通過(guò)alt.sources新聞組向世界發(fā)布了Python,采用的授權(quán)很像現(xiàn)在的開(kāi)源許可——盡管直到6年后開(kāi)源這個(gè)詞才首次問(wèn)世。雖然Python解釋器仍然需要將21個(gè)單獨(dú)的文件合并成一個(gè)壓縮包,而且需要在Usenet網(wǎng)絡(luò)上花一整夜的時(shí)間才能下載完畢,但仍然比幾年前的手工發(fā)放方便多了。
“我希望這次能有一點(diǎn)起色,但我之前就經(jīng)歷過(guò)一次發(fā)布,而且基本以失敗告終?!彼f(shuō)。
回憶起往昔,Van Rossum表示,過(guò)了很久以后他才聽(tīng)到有關(guān)Python用戶群不斷增長(zhǎng)的消息。漸漸地,他感覺(jué)到了 Python 崛起的力量,在與 Python 社區(qū)定期互動(dòng)了一段時(shí)間后,他意識(shí)到自己創(chuàng)建的這門編程語(yǔ)言可能要成功了。 “我感覺(jué)整個(gè)過(guò)程非常非常緩慢。在我們完成了第一個(gè)開(kāi)源版本后,我一直在堅(jiān)持定期發(fā)布新版本,并與剛剛興起的 Python 社區(qū)交互。我感覺(jué)這非常重要?!?Python 成功的原因 20世紀(jì)90年代早期,Python開(kāi)始備受關(guān)注,感覺(jué)Python的時(shí)代已經(jīng)到來(lái),Van Rossum也感覺(jué)到了。
Van Rossum認(rèn)為開(kāi)發(fā)人員被Python所吸引的原因與當(dāng)時(shí)他創(chuàng)建這門編程語(yǔ)言的初衷一致。他們想要一種高級(jí)腳本語(yǔ)言,能夠在方便使用和功能健全之間取得平衡,在處理復(fù)雜邏輯時(shí)沒(méi)有Unix shell的限制。他們希望結(jié)束開(kāi)發(fā)人員使用C時(shí)繁瑣的內(nèi)存管理,也希望改變每個(gè)項(xiàng)目開(kāi)始之初都需要為相同的基本功能編寫重復(fù)代碼的局面。
Barry Warsaw在1994年的第一次Python研討會(huì)上
Warsaw表示,Python保持了語(yǔ)言的方便使用,同時(shí)也沒(méi)有犧牲功能的健全——在20世紀(jì)90年代早期,任何一門主流的編程語(yǔ)言都未能真正提供這種平衡性?!拔覈L試過(guò)Perl、Tcl和C編程,感覺(jué)都不是很有趣。直到Python的出現(xiàn)讓我眼前一亮,感覺(jué)原來(lái)編程可以如此有趣?!彼f(shuō)。
Python提供了清晰明確的語(yǔ)法,通過(guò)縮進(jìn)將代碼分組成塊,讓開(kāi)發(fā)人員更容易理解代碼。
分析公司Gartner的應(yīng)用程序平臺(tái)戰(zhàn)略團(tuán)隊(duì)的研究主管Fintan Ryan表示,清晰性在贏得開(kāi)發(fā)人員方面起著重要的作用,無(wú)論是現(xiàn)在還是在20世紀(jì)90年代,即使僅憑縮進(jìn)實(shí)現(xiàn)的清晰性也可以扭轉(zhuǎn)整個(gè)局面?!癙ython提供了一種非常干凈的語(yǔ)法。在使用其他編程語(yǔ)言時(shí)你需要強(qiáng)迫人們遵守縮進(jìn),但使用Python時(shí)這種強(qiáng)制是自動(dòng)的。有些程序員喜歡這種做法,有些人卻很討厭?!彼f(shuō)。
事實(shí)上,Python優(yōu)先考慮代碼清晰性和可讀性并非偶然,Van Rossum表示,對(duì)于編程語(yǔ)言來(lái)說(shuō),開(kāi)發(fā)人員之間的思想交流與他們和計(jì)算機(jī)之間的交流同等重要。
除了可讀性之外,Ryan表示,從早期開(kāi)始,Python就提供了一系列內(nèi)置功能,所以它才能從眾多編程語(yǔ)言之中脫穎而出。“Python從一開(kāi)始就具有類和異常處理等功能,此外它還提供了lambda、map和filter等輔助函數(shù),事實(shí)證明在很多情況下這些功能都非常實(shí)用。”他說(shuō)。
如果80年代后期流行的編程語(yǔ)言出色一點(diǎn)的話,可能Python壓根就不會(huì)出現(xiàn)了,因?yàn)閂an Rossum創(chuàng)建Python的動(dòng)機(jī)之一就是Perl腳本語(yǔ)言與Amoeba分布式計(jì)算系統(tǒng)(他在CWI的工作)的不兼容?!皩?duì)于Python來(lái)說(shuō),Perl無(wú)法移植到Amoeba是一件幸事,”他說(shuō),“如果Perl可以移植到Amoeba上的話,我也不會(huì)想起創(chuàng)建自己的編程語(yǔ)言?!?br />
盡管Python在發(fā)布后吸引了眾多鐵桿粉絲的用戶群,但在20世紀(jì)90年代,Python仍然是一種不被看好的編程語(yǔ)言。Van Rossum表示,Python的競(jìng)爭(zhēng)對(duì)手有Tcl / Tk和Perl,這兩種編程語(yǔ)言的目標(biāo)與Python相同:簡(jiǎn)單易用、功能齊備。
“論90年代排名前三的編程語(yǔ)言的話,Perl以絕對(duì)的優(yōu)勢(shì)居首位,Tcl / Tk排名第二,而第三名才是Python?!彼f(shuō)。
根據(jù)Stack Overflow的年度開(kāi)發(fā)人員調(diào)查報(bào)告(這是目前最全面的編程語(yǔ)言使用情況調(diào)查)顯示,Python是活躍的開(kāi)發(fā)人員中間增長(zhǎng)最快的編程語(yǔ)言,但報(bào)告中甚至都沒(méi)有提及Perl。
下圖中Python的爆炸式增長(zhǎng)表明,近年來(lái)Stack Overflow上有關(guān)Python提問(wèn)的增長(zhǎng)速度遠(yuǎn)遠(yuǎn)超過(guò)了其他編程語(yǔ)言。
那么,究竟Python是如何超越昔日的競(jìng)爭(zhēng)對(duì)手的呢?我們又該如何解釋兩種語(yǔ)言截然不同的命運(yùn)呢?Van Rossum認(rèn)為,這與代碼庫(kù)的增長(zhǎng)超過(guò)一定規(guī)模后維護(hù)代碼庫(kù)的容易度有關(guān)?!鞍慈藗兊慕?jīng)驗(yàn)來(lái)看,如果某個(gè)腳本只有10行代碼,那么Perl是完美的選擇?!彼f(shuō),“但是,如果你有500行主線代碼和幾千行庫(kù),那么就需要嚴(yán)加約束才能維護(hù)好這些代碼。而在Python,即使沒(méi)有那么嚴(yán)格的約束,代碼仍然具備一定的可讀性和可維護(hù)性?!?br />
正是這種特性促使Python成為了一種容易上手的編程語(yǔ)言,同時(shí)也非常強(qiáng)大,足以編寫大型應(yīng)用程序,因此Van Rossum才在20世紀(jì)90年代取得了初步的成功。 “有一些互聯(lián)網(wǎng)開(kāi)發(fā)人員(很多是早期的互聯(lián)網(wǎng)工作者),他們編寫的應(yīng)用程序越來(lái)越大,而且他們發(fā)現(xiàn)用Python編寫應(yīng)用程序所需要付出的努力遠(yuǎn)低于C、C++或Java?!?br />
隨著20世紀(jì)90年代Python使用范圍的擴(kuò)大,仍然在CWI工作的Van Rossum發(fā)現(xiàn)越來(lái)越多來(lái)自世界各地的人就他的編程語(yǔ)言與他聯(lián)系。
“我創(chuàng)建了一門編程語(yǔ)言,而它與澳大利亞、美國(guó)、歐洲等世界各地的人聯(lián)系到了一起。我享受到了生命中的美好時(shí)光。”他說(shuō)。 Python 與 Web 到 20 世紀(jì) 90 年代中期的時(shí)候,Python 出現(xiàn)新的使用方式,最初用于音頻的錄制和回放腳本,后來(lái)開(kāi)始涉足 Web 開(kāi)發(fā)——而 Web 成為了 Python 后續(xù)發(fā)展的支柱。
“這期間的一件大事就是 Web 開(kāi)發(fā),這對(duì)我來(lái)說(shuō)也是一件非常有趣的事情,” Van Rossum 說(shuō)道,人們開(kāi)始用 Python 編寫 Web 服務(wù)器上的后端腳本(就像 Perl 和 Shell 腳本一樣)。他說(shuō),“你可以創(chuàng)建動(dòng)態(tài)網(wǎng)頁(yè),這是我最喜歡的 Python 應(yīng)用程序之一?!?br />
Gartner 的 Ryan 說(shuō),在 20 世紀(jì) 90 年代,Python 在開(kāi)發(fā)人員中間流行的原因就在于它是快速創(chuàng)建強(qiáng)大腳本的最佳選擇?!白鳛橐婚T功能強(qiáng)大的腳本語(yǔ)言,Python 降低了許多用戶的門檻?!彼f(shuō)。
不僅如此,Ryan 還說(shuō)這門語(yǔ)言的功能多樣化,且容易上手,因此吸引了許多擁有不同技術(shù)專長(zhǎng)的各類用戶。“系統(tǒng)管理員和其他人采用 Python 實(shí)現(xiàn)系統(tǒng)自動(dòng)化和編程,開(kāi)發(fā)人員喜歡它的函數(shù)式編程、支持繼承的類等特性—— 而其他語(yǔ)言,例如 Perl,這方面的功能相對(duì)就弱一些,”他說(shuō),“這門編程語(yǔ)言的學(xué)習(xí)曲線很低,而且一旦上手,就會(huì)迅速提高工作效率。”
1994 年,Python 引起了 Michael McLay 的注意,他曾在當(dāng)時(shí)的美國(guó)國(guó)家標(biāo)準(zhǔn)局(NBS)(現(xiàn)在的美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST))擔(dān)任高級(jí)職務(wù)。McLay 的關(guān)注預(yù)示著 Python 將受到研究人員和科學(xué)家的青睞——他認(rèn)為 Python 簡(jiǎn)單易用,非常適合 NBS 的科學(xué)家使用,Van Rossum 說(shuō),“這些科學(xué)家需要處理大量的數(shù)據(jù),但他們都不熟悉編程?!?br />
為了在 NBS 內(nèi)的其他人中推廣 Python,McLay 邀請(qǐng)了當(dāng)時(shí)仍在荷蘭 CWI 工作的 Van Rossum 到 NIST,作為客座研究員工作了兩個(gè)月。事實(shí)證明,此次安排給 Python 未來(lái)的發(fā)展和 Van Rossum 的生活帶來(lái)了重大變化。
在 Van Rossum 這兩個(gè)月的工作期間,NBS 舉行了第一次 Python 研討會(huì),Van Rossum、Barry Warsaw 和其他早期的 Python 愛(ài)好者聚集在一起討論P(yáng)ython 的使用,以及這門語(yǔ)言未來(lái)的發(fā)展。
在 NBS 的辦公室里,Van Rossum 遇到了 Bob Kahn——此人開(kāi)發(fā)了互聯(lián)網(wǎng)的一項(xiàng)基礎(chǔ)技術(shù):TCP / IP 協(xié)議。
在此次會(huì)議上,Van Rossum 收到了邀請(qǐng),前往美國(guó)全國(guó)研究創(chuàng)新聯(lián)合會(huì)(CNRI,這是一家位于弗吉尼亞州的非營(yíng)利性研究組織,專注于網(wǎng)絡(luò)技術(shù)的戰(zhàn)略發(fā)展)與 Kahn 一起工作。
雖然 Python 已經(jīng)滿足了新型編程語(yǔ)言的需求,但 Van Rossum 表示他開(kāi)始質(zhì)疑自己在 CWI 的發(fā)展前景,而這個(gè)工作機(jī)會(huì)的出現(xiàn)恰逢其時(shí)。
“CWI 是一個(gè)學(xué)術(shù)機(jī)構(gòu),我感受到了一定的壓力,要么攻讀博士學(xué)位,要么就需要另謀高就。”他說(shuō)。
“當(dāng)時(shí)我已經(jīng)35歲了,在這個(gè)年紀(jì)攻讀博士學(xué)位并非我所愿。早些時(shí)候,由于 Python 的原因,我也收到過(guò)很多工作機(jī)會(huì),但是經(jīng)過(guò)電話交談和慎重的考慮后,我還是決定留下。但是,此次機(jī)會(huì)十分難得,我喜歡這些人,喜歡他們提出的條件以及項(xiàng)目,所以我動(dòng)搖了?!?br />
Van Rossum 在加入 CNRI 以后,在一個(gè) Python 愛(ài)好者團(tuán)隊(duì)的幫助下建立了許多管理 Python 語(yǔ)言的結(jié)構(gòu)。1995年4月,Van Rossum 加入 CNRI,他開(kāi)始帶領(lǐng)一個(gè)小團(tuán)隊(duì)的開(kāi)發(fā)人員致力于構(gòu)建 Knowbot 程序——該軟件被稱為“移動(dòng)代理”,旨在跨分布式計(jì)算機(jī)系統(tǒng)(如互聯(lián)網(wǎng))上運(yùn)行。
該團(tuán)隊(duì)的工作采用了 Python,除了 Van Rossum 之外,還有 Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer 和 Fred Drake,所有人都在 Python 社區(qū)中發(fā)揮著重要的作用。
“最終我們組建了一支4-10人的團(tuán)隊(duì),其中大多數(shù)人都是在CNRI工作,他們是Python開(kāi)發(fā)的核心力量。”Van Rossum說(shuō)。
Van Rossum在CNRI工作期間,這個(gè)團(tuán)隊(duì)幫助他創(chuàng)建了python.org網(wǎng)站、管理核心代碼庫(kù)變動(dòng)的CVS服務(wù)器,還建立了改進(jìn)和維護(hù)Python語(yǔ)言的特別小組郵件列表。
自1991年公開(kāi)發(fā)布以來(lái),Python用戶社區(qū)的增長(zhǎng)非常顯著,到本世紀(jì)下半葉時(shí),該編程語(yǔ)言已經(jīng)吸引了大批全球用戶群。在此期間,該編程語(yǔ)言的管理開(kāi)始步入正規(guī),同時(shí)還于2001年建立了Python軟件基金會(huì)(PSF)的前身。隨著社區(qū)的發(fā)展,于1994年開(kāi)始的兩年一度的Python研討會(huì)演變成了盛大的年度活動(dòng),還有如今仍在盛行的由PSF主辦的Python年度大會(huì)。
到21世紀(jì)之交,Python編程語(yǔ)言空前壯大,龐大的社區(qū)在其發(fā)展中發(fā)揮著積極的作用?;叵?994年的那個(gè)夏天,早期的Python用戶還在擔(dān)心如果Guido發(fā)生意外,這門編程語(yǔ)言該何去何從(請(qǐng)參考《如果Guido被公共汽車撞了》,https://legacy.python.org/search/hypermail/python-1994q2/1040.html)。
然而,Van Rossum一直在Python語(yǔ)言的發(fā)展中發(fā)光發(fā)熱,而且他的思想在該編程語(yǔ)言發(fā)展中依然處于核心地位,因此大家都親昵地稱呼他為“仁慈的獨(dú)裁者”,多年以來(lái)這個(gè)半開(kāi)玩笑的頭銜一直陪伴著他。
“長(zhǎng)期以來(lái),在大多數(shù)時(shí)候,我都能夠承受這些壓力,而且我也具備了管理項(xiàng)目的能力,我可以將很多工作委派出去,讓人們掌握自己的命運(yùn)?!盫an Rossum說(shuō)。
Gartner的Ryan表示,由編程語(yǔ)言的創(chuàng)始人出面管理語(yǔ)言的情況并不常見(jiàn),參考一下Larry Wall和Perl以及Ryan Dahl的JavaScript運(yùn)行時(shí)Node.js就可見(jiàn)一窺,但大家都認(rèn)為Van Rossum管理Python的方式很公平。
“大家都認(rèn)為他能夠在整體的管理工作中,很好地平衡項(xiàng)目的方向。”
事實(shí)上,Van Rossum認(rèn)為Python成功的決定性因素在于Python開(kāi)發(fā)中的開(kāi)放性,而這種開(kāi)發(fā)性建立在核心開(kāi)發(fā)人員社區(qū)之間的公開(kāi)討論之上。 Python 的演變 在此期間,Python 取得了重大飛躍,2008 年 Python 3.0 的引入讓該編程語(yǔ)言走向了現(xiàn)代化,然而,近期該編程語(yǔ)言的管理方式也發(fā)生了重大改變。
有些變化始自去年,當(dāng)時(shí) Van Rossum 辭去了作為“仁慈的獨(dú)裁者”的領(lǐng)導(dǎo)身份,因?yàn)楣娫?Python 引入賦值表達(dá)式的問(wèn)題上產(chǎn)生了分歧(請(qǐng)參照 Python 改進(jìn)方案 PEP572,https://www.python.org/dev/peps/pep-0572/)。
雖然引入該功能的目的是編寫更有效的代碼,但 Van Rossum 在網(wǎng)上遭到了那些反對(duì)變革的人的嚴(yán)厲批評(píng),有些人認(rèn)為該功能會(huì)降低代碼的可讀性,且難以維護(hù)。
Van Rossum 表示,他習(xí)慣了有關(guān)新功能的爭(zhēng)論,但他不愿與某些詆毀他的人妥協(xié),而某些攻擊者的人品致使他下決心辭職。
“我感到非常失望,有人在技術(shù)上有不同的看法,就去社交媒體上咆哮說(shuō) Python 的決策過(guò)程遭到了破壞,或者說(shuō)我犯了極其嚴(yán)重的錯(cuò)誤。我感覺(jué)背后被人擺了一道?!彼f(shuō)。
“過(guò)去,大家都很清楚,如果需要在語(yǔ)言上做出某些改變或改進(jìn)某個(gè)功能,那么就需要經(jīng)由一大堆核心開(kāi)發(fā)人員討論這些變化的利弊。有時(shí)大家會(huì)達(dá)成明確的共識(shí),有時(shí)無(wú)法取得統(tǒng)一的意見(jiàn),那么我就在腦海中仔細(xì)考慮,并做出決定。在 PEP572 的問(wèn)題上,盡管存在明顯的爭(zhēng)議,但我做出了選擇:我想引入這個(gè)功能,而且大家也沒(méi)有說(shuō)不同意?!?br />
“我不想撂挑子不干了,但我覺(jué)得我沒(méi)有獲得足夠的核心開(kāi)發(fā)者社區(qū)的信任,無(wú)法再領(lǐng)導(dǎo)整個(gè)團(tuán)隊(duì)繼續(xù)前進(jìn)?!?br />
他認(rèn)為,有關(guān)語(yǔ)言的爭(zhēng)論方式的變化部分是因?yàn)槿缃袷褂?Python 的人數(shù)過(guò)于龐大。
“可能是因?yàn)?Python 社區(qū)的規(guī)模過(guò)于龐大。這些人之間很難達(dá)成共識(shí),因?yàn)闊o(wú)論你做出怎樣的決定,總有一些持異議的人士。”
今年早些時(shí)候,Python 核心開(kāi)發(fā)人員(那些致力于維護(hù)和更新 Python 使用的 CPython 解釋器的人)選出了一個(gè)指導(dǎo)委員會(huì)來(lái)監(jiān)督該語(yǔ)言的發(fā)展。Van Rossum 與 Warsaw 以及核心開(kāi)發(fā)人員 Brett Cannon、Carol Willing 和 Nick Coghlan 一起當(dāng)選。
Warsaw 表示,為了管理 Python 增長(zhǎng)速度如此迅速的用戶群,這種變化是必要的。
“我感覺(jué) Guido 想憑一己之力挑起整個(gè)世界。”他說(shuō)。
“放在 25 年前,當(dāng)時(shí) Python 還是一個(gè)很小的語(yǔ)言,社區(qū)規(guī)模也很小,一個(gè)人管理也沒(méi)問(wèn)題。但今非昔比,而且我覺(jué)得為他的個(gè)人健康考慮,應(yīng)當(dāng)讓社區(qū)的五個(gè)人共同分擔(dān)這項(xiàng)重任?!盬arsaw 說(shuō)。
在每次新 Python 功能發(fā)布后,指導(dǎo)委員會(huì)都會(huì)進(jìn)行新一屆的選舉,Warsaw 表示,這可以為下一任領(lǐng)導(dǎo) Python 發(fā)展的人鋪平道路。
“即便從現(xiàn)在開(kāi)始 25 年后 Python 仍將健康發(fā)展,那么屆時(shí)也不是我和 Guido 所能管轄的世界了?!彼f(shuō)。
廣大的 Python 核心開(kāi)發(fā)人員社區(qū)非常歡迎指導(dǎo)委員會(huì)的設(shè)立,核心開(kāi)發(fā)人員Mariatta Wijaya 表示,此舉意味著 Python 朝著正確的方向邁出了一步。“對(duì)我來(lái)說(shuō),通過(guò)委員會(huì)來(lái)共同做決定好過(guò)讓一個(gè)人全權(quán)決定,畢竟這份責(zé)任和負(fù)擔(dān)太大了。”她說(shuō),“這是一個(gè)好兆頭,社區(qū)可以聽(tīng)到更多人的心聲?!?Python 的未來(lái) 雖然 Python 持續(xù)以驚人的速度吸引著新用戶,但社區(qū)中的有些人預(yù)見(jiàn)到了未來(lái)的挑戰(zhàn),如果想維持 Python 的高度關(guān)注,那么就必須不斷發(fā)展。
在今年的 Python 語(yǔ)言峰會(huì)上,BeeWare 的聯(lián)合創(chuàng)始人 Russell Keith-Magee 發(fā)出了警告,如果 Python 無(wú)法改善對(duì)移動(dòng)和新網(wǎng)絡(luò)平臺(tái)的支持,那么就可能面臨“生死存亡的風(fēng)險(xiǎn)”。
“手機(jī)和平板電腦對(duì)市場(chǎng)的滲透力是臺(tái)式機(jī)和筆記本電腦無(wú)法比擬的,但作為一個(gè)社區(qū),我們卻未能提供在這些設(shè)備上使用 Python 的渠道?!彼f(shuō)。他調(diào)查了他兒子在學(xué)校使用 iPad 的情況,他問(wèn):“如果筆記本電腦被小型設(shè)備取代,那么 Python 該何去何從?”
Keith-Magee 希望通過(guò) BeeWare 的項(xiàng)目,編寫一個(gè) Python 應(yīng)用程序,并在所有設(shè)備上運(yùn)行,解決目前 Python 無(wú)法支持標(biāo)準(zhǔn) x86 PC 之外的平臺(tái)的問(wèn)題。 他表示,Python 需要更好地支持在非 x86 的新興硬件平臺(tái)上編譯代碼;Python 的測(cè)試套件容易在移動(dòng)和 Web 平臺(tái)上崩潰;Python 應(yīng)用程序的安裝過(guò)大,且無(wú)法縮減到一小部分的依賴項(xiàng);在 Android、Windows 和 Web 上編寫 GUI 代碼時(shí),使用 asyncio 庫(kù)需要付出額外的工作量;標(biāo)準(zhǔn)庫(kù)中存在大量無(wú)法與 CPython 以外的 Python 解釋器兼容的模塊。
Warsaw 表示,Keith-Magee 提出的意見(jiàn)非常中肯,而且他相信考慮 Python 與新平臺(tái)(包括手機(jī)、平板電腦和 WebAssembly 等新技術(shù))的關(guān)聯(lián)性非常重要。 “現(xiàn)在,Python 并沒(méi)有一個(gè)很好的途徑,”Warsaw 表示他希望有一天用戶通過(guò) iPhone 或 Android 手機(jī)下載應(yīng)用時(shí)“從來(lái)不知道該應(yīng)用是用 Python 編寫的?!?br />
隨著現(xiàn)代芯片內(nèi)部處理器核心數(shù)量的不斷攀升(英特爾最新的服務(wù)器中核心的數(shù)量高達(dá) 48 個(gè)),Warsaw 也希望看到 Python 能夠更好地處理多核心上的分散任務(wù)。
他對(duì) Eric Snow 在子解釋器上的工作進(jìn)展,以及擴(kuò)展 Python 并行運(yùn)行代碼的能力充滿了期待。“我真心希望看到 Python 能夠利用多核心完成更多工作的能力?!彼f(shuō)。
Snow 參與了一個(gè)長(zhǎng)期項(xiàng)目,旨在提高 Python 在多個(gè)處理器核心之間有效地分割任務(wù)的能力,Snow 的主要工作是重新編寫 Python 現(xiàn)有的子解釋器功能,并改變每個(gè)子解釋器與 Python 全局解釋器鎖交互的方式。
Warsaw 說(shuō):“這個(gè)項(xiàng)目應(yīng)該不會(huì)在 Python 3.8 上發(fā)布,可能 3.9 也來(lái)不及?!拔夜烙?jì)我們會(huì)在兩年到兩年半以后看到它。我非常樂(lè)觀。我很高興 Eric 依然在努力,因?yàn)槲艺J(rèn)為這個(gè)工作非常重要?!?br />
他說(shuō),即使是那些嘗試在多個(gè)核心上運(yùn)行多線程 Python 應(yīng)用程序的失敗項(xiàng)目,例如 The Gilectomy,也可以讓我們吸取有意義的經(jīng)驗(yàn)教訓(xùn),說(shuō)明 Python 可以在多個(gè)核心之間分散工作負(fù)載方面有更出色的表現(xiàn)。
Python 社區(qū)還采取措施,提高了語(yǔ)言內(nèi)置代碼標(biāo)準(zhǔn)庫(kù)的現(xiàn)代化水平,最近他們發(fā)表了一項(xiàng)提議,建議從庫(kù)中刪除過(guò)時(shí)模塊。這樣做是為了應(yīng)對(duì)最近對(duì) Python 標(biāo)準(zhǔn)庫(kù)的一些批評(píng)。該庫(kù)常常被當(dāng)作 Python 的優(yōu)勢(shì)之一,因?yàn)樗捎糜趫?zhí)行廣泛的常見(jiàn)任務(wù),這就是為什么 Python 被稱為“自帶電池”的原因。然而,在今年的 Python 語(yǔ)言峰會(huì)上,有人在演講中說(shuō),應(yīng)該允許人們從 PyPI 中選擇庫(kù),而不應(yīng)該作為標(biāo)準(zhǔn)庫(kù)與語(yǔ)言捆綁在一起,這樣 Python 才能更好地服務(wù)于人。
還有一些問(wèn)題是,負(fù)責(zé)語(yǔ)言開(kāi)發(fā)的 Python 核心開(kāi)發(fā)人員和 Python 指導(dǎo)委員會(huì)是否可以更好地代表 2019 年 Python 用戶群的多樣性。
Wijaja 說(shuō):“我希望看到各個(gè)方面表現(xiàn)出更多的代表性,不僅僅是性別的平衡,還包括種族和其他一切?!?br />
“在 Python 大會(huì)上,我與來(lái)自印度和非洲的 PyLadies(Python 女性聯(lián)盟組織)成員進(jìn)行了交談。她們說(shuō),‘當(dāng)聽(tīng)說(shuō) Python 或 PyLadies 時(shí),我們就會(huì)想到北美或加拿大人,實(shí)際上世界其他地方也有很多用戶群。為什么我們看不到呢?’我認(rèn)為她們說(shuō)得很有道理。我肯定也希望看到更多的用戶群,我認(rèn)為我們都需要盡自己的責(zé)任?!?br />
Warsaw 說(shuō),盡管外間流傳著讓一位“仁慈的獨(dú)裁者”掌管一切的玩笑話,但近年來(lái)改變 Python 的想法皆源自社區(qū)中,他們敞開(kāi)大門歡迎新用戶的到來(lái),并推動(dòng) Python 的使用。
“整個(gè)社區(qū)是從底層向上構(gòu)建的,而不是自上而下的命令?!彼f(shuō)。
說(shuō)到社區(qū)項(xiàng)目對(duì) Python 產(chǎn)生的巨大影響,我想到了一個(gè)例子 Type Hints,這是一個(gè) Python 3.5 的功能,該功能受到了 2012 年由某個(gè)博士生創(chuàng)建的 mypy 項(xiàng)目的啟發(fā)。這些提示允許可選類型的檢查,可以讓開(kāi)發(fā)人員發(fā)現(xiàn)一類其它方式很難發(fā)現(xiàn)的 Bug。
當(dāng)多個(gè)人在大型代碼庫(kù)上工作時(shí),這個(gè)額外的防護(hù)層絕不僅僅是錦上添花,這種對(duì)于代碼應(yīng)該做什么、不應(yīng)該做什么的額外規(guī)定可以產(chǎn)生重大影響。
“在我看來(lái),讓 Python 在更大的組織中得以應(yīng)用的機(jī)會(huì)非常珍貴。比如 Instagram,他們基本上用的都是 Python 3?!盬arsaw 說(shuō)。他還說(shuō) asyncio 是社區(qū)想法對(duì)語(yǔ)言產(chǎn)生巨大影響的另一個(gè)例子。
有了指導(dǎo)委員會(huì),以及前所未有的龐大用戶群,Van Rossum 樂(lè)觀地認(rèn)為“社區(qū)驅(qū)動(dòng)的語(yǔ)言演變”將會(huì)繼續(xù)“非常成功”。
“我們有非??煽康暮诵拈_(kāi)發(fā)人員社區(qū),現(xiàn)在這個(gè)社區(qū)有了新的治理系統(tǒng),因此我認(rèn)為我們已經(jīng)做好了準(zhǔn)備迎接任何語(yǔ)言發(fā)展的需求?!彼麑?duì)社區(qū)在 Python 特定方面的深刻認(rèn)識(shí)表示贊許。
Warsaw 表示,如果有人懷疑 Python 社區(qū)能否繼續(xù)為這種編程語(yǔ)言找到令人震驚的新用途,那么可以了解一下 Python 在幫助捕獲首張黑洞照片方面時(shí)發(fā)揮的作用。
“我對(duì)此感到非常震驚。我認(rèn)為 Python 社區(qū)中有幾個(gè)人是瘋狂的 Python 科學(xué)家。他們總是在尋找新機(jī)會(huì)——如今我們能做的就這么多,那么今后還能走得更遠(yuǎn)嗎?”
-END-
-
編程
+關(guān)注
關(guān)注
88文章
3689瀏覽量
95182 -
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1956瀏覽量
36580 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86655
原文標(biāo)題:崛起的Python正在蠶食編程語(yǔ)言界!
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何使用 CYW20829 將獲得的傳感器數(shù)據(jù)發(fā)送到廣播中?
Hi3861 wifiiot_hispark_pegasus 按教程安裝python3 -m pip install build/lite 報(bào)錯(cuò)
e絡(luò)盟“頂尖科技之聲”第四期與 AI策略師深入了解最新AI發(fā)展

如何將python文件導(dǎo)入到ROS系統(tǒng)中

字節(jié)跳動(dòng)否認(rèn)與中興通訊合作傳聞
意瑞半導(dǎo)體亮相第五屆汽車電驅(qū)動(dòng)及關(guān)鍵技術(shù)大會(huì)
Prolith和HyperLith的優(yōu)劣勢(shì)
現(xiàn)代智能建筑中電氣火災(zāi)安全監(jiān)控管理的解決方案
特斯拉將獲xAI模型授權(quán)
使用Python進(jìn)行Ping測(cè)試

評(píng)論