Python之路點燃編程圈:源于不爽C語言,單槍匹馬如今吞噬世界

本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
Python is eating the world.
這篇關于Python長文火了。
從Python的創建過程,到Python成為一個無所不在的語言,究竟經歷了一個怎樣的過程?
美國科技媒體ZDNet記者Nick Heath,詳細呈現了Python作為一款風靡全球的編程語言的發展歷程及其背后的故事。
真正體現了一個追求極致的程序員,單槍匹馬變革世界的理想主義精神。
不到一天時間,這篇文章就在Hacker News上獲得了800多熱度以及800多評論。

從評論區中,也能看出人們對Python這一編程語言的態度,可以說是又愛又恨。
愛在于,其適用性極強,能夠簡單、快速地幫助自己完成任務。現在,無論是Web開發,操作系統、運維、數據開發、機器學習等等,都離不開Python。
恨在于,功能還有不完善之處,主要還是希望Python十全十美,真正成為最好的語言。
總之,從來沒有一款編程語言,能像Python這樣,引起程序員心底的愛恨糾纏。
但這一切歸根溯源,還要從20世紀80年代末說起。
Python那些年
自創編程語言的念頭,來源于Guido van Rossum對主流編程語言的不爽。當時,Guido正在CWI(荷蘭數學與計算機研究所)研究Amoeba分布式計算系統,使用C和Unix shell。
C不僅要求開發人員努力對付手動管理內存的復雜性,時時注意潛在錯誤的雷區,還缺少用于日常開發任務的可重用代碼庫,開發人員不得不重復造輪子。
而Unix shell的問題在于,它的本質是調用命令,而不是真正的語言,運行速度太慢,無法處理復雜的邏輯。
1989年圣誕節期間,不想再忍受當時編程語言的不足,也為了打發假期時光,Guido下決心開展一個業余項目——開發一個新的腳本解釋程序。
創建自己的編程語言就像是從零開始造火箭,好在早先Guido就參加設計了一種教學語言——ABC。
Guido認為ABC優美而強大,是專門為非專業程序員設計的。但ABC并沒有成功,Guido將其沒有成功的原因歸結為互聯網時代前的非開放。
在ABC誕生的年代,Guido和他的CWI同事們想要推廣這一種新的解釋型編程語言,得挨家挨戶地分發磁帶。
幸運的是,到80年代90年代之交,互聯網已經蓬勃地發展了起來。Python有機會避開這個坑了。
我想,“好吧,為什么我不創造自己的語言”,從ABC“竊取”idea,就可以把項目規模從三年壓縮到我自己一個人就可以完成的量,變成一個三個月的skunk works(臭鼬工程)。
就這樣,Python誕生了。
Python這個英文單詞的意思是蟒蛇,但編程語言Python名字的由來,并不是Guido對這種生物有什么特殊的偏愛。

之所以給自己的編程語言取名為Python,是因為Guido是BBC電視劇蒙提·派森的飛行馬戲團(Monty Python’s Flying Circus) 的忠實愛好者。
Python從ABC發展而來,并結合了Modula-2,Unix shell和C語言的習慣。
1991年,Guido發布了第一版Python,從那時起,Python就奠定了開放的基調。
Guido認為,與新興Python社區的互動,讓他意識到自己創造了一些可以成功的東西。
Python殺出重圍
不僅僅是Python,Perl、Tcl等編程語言也同樣誕生于80年代后期,但是卻只有Python締造了時代神話。

Python為什么能殺出重圍?
Guido認為,首先,Python天生能吸引開發人員,因為它就是為此而生的。在創造Python的過程中,Guido特意關注了語言易用性和能力之間的平衡,這種平衡正是開發者所期待的。
同時,Python十分易于閱讀。它強調可讀性和簡潔的語法,倡導用更少的代碼來表達清晰的想法,它讓編程語言與開發人員的“思想交流”變得更加容易。
并且,從早期的版本開始,Python就提供了一系列內置功能,被稱為“Battery Included(內置電池)”,擁有極其強大的標準庫,這一下子就讓它從眾多編程語言中脫穎而出。
而這也正得益于Python開放易拓展的屬性,整個社區的共同努力讓Python越來越強大。
還有一點也非常重要,那就是Python的源代碼是很容易維護的。
像Perl讓人詬病的一點,就是它過于靈活,源代碼常常難以閱讀,甚至被稱作write-only語言。當代碼量達到成百上千行的規模,想在Perl中進行維護,就需要大量的紀律約束。
而在Python中就沒有這個煩惱,顯得尤為優美。
說起來,Python畢竟是把編程哲學嵌進靈魂的語言啊。

△Python之禪
管理的正式化
突出重圍之后,Python的用戶越來越多,社區用戶顯著增長。
隨之而來的則是語言管理問題。
當時只有Guido一個人在管理Python,使用這一語言的開發者們一直擔心,哪天他被車撞了怎么辦,Python是不是就就完了?
這不是開玩笑,1994年的時候,真有人在社區發帖提出了這個問題。

之后,Python語言管理開始正式化:Python軟件基金會(PSF)的前身建立;更多的人加入了管理團隊,Python開發者放心了。
在1995年4月加入“美國國家研究推進機構”(CNRI)之后,Guido領導了一個小型開發團隊,開發Knowbot程序,一個廣泛分布式系統(如Internet)的移動代理。
當時業界知名的開發者如Jeremy Hylton、Roger Masse、Barry Warsaw、Ken Manheimer和Fred Drake等加入其中,這些人后來在Python社區中發揮了重要作用。
這一團隊創建了python.org網站,包括管理核心代碼庫更改的CVS服務器,以及用于改進和維護Python語言的Python特殊興趣組的郵件列表。
1994年開始的兩年一度的Python研討會,也逐漸演變成更大的年度活動,最終成為PSF的年度PyCon,如今仍然非常活躍。

在過去的幾十年里,Guido一直在Python的改革過程中扮演著核心角色,被大家叫做“仁慈的獨裁者”。
但是現在Python的管理方式已經發生了重大改變。去年,Guido辭去了領導職務,因為公眾對分配表達式引入該語言有了分歧。
雖然Python管理者的目的是編寫更有效的代碼,但Guido在網上遭到了那些反對變革的人的嚴厲批評,有些人認為他們這樣做會使代碼的可讀性降低,難以維護。
這件事讓Guido認為,像改進Python功能這種事很難達成共識。他會選擇某種做法,而不去管別人同意不同意。
之后,每次新的Python功能發布后,指導委員會都會進行新的選舉。更多的Python核心開發人員社區也歡迎設立指導委員會。
一位核心開發人員認為此舉意味著Python朝著正確的方向邁出了一步。她說:“讓委員會做決定比一個人做決定更好。”
隨著管理團隊不斷完善,Python的發展有了穩固的大本營。
隨之而來的便是——
吞噬世界的“巨蟒”
2003年以來,Python一直在TIOBE排行榜重最受歡迎的編程語言的前十位。
截至2018年12月,它是第三種受歡迎的語言,僅次于Java和C。
Python在2007年、2010年和2018年分別3次獲得了TIOBE年度最佳編程語言獎。該獎項是根據TIOBE指數,授予全年受歡迎程度最高的編程語言。

不僅是受個人開發者歡迎,Python也受到大公司青睞:包括Google、Facebook、亞馬遜在內的諸多知名公司都在使用它,包括Instagram、YouTube在內的大型應用,都是出自Python。
科研機構NASA還用Python來簡化航天飛機的任務流程設計,去探索太空。
Python的強大也離不開各種第三方軟件庫的支持,像NumPy、SciPy和Matplotlib這樣的庫允許用戶在Python中進行科學計算。
Python本身并不是為數值計算而設計的,但是因為有了這些軟件庫加入,Python可以替代Matlab甚至做得更好,而且這些軟件是完全開源免費的。
在科研領域,越來越多的人用Python來處理數據,最近發布的黑洞照片就是用Python編寫的算法進行拼接合成的。
Python不僅趕上了90年代末期互聯網崛起的第一波發展浪潮,近年來也是機器學習這一熱門領域的寵兒。
谷歌的TensorFlow使用的就是Python。Facebook更直接,從PyTorch的名字來看就知道它和Python密不可分的聯系。

此外還有Keras、Scikit-learn等機器學習框架也都是用Python。
這些框架的支持下,甚至只用6行代碼,就能夠寫出一個機器學習程序。
目前主流的幾種操作系統,比如Linux、macOS、FreeBSD等都在系統中包含了Python組件。
連一向封閉的微軟態度也逐漸軟化,今年他們在軟件商店中加入了Python安裝程序,并且給用戶提供從命令行安裝的快捷入口。
雖然Python越來越受歡迎,但也有不少隱憂。
Pythonの挑戰
現在,Python已經成為開發者群體中最熱門的語言,甚至出圈成為業余愛好者學習的首要編程語言。
但它吞噬世界,仍舊是正在進行時,它的覆蓋空白區、其未能吞噬之處——移動計算領域——重要性越來越強。
2016年,Guido在接受媒體采訪時,也承認了這一點。在他看來,移動仍是Python很難啃下來的平臺。
但他也給出了解決方案:找到懂得構建移動版本Python的人就行了。
因為標準的CPython源代碼,幾乎可以編譯成能在安卓和iOS系統中運行的二進制文件。
而且Python社區中,已經有很多人在朝這方面努力。但3年后,依舊不容樂觀。

今年的Python語言峰會上,BeeWare聯合創始人Russell Keith-Magee再次提出了警告,如果對移動和新Web平臺的支持沒有改善,那么Python將面臨“存在風險”。
他設想了這樣的一個場景:當iPad成為主流,筆記本電腦不過是細分設備時,Python會發生什么?
吞噬遠未成功,大家仍需努力。
而且,時變境遷,起于20世紀80年代的Python,在新的運行環境中,逐漸變得力有不逮。
為了修復缺陷,更好地適應新環境,讓Python更有生命力,Python社區做了一個非常有決斷的動作:
推出Python 3,不向后兼容。
這背后長痛不如短痛的想法,輕裝前行的理念等等, 大部分開發者都理解。
但版本割裂帶來的陣痛,還是成為了Python被詬病的一大重點。

2008年Python 3問世之時,給Python 2.7定下的Deadline是2015年。
因為擔心大量現有代碼無法遷移到Python 3,這一時間又推遲到了2020年。
這12年中,Python也發布了程序,幫助開發者更好地將Python 2代碼轉換為Python 3。
但這也讓不少人糾結與徘徊。
現在,Python 2大限將至,躍遷將要完成,可局勢也變了。
遭遇強敵
在這期間,有不少新的編程語言出現,分食Python的領地。
比如谷歌2009年正式推出的Go,更是“明目張膽”地搶人——開發一款從Python 2.7到Go語言的編譯器。
而且,這一語言因為其開發速度、更加便捷、部署簡單、更好并行等方面的特性,贏得越來越多開發者青睞,在2016年被評為“TIOBE最佳語言”。
2019年,程序員社交平臺HackerRank發起的一項調查結果顯示,Go是程序員最想學習的編程語言,而Python只排第三。

不少公司,也開始用腳投票。比如知乎,就舍棄了Python而用Go重構推薦系統。
還有Julia。這一源自MIT的新編程語言,創建于Python 3發布第二年,2012年公開發布。
截止2018年底,已經有300多萬下載量。
過去一年的時間中,Julia在GitHub上的標星在過去一年增長了一倍。也被Jeff Dean批注為“Julia +TPUs =快速且易于表達的機器學習計算”。

來勢洶洶,可見一斑。
根據Julia最新發布的官方報告,其主要的應用領域為數據分析、機器學習、物理學、數學、人工智能、信號與圖像處理等等。
而這些,當下都是Python發揮作用、面向未來的核心陣地。
不過,Python也沒有停下來發展的腳步,也在不斷推陳出新,面向未來編程。
比如PyPy的不斷優化,SciPy和NumPy的不斷完善等等,都在放大Python的能量。

這個起于20世紀80年代一個業余項目的語言,到現在仍舊具備超強生命力,兼容并包,成為開發者手中的利器,不斷吞噬世界。
越來越多人開始認為:Python才是世界上最好的編程語言。
你同意嗎?
ZDNet記者Nick Heath的英文原作很長,但披露了相當多的Python發展細節,我們僅引述了其中關鍵節點,建議大家前去拜讀完整原文^_^
參考鏈接:
https://www.zdnet.com/article/python-is-eating-the-world-how-one-developers-side-project-became-the-hottest-programming-language-on-the-planet/