
作者 | InfoQ
來源 | infoqchina
10 月 30 日,Python 之父 Guido 大牛宣布退休,離開 Dropbox。
他發推文說,“這件事感覺既苦澀又甜蜜:苦澀的是,我馬上要離開 Dropbox,現在已經退休;甜蜜的是,在 Dropbox 做工程師期間,我學到很多,比如類型標注就來自這段經歷。我會非常懷念在這里工作的日子?!?/span>
Python 正在吞噬世界
如今,人們對 Python 的熱情已經遠遠超出了最初的開發者圈子。一些人預測,隨著 Python 用戶群的快速增長,它很快會成為世界上最流行的編程語言。每天有數以百萬計的人使用 Python,用戶群呈現出指數級的增長,幾乎沒有出現下降的跡象。
不管是專業的還是業余的開發人員,他們都在使用 Python 處理大大小小的任務,特別是 Web 開發人員、數據科學家和系統管理員。今年出現的第一批黑洞圖片就是用 Python 拼接出來的。
Python 在一些世界知名的組織中扮演著關鍵角色,比如,Netflix 用 Python 向全球 1 億多戶家庭提供流媒體視頻,Instagram 用 Python 實現圖片分享,NASA 借助 Python 來探索太空。
Python 的早年時期
Python 原先是荷蘭程序員 Guido van Rossum 的一個個人項目。20 世紀 80 年代末,van Rossum 在荷蘭國家數學和計算機科學研究中心的 CWI 部門開發分布式系統。由于對已有的編程語言感到十分失望,他決定開發一門新的語言——一門既易于使用功能又強大的語言。
對于當時的 van Rossum 來說,使用僅有的幾種編程語言完成任何一件事情都顯得很困難。他正在開發的 Amoeba 分布式計算系統要求他使用 C 語言或 Unix shell,但這兩種語言都有很大的局限性。C 語言要求開發人員自己手動管理內存,容易埋下潛在的 bug,而且還缺少可重用的代碼庫。開發人員想要完成日常任務,需要在每個新項目中重新發明輪子。Unix shell 存在另外一個問題——它雖然為日常任務提供了一些實用程序,但它們的運行速度太慢,無法處理復雜的邏輯。
這些語言對開發人員造成的限制如此之大,以至于在 van Rossum 看來,他自己創建的這門解釋型語言——從 ABC 語言借用了一些特性——似乎是最好的選擇。
van Rossum 回憶道:“我當時在想,為什么不自己開發一門語言呢?我完全可以借鑒 ABC 的一些想法,并將項目的規??s小一些,把原先需要花三年時間完成的東西縮短至三個月內,讓它變成我自己的個人項目。于是,Python 誕生了”。
1989 年末,van Rossum 開始認真地開發這門語言,并借用了他最喜歡的喜劇團體“Monty Python”的名字,又因為與蛇有關系,后來就有了那個盤繞的巨蟒的 logo。
他說:“當時我也不知道 Python 是否真的會讓我的工作變得更有效率。在某種程度上,我真的很喜歡這種可以自己完成一個大項目的想法,并且可以按照我想要的方式來設計和實現。在我看來,編程是件有趣的事情”。
三個月之后,van Rossum 做出了可運行的 Python 原型。
他說:“雖然現在的 Python 有很多在當時并不存在的抽象特性,但語言本身仍然始終如一”。
“那時,Python 已經具備了解析器和運行語言所需的基本組件。第一個可運行的 Python 程序放到現在仍然可以運行”。它們的函數定義是一樣的,縮進是一樣的,字典和元組的創建語法是一樣的,交互式提示符也是一樣的。
當他的兩個同事開始使用這門語言處理日常任務時,van Rossum 并沒有指望它會流行起來。因為他知道,在互聯網時代到來之前,讓一門編程語言流行起來有多么困難。
在今天,只需要點擊幾下鼠標就可以把一款軟件分享給全世界,但在上世紀 80 年代,這是一件非常費力的事情。
1991 年,van Rossum 通過 alt.sources 新聞組向全世界發布了 Python。這在當時基本上算是一種開源許可協議,比”開源許可協議“這個術語本身早了六年出現。雖然當時的 Python 解釋器仍然需要將 21 個單獨的部分連接成一個壓縮文件,并需要連夜從 Usenet 網絡上下載下來,但與幾年前線下送磁帶的方式相比,它仍然要高效得多。
他說:“我希望 Python 可以取得成功,畢竟之前我做的另一個東西基本上以失敗告終”。
van Rossum 說,在很長一段時間之后,他才知道 Python 的用戶群在增長。漸漸地,他意識到 Python 的發展勢頭正在形成,在與 Python 社區進行了一段時間的交流之后,他知道,Python 成功了。
Python 為什么會贏
Python 在 20 世紀 90 年代初期到中期開始受到關注,Python 的時代到來了,這讓 van Rossum 感到震驚。
van Rossum 相信,被 Python 吸引過來的開發者,他們轉向 Python 的原因與他當初創建 Python 的原因是一樣的。他們需要一門高級的腳本語言,能夠在易用性和功能之間取得平衡。他們希望能夠結束在 C 語言中手動管理內存、在開始新項目時需要為重復任務重新實現代碼的日子。
Warsaw 說,Python 在可用性和功能之間取得了平衡——在 20 世紀 90 年代早期,任何一門主流編程語言都沒能提供這種平衡?!蔽覍戇^很多 Perl、Tcl 和 C 代碼,感覺它們一點都不好玩。Python 一出現,我就想,‘哇,它讓編程變得更有趣了’”。
不管是過去還是現在,Python 提供的都是清晰而明確的語法,它使用縮進將代碼分組成塊,讓開發人員更容易閱讀和理解代碼。
Python 強調代碼的簡潔和可讀性,這并非偶然。van Rossum 曾公開表示,編程語言不僅要告訴計算機該做什么,還要便于在開發者之間傳遞思想。
Ryan 說,除了可讀性之外,Python 很早就內置了一些通用的功能,這讓 Python 從其他語言中脫穎而出?!澳銖囊婚_始就可以使用某些功能,比如類和異常處理。Python 還提供了對 lambda、map 和 filter 等函數的支持,這些東西在很多情況下都非常有用”。
如果 80 年代末的主流編程語言能夠再好一點,或許就不會給 Python 留有機會。van Rossum 開發 Python 的動機之一就是因為 Perl 與他在 CWI 工作時使用的 Amoeba 分布式計算系統不兼容。他說:“Python 的幸運之處在于 Perl 不能被移植到 Amoeba。如果 Perl 可以被移植到 Amoeba,我就不會想要自己去開發一門語言”。
盡管 Python 在發布后吸引了一批鐵桿粉絲,但在 20 世紀 90 年代,Python 在編程語言方面仍然處于劣勢。van Rossum 說,Python 的競爭對手是 Tcl/Tk 和 Perl,這兩種語言的目標與 Python 是一樣的,即簡單易用且功能強大。
他說:“上世紀 90 年代,在前三大編程語言中,Perl 無疑是第一名,Tcl/Tk 是第二名,而 Python 則是第三”。
Stack Overflow 開發者報告顯示,從開發者活躍度方面看,Python 是增長最快的編程語言,而 Perl 在縮水,它甚至都沒有出現在最新的 Stack Overflow 開發者報告中。
下圖顯示了這種爆炸式的增長。近年來,Stack Overflow 網站上與 Python 相關的問題的增長速度遠遠快于其他編程語言。
那么,Python 是如何超越昔日的競爭對手的呢?又如何解釋這兩門語言之間截然不同的命運呢?van Rossum 認為,這與代碼庫在達到一定規模后的維護難易程度有關。他說,“從人們的經驗來看,Perl 適合用來編寫行數較少的腳本,但如果你的主干代碼超過了 500 行,除此之外還有數千行分支代碼,那么在 Perl 中維護這些代碼就需要遵循很多原則。而在 Python 中,你不需要遵循那么多原則,代碼仍然具有很好的可讀性和可維護性”。
Python 一方面簡單易用,一方面又健壯到可以用來開發大型的應用程序,這兩個因素的組合正是 Python 在上世紀 90 年代取得成功的原因。
“一些互聯網開發者想要開發越來越大型的應用程序,而且他們意識到用 Python 開發應用程序要比用 C 語言、C++ 或 Java 容易得多”。
隨著 Python 在 20 世紀 90 年代逐漸流行起來,當時還在 CWI 工作的 van Rossum 發現他創造的這門編程語言越來越多地把他與來自世界各地的人聯系在一起。
Python 與 Web
20 世紀 90 年代中期,Python 出現了新的應用場景,從音頻錄制和播放到首次涉足 Web 開發,而 Web 開發后來成為 Python 的主要應用場景。
van Rossum 說,“Web 開發很重要,它對我來說也是一件非常有趣的事情”。Python 開始與 Perl 和 Shell 腳本一起被用于 Web 服務器后端開發?!澳憧梢詣摻▌討B網頁,這也是我最喜歡的 Python 應用場景之一”。
Gartner 公司的 Ryan 說,上世紀 90 年代,Python 之所以能夠在開發人員當中流行起來,主要是因為它可以用來快速地創建強大的腳本?!白鳛橐婚T功能非常強大的腳本語言,它降低了很多用戶的使用門檻”。Ryan 還說,這門語言非常靈活,容易上手,因此吸引了很多具備不同程度技術專長的用戶。
1994 年,Python 引起了 Michael McLay 的注意。McLay 當時在美國國家標準局(NBS)擔任高級職位,現在在美國國家標準與技術研究所(NIST)。McLay 當時在想如何也讓國家統計局的科學家們從 Python 的易用性中得到一些好處。在 van Rossum 看來,國家統計局的科學家們“需要處理大量數據,但他們都不擅長編程”。
為了在 NBS 中推廣 Python,McLay 邀請當時還在荷蘭 CWI 工作的 van Rossum,讓他到 NIST 做了兩個月的客座研究員。這一舉動成了 Python 未來發展的催化劑,也是 van Rossum 人生的一次重要轉變。
an Rossum 和 Warsaw、Roger Masse 在第一次 Python 研討會上
正是在這個時候,他們在國家統計局的辦公室里舉行了第一個 Python 研討會。van Rossum、Barry Warsaw 和其他早期的 Python 愛好者聚在一起,分享他們正在用 Python 做什么,以及對 Python 未來發展的期望。
也就是在這間辦公室里,van Rossum 認識了 Bob Kahn。Kahn 是 TCP/IP 協議的作者。
那次會面給 van Rossum 帶來了一份工作邀請——與 Kahn 一起在美國國家研究創新聯合會 (CNRI) 工作。CNRI 是一個位于弗吉尼亞州的非盈利研究組織,專注于網絡技術的戰略發展和研究。
自 1991 年 Python 公開發行以來,Python 用戶群有了顯著的增長。到了 90 年代后期,Python 吸引了大量來自全球各地的用戶。在此期間,隨著 Python 軟件基金會(PSF,于 2001 年正式成立)前身的組建,Python 語言的管理工作開始走向規范化。隨著社區的發展,兩年一度的 Python 研討會逐漸演變成更大型的年度活動,并最終演變成 PSF 的年度 PyCon,直到今天仍然很受歡迎。
到了 21 世紀,Python 用戶群越來越壯大,早期的 Python 用戶擔心如果 van Rossum 發生意外會對 Python 造成什么樣的影響。
不管怎樣,van Rossum 繼續扮演著 Python 的核心角色。他就是 Python 的核心,這種想法從未消失,有人稱他是 Python“仁慈的終身獨裁者”(BDFL)。這個半開玩笑式的頭銜流傳了多年。
van Rossum 說:“在很長一段時間內,我承受住了壓力,還培養出了項目管理技能。我將很多事情委派給別人,讓他們按照自己的想法做事”。
實際上,van Rossum 確立的 Python 開放本質(在社區核心開發者之間公開討論)是 Python 成功的決定性因素。
Python 的演變
在這期間,Python 有了飛躍式的發展。2008 年,Python 3.0 發布,讓 Python 成為一門現代化的編程語言。近來,Python 的管理方式也發生了重大變化。
這些變化是去年發生的,當時 van Rossum 卸掉了 BDFL 的頭銜,原因是人們對 PEP572 中引入的賦值表達式存在分歧。
雖然賦值表達式的引入是為了更高效地編寫代碼,但 van Rossum 在網上遭到了反對者的嚴厲批評,一些人認為這一提案會降低代碼的可讀性和可維護性。
van Rossum 說,雖然他已經習慣了圍繞新功能而展開的爭論,但這次有人詆毀他,他們的態度十分強硬,甚至有人對他進行人身攻擊,所以他決定辭職。
他說:“那些在技術上持不同意見的人在社交媒體上開始抱怨我破壞了 Python 的決策流程,或者說我犯了一個嚴重的錯誤。我感到非常失望,我感覺受到了來自背后的攻擊”。
“過去,在決定是否要對 Python 做出變更或改進時,一群核心開發人員會討論這件事的利弊。他們會得出一個明確的共識,如果結果不明確,我會在腦子里反復考慮,然后做出決定。在 PEP572 這個提案上,盡管它存在爭議,但我還是選擇了“是的,我想做這個”,但人們并不買賬。
“這并不是一種反叛,但我覺得我沒有得到核心開發者社區足夠多的信任”。
他認為,Python 的爭議方式之所以發生變化,部分原因在于現在有太多的人使用 Python。
“Python 社區的規模越來越大,這可能也是原因之一。當然,要達成任何形式的共識都很困難,因為不管你做出什么樣的決定,總會有一些持不同意見的人”。
Python 核心開發者 Mariatta Wijaya
今年早些時候,負責維護 CPython 解釋器的核心開發人員成立了一個指導委員會,用來監督 Python 未來的發展。成員包括 van Rossum、Warsaw 以及其他核心開發者 Brett Cannon、Carol Willing 和 Nick Coghlan。
Warsaw 說,當一門編程語言的用戶群以如此快的速度增長,使用這種方式來管理語言的發展是很有必要的。
他說,“我認為 van Rossum 真的把所有事情都扛在自己的肩上了”。
“25 年前,當 Python 還只是一門小眾編程語言的時候,社區規模也小得多,van Rossum 可能還能自己扛,但即使是這樣,他一個人的工作量也很大。我認為,考慮到他個人的健康以及社區的參與度問題,將這些重擔分攤到五個人身上會更好”。
Warsaw 說,在每發布一個 Python 新特性版本后都會進行一次指導委員會選舉,為建立下一代 Python 語言核心領導層做好準備。
他說:“如果 Python 在 25 年后還能保持常青,那時候應該不是 van Rossum 和我在管事了”。
指導委員會的成立也受到了 Python 核心開發者社區的歡迎。核心開發人員 Mariatta Wijaya 說,這一舉動感覺像是朝著正確的方向邁出了一步。她說:“對我來說,指導委員會比讓一個人決定所有事情要好得多——這是一個巨大的責任和負擔。這是一個好跡象,它意味著社區將會有更多的輸入”。
Python 的未來
雖然 Python 繼續以驚人的速度吸引新用戶,但社區內的一些人也看到了未來要面臨的挑戰。如果 Python 想要保持常青,就要不斷進化。
在今年的 Python 語言峰會上,BeeWare 聯合創始人 Russell Keith-Magee 說,如果對移動和 Web 平臺的支持得不到改善,Python 將面臨“生存危機”。
他說:“手機和平板電腦對市場的滲透程度是臺式機和筆記本電腦從未達到過的,但整個社區都沒有一個關于如何在這些設備上使用 Python 的案例。那么,當有一天筆記本電腦逐漸成為小眾設備時,Python 又將面臨怎樣的窘境?”
他指出了 Python 的一些問題,比如,Python 還不支持在非 x86 硬件平臺上編譯代碼,Python 的測試套件很容易在移動和 Web 平臺上崩潰,Python 應用程序的體積太大,在 Android、Windows 和 Web 平臺上開發 GUI 代碼時需要使用 asyncio 庫,而這需要做額外的工作,標準庫中的很多模塊與 CPython 之外的解釋器不兼容。
Warsaw 說,Keith-Magee 提出了很多很好的觀點,并認為 Python 需要與新的平臺——手機、平板電腦以及 Web 技術(如 WebAssembly)保持接軌,這點很重要。
Warsaw 說,“目前 Python 在這方面并沒有出彩的表現”,他希望 iPhone 或 Android 手機也能下載到使用 Python 開發的應用程序,而用戶甚至都不知道“原來它們是用 Python 開發的”。
現代處理器芯片的核心數量在不斷增長(英特爾最新的服務器處理器核數已經達到了 48 個),Warsaw 也希望 Python 能夠更好地讓任務運行在多個處理器核心上。
Warsaw 說:“這些功能不會出現在 Python 3.8 中,但或許會在 3.9 中加入。我覺得我們將在未來兩到兩年半的時間內看到這些功能。我真的很高興 Eric 能夠繼續做下去,這是一項非常重要的工作”。
Python 社區正在對標準庫進行現代化。最近發布了一項提案,建議將過時的模塊從標準庫中移除。Python 的標準庫通常被認為是 Python 的優勢所在,因為它被用來處理很多常見任務,這也就是為什么人們都說 Python 有“內置電池”。但在今年的 Python 語言峰會上,有人提出了這樣的一個問題:如果人們能夠從 PyPI 自行選擇模塊,而不是使用內置的標準庫,這樣是否會更好?
還有一個問題是,Python 指導委員會的成員組成能否更好地反映 2019 年 Python 用戶群的多樣性?
Warsaw 說,盡管有一個“仁慈的獨裁者”在掌管一切,但近年來,有很多有關 Python 發展的理念來自于社區。
他說:“這些想法真的是從社區中冒出來的,而不是自上而下推行的?!?/span>
簡單的社區項目也能對 Python 產生巨大影響。比如,類型提示功能,Python 3.5 的一個特性,靈感來自于 2012 年一位博士生發起的 mypy 項目。類型提示可以執行可選類型檢查,幫助開發人員發現某一類 bug,避免讓這些 bug 滲透到程序中。
當有一群人同時開發一個大型的代碼庫時,這個額外的安全層就會非常有用。
Warsaw 說,“在我看來,這樣可以讓 Python 滲透到更大的組織中(比如 Instagram 基本上都在使用 Python 3)”。
此外,asyncio 是另一個社區在驅動 Python 發展的例子。
隨著指導委員會的成立和空前的用戶群增長,van Rossum 樂觀地認為:“由社區驅動的 Python 進化”將繼續取得“無與倫比的成功”。
他說,”一個擁有堅實的核心開發者的社區,現在有了一個新的管理制度,我想我們為 Python 語言的進化做好了更充分的準備”。
Warsaw 說,如果有人懷疑 Python 社區是否有能力繼續為 Python 找到新的應用場景,那就讓他們看看使用 Python 捕捉的第一張黑洞圖片。
“Python 社區中總有那么一些人,我把他們看成是瘋狂的 Python 科學家。他們總是在想,今天能把它做成這樣,那么明天能不能走得更遠?”
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25