1. 程式人生 > >後起之秀的煉成——Python誕生與崛起之路

後起之秀的煉成——Python誕生與崛起之路

今天,我們來聊一聊python的誕生與發展歷程。
為什麼我會選擇介紹python的歷史呢?讓我們來看張圖:

這裡寫圖片描述
該圖為2017年世界程式語言使用率
可以看到,python位列第五,僅次於java和C一類的語言。
如果這不夠具有說服力,讓我們再來看兩張圖片:

這裡寫圖片描述

這裡寫圖片描述
圖一為2017年資料工作者所使用語言的情況,圖二為IEEE釋出2017年程式語言排行榜,可以看到,兩張圖中python均高居榜首。

那麼,是什麼使python在短短二十幾年間成為一個如此受人熱捧的語言?縱觀它的發展歷史與歷程,或許答案就會變得明晰。

Python,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
這裡寫圖片描述


此為Guido van Rossum(圖片來源百度百科)

作為python的作者,是什麼促使他設計了這個語言呢?
在80年代,個人電腦的配置較之如今是極低的,程式設計師不得不努力思考如何最大化利用空間,以寫出符合機器口味的程式。而正是因為這一點,讓guido感到苦惱。他認為這樣編寫程式實在是太過於耗費時間,於是他想到了shell。shell可以像膠水一樣,將UNIX下的許多功能連線在一起。許多C語言下上百行的程式,在shell下只用幾行就可以完成。然而,shell的本質是呼叫命令,它並不是一個真正的語言,shell不能全面的調動計算機的功能。
於是,guido開始思考,是否能設計一款語言,使它同時具備C與shell的優點,既能夠全面呼叫計算機的功能介面,又可以輕鬆編寫程式。
後來他進入CWI(Centrum Wiskunde & Informatica, 數學和計算機研究所)工作,並參加了ABC語言的開發。ABC語言旨在讓語言變得容易閱讀,容易使用,容易記憶,容易學習。但由於它的可拓展性差,不能直接IO,過度革新與傳播困難,導致它不為大多數程式設計師所接受(因為語法上的過度革新,加大了程式設計師的學習難度)與傳播。
除去這些缺點,我們不難看出,ABC就guido心中所期望的那款語言的雛形。

1989年聖誕節期間,在阿姆斯特丹,Guido為了打發聖誕節的無趣,決心開發一個新的指令碼解釋程式,做為ABC 語言的一種繼承。而取名python,是取自他摯愛的一部電視劇Monty Python’s Flying Circus 。

1991年,第一個Python編譯器誕生,它是用C語言實現的,並能夠呼叫C庫(.so檔案)。從一出生,Python已經具有了:類(class),函式(function),異常處理(exception),包括表(list)和詞典(dictionary)在內的核心資料型別,以及模組(module)為基礎的拓展系統。
guido為防止重蹈ABC的覆轍,著重注意python的可擴充套件性,並且也沿用了C中的大部分語法習慣,而這,使python得到guido同事的歡迎。他們迅速的反饋使用意見,並參與到Python的改進。
python誕生在一個幸運的時間。1990年代初,個人計算機開始進入普通家庭。Intel釋出了486處理器,windows釋出window 3.0開始的一系列視窗系統,計算機的效能大大提高。並且由於Internet隨個人電腦的普及而為人們所廣知,許多程式設計師以及資深計算機使用者頻繁使用Internet進行交流,這使得python沒有了硬體上的束縛與傳播上的困難,再加上python易於使用的特點,使python得到了一定程度上的傳播。

Guido維護了一個maillist,python使用者通過郵件進行交流。因為python使用者來自許多領域,有不同的背景,對python也有不同的需求。python相當的開放,又容易拓展,所以當用戶不滿足於現有功能,很容易對python進行拓展或改造。隨後,這些使用者將改動發給Guido,並由Guido決定是否將新的特徵加入到python或者標準庫中。這就使得不同領域的優點集中於python。
後來的python2.0,從maillist的開發方式,轉為完全開源的開發方式,(開源:由於Internet讓資訊交流成本大大下降,所出現的一種新的軟體開發模式)python的資料庫的擴充套件速度與傳播速度也由此更進一步。
到今天,Python的框架已經確立。Python語言以物件為核心組織程式碼(Everything is object),支援多種程式設計正規化(multi-paradigm),採用動態型別(dynamic typing),自動進行記憶體回收(garbage collection)。Python支援解釋執行(interpret),並能呼叫C庫進行拓展。Python有強大的標準庫 (battery included)。由於標準庫的體系已經穩定,所以Python的生態系統開始拓展到第三方包。這些包,如Django, web.py, wxpython, numpy, matplotlib,PIL,將Python升級成了物種豐富的熱帶雨林,這也是python相較於C,java一類語言的優勢。例如一道高數中求解極限的題:
這裡寫圖片描述

我們用C語言來編譯求解:
這裡寫圖片描述

然後使用python:
這裡寫圖片描述
這樣一對比,就可以清晰地看出python的優勢了。

縱觀python發展的歷史,我們不難看出,python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量使用者所歡迎的、用途廣泛的語言。python所崇尚的優雅、明確、簡單,為它帶來了今天的熱度。雖然這不是主要的原因,但我們不難從python的故事中看出,語言終究是服務於人的,而不是機器,當語言變得簡單明瞭方便且易於使用的時候,它的推廣就已成定數。正如延續下來的是python,而不是淹沒在歷史中的ABC。