Python之父宣佈退休,但Python仍在吞噬世界!

他發推文說,“這件事感覺既苦澀又甜蜜:苦澀的是,我馬上要離開 Dropbox,現在已經退休;甜蜜的是,在 Dropbox 做工程師期間,我學到很多,比如類型標註就來自這段經歷。我會非常懷念在這裡工作的日子。”

Python之父宣佈退休,但Python仍在吞噬世界!

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 部門開發分佈式系統。由於對已有的編程語言感到十分失望,他決定開發一門新的語言——一門既易於使用功能又強大的語言。

Python之父宣佈退休,但Python仍在吞噬世界!

Python 之父 Guido van Rossum

對於當時的 van Rossum 來說,使用僅有的幾種編程語言完成任何一件事情都顯得很困難。他正在開發的 Amoeba 分佈式計算系統要求他使用 C 語言或 Unix shell,但這兩種語言都有很大的侷限性。C 語言要求開發人員自己手動管理內存,容易埋下潛在的 bug,而且還缺少可重用的代碼庫。開發人員想要完成日常任務,需要在每個新項目中重新發明輪子。Unix shell 存在另外一個問題——它雖然為日常任務提供了一些實用程序,但它們的運行速度太慢,無法處理複雜的邏輯。

這些語言對開發人員造成的限制如此之大,以至於在 van Rossum 看來,他自己創建的這門解釋型語言——從 ABC 語言借用了一些特性——似乎是最好的選擇。

van Rossum 回憶道:“我當時在想,為什麼不自己開發一門語言呢?我完全可以借鑑 ABC 的一些想法,並將項目的規模縮小一些,把原先需要花三年時間完成的東西縮短至三個月內,讓它變成我自己的個人項目。於是,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之父宣佈退休,但Python仍在吞噬世界!

1994 年,Barry Warsaw 在第一次 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之父宣佈退休,但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 服務器後端開發。“你可以創建動態網頁,這也是我最喜歡的 Python 應用場景之一”。

Gartner 公司的 Ryan 說,上世紀 90 年代,Python 之所以能夠在開發人員當中流行起來,主要是因為它可以用來快速地創建強大的腳本。“作為一門功能非常強大的腳本語言,它降低了很多用戶的使用門檻”。Ryan 還說,這門語言非常靈活,容易上手,因此吸引了很多具備不同程度技術專長的用戶。

1994 年,Python 引起了 Michael McLay 的注意。McLay 當時在美國國家標準局(NBS)擔任高級職位,現在在美國國家標準與技術研究所(NIST)。McLay 當時在想如何也讓國家統計局的科學家們從 Python 的易用性中得到一些好處。在 van Rossum 看來,國家統計局的科學家們“需要處理大量數據,但他們都不擅長編程”。

為了在 NBS 中推廣 Python,McLay 邀請當時還在荷蘭 CWI 工作的 van Rossum,讓他到 NIST 做了兩個月的客座研究員。這一舉動成了 Python 未來發展的催化劑,也是 van Rossum 人生的一次重要轉變。

Python之父宣佈退休,但Python仍在吞噬世界!

van 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之父宣佈退休,但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 發展的理念來自於社區。

他說:“這些想法真的是從社區中冒出來的,而不是自上而下推行的。”

簡單的社區項目也能對 Python 產生巨大影響。比如,類型提示功能,Python 3.5 的一個特性,靈感來自於 2012 年一位博士生髮起的 mypy 項目。類型提示可以執行可選類型檢查,幫助開發人員發現某一類 bug,避免讓這些 bug 滲透到程序中。

mypy 項目鏈接:http://mypy-lang.org/

當有一群人同時開發一個大型的代碼庫時,這個額外的安全層就會非常有用。

Warsaw 說,“在我看來,這樣可以讓 Python 滲透到更大的組織中(比如 Instagram 基本上都在使用 Python 3)”。

此外,asyncio 是另一個社區在驅動 Python 發展的例子。

asyncio 鏈接:https://docs.python.org/3/library/asyncio.html

隨著指導委員會的成立和空前的用戶群增長,van Rossum 樂觀地認為:“由社區驅動的 Python 進化”將繼續取得“無與倫比的成功”。

他說,”一個擁有堅實的核心開發者的社區,現在有了一個新的管理制度,我想我們為 Python 語言的進化做好了更充分的準備”。

Warsaw 說,如果有人懷疑 Python 社區是否有能力繼續為 Python 找到新的應用場景,那就讓他們看看使用 Python 捕捉的第一張黑洞圖片。

Python之父宣佈退休,但Python仍在吞噬世界!

“Python 社區中總有那麼一些人,我把他們看成是瘋狂的 Python 科學家。他們總是在想,今天能把它做成這樣,那麼明天能不能走得更遠?”

需要免費資料的可以私信小編“學習”就可以免費領取了!


分享到:


相關文章: