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

 2019-08-18 12:48:38.0

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發展細節,我們僅引述了其中關鍵節點,建議大家前去拜讀完整原文^_^

參考鏈接:zdnet.com/article/pytho

— 完 —


文章來源:量子位