Python是我喜歡的語言,簡潔、優(yōu)美、易用。前兩天,我很激昂地向朋友宣傳Python的好處。
“好吧,我承認Python不錯,但它為什么叫Python呢?”
“呃,似乎是一個電視劇的名字。”
“那你說的Guido是美國人么?”
“他從Google換到Dropbox工作,但他的名字像是荷蘭人的。”
“你確定你很熟悉Python嗎?”
所以為了雪恥,我花時間調(diào)查了Python的歷史。我看到了Python中許多功能的來源和Python的設(shè)計理念,看到了一門編程語言的演化歷史,看到了Python與開源運動的奇妙聯(lián)系。從Python的歷史中,我們可以一窺開源開發(fā)的理念和成就。
這也可以作為我寫的Python快速教程的序篇。
起源
Python的作者,Guido von Rossum,確實是荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計算機碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計算機帶來的樂趣。用他的話說,盡管擁有數(shù)學(xué)和計算機雙料資質(zhì),他總趨向于做計算機相關(guān)的工作,并熱衷于做任何和編程相關(guān)的活兒。
在那個時候,Guido接觸并使用過諸如Pascal、C、 Fortran等語言。這些語言的基本設(shè)計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經(jīng)掀起了個人電腦浪潮,但這些個人電腦的配置很低。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的數(shù)組就能占滿內(nèi)存。所有的編譯器的核心是做優(yōu)化,以便讓程序能夠運行。為了增進效率,語言也迫使程序員像計算機一樣思考,以便能寫出更符合機器口味的程序。在那個時代,程序員恨不得用手榨取計算機每一寸的能力。有人甚至認為C語言的指針是在浪費內(nèi)存。至于動態(tài)類型,內(nèi)存自動管理,面向?qū)ο蟆?別想了,那會讓你的電腦陷入癱瘓。
這種編程方式讓Guido感到苦惱。Guido知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間,即使他已經(jīng)準(zhǔn)確的知道了如何實現(xiàn)。他的另一個選擇是shell。Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)長期存在。UNIX的管理員們常常用shell去寫一些簡單的腳本,以進行一些系統(tǒng)維護的工作,比如定期備份、文件系統(tǒng)管理等等。shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質(zhì)是調(diào)用命令。它并不是一個真正的語言。比如說,shell沒有數(shù)值型的數(shù)據(jù)類型,加法運算都很復(fù)雜。總之,shell不能全面的調(diào)動計算機的功能。
Guido希望有一種語言,這種語言能夠像C語言那樣,能夠全面調(diào)用計算機的功能接口,又可以像shell那樣,可以輕松的編程。ABC語言讓Guido看到希望。ABC是由荷蘭的數(shù)學(xué)和計算機研究所開發(fā)的。Guido在該研究所工作,并參與到ABC語言的開發(fā)。ABC語言以教學(xué)為目的。與當(dāng)時的大部分語言不同,ABC語言的目標(biāo)是“讓用戶感覺更好”。ABC語言希望讓語言變得容易閱讀,容易使用,容易記憶,容易學(xué)習(xí),并以此來激發(fā)人們學(xué)習(xí)編程的興趣。比如下面是一段來自Wikipedia的ABC程序,這個程序用于統(tǒng)計文本中出現(xiàn)的詞的總數(shù):
新聞熱點
疑難解答
圖片精選