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