成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python簡(jiǎn)史

開(kāi)發(fā) 后端
Python的作者,Guido von Rossum,確實(shí)是荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)(University of Amsterdam)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計(jì)算機(jī)帶來(lái)的樂(lè)趣。

Python是我喜歡的語(yǔ)言,簡(jiǎn)潔,優(yōu)美,容易使用。前兩天,我很激昂向朋友宣傳Python的好處。

聽(tīng)過(guò)之后,朋友問(wèn)我:好吧,我承認(rèn)Python不錯(cuò),但它為什么叫Python呢?

我不是很確定:呃,似乎是一個(gè)電視劇的名字。

朋友又問(wèn):那你說(shuō)的Guido是美國(guó)人么? (Guido von Rossum,Python的作者)

我再次不是很確定:他從google換到Dropbox工作,但他的名字像是荷蘭人的 (有一個(gè)von在中間)。

所以,后面我花了些時(shí)間調(diào)查Python的歷 史。這是很好的學(xué)習(xí)。我看到了Python中許多功能的來(lái)源和Python的設(shè)計(jì)理念,比如哪些功能是歷史遺留,哪些功能是重復(fù),如何增加功能…… 而且,Python也是開(kāi)源(open source)運(yùn)動(dòng)的一個(gè)成功案例。從Python的歷史中,我們可以一窺開(kāi)源開(kāi)發(fā)的理念和成就。

這也可以作為我寫的Python快速教程的序篇。

Python的起源

Python的作者,Guido von Rossum,確實(shí)是荷蘭人。1982年,Guido從阿姆斯特丹大學(xué)(University of Amsterdam)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計(jì)算機(jī)帶來(lái)的樂(lè)趣。用他的話說(shuō),盡管擁有數(shù)學(xué)和計(jì)算機(jī)雙 料資質(zhì),他總趨向于做計(jì)算機(jī)相關(guān)的工作,并熱衷于做任何和編程相關(guān)的活兒。

[[63895]]

Guido von Rossum

在那個(gè)時(shí)候,他接觸并使用過(guò)諸如Pascal、C、 Fortran等語(yǔ)言。這些語(yǔ)言的基本設(shè)計(jì)原則是讓機(jī)器能更快運(yùn)行。在80年代,雖然IBM和蘋果已經(jīng)掀起了個(gè)人電腦浪潮,但這些個(gè)人電腦的配置很低 (在今天看來(lái))。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個(gè)大的數(shù)組就能占滿內(nèi)存。所有的編譯器的核心是做優(yōu) 化,以便讓程序能夠運(yùn)行。為了增進(jìn)效率,語(yǔ)言也迫使程序員像計(jì)算機(jī)一樣思考,以便能寫出更符合機(jī)器口味的程序。在那個(gè)時(shí)代,程序員恨不得用手榨取計(jì)算機(jī)每 一寸的能力。有人甚至認(rèn)為C語(yǔ)言的指針是在浪費(fèi)內(nèi)存。至于動(dòng)態(tài)類型,內(nèi)存自動(dòng)管理,面向?qū)ο?hellip;… 別想了,那會(huì)讓你的電腦陷入癱瘓。

然而,這種思考方式讓Guido感到苦惱。Guido知道如何用C語(yǔ)言寫出一個(gè)功能,但整個(gè)編寫過(guò)程需要耗費(fèi)大量的時(shí)間 (即使他已經(jīng)準(zhǔn)確的知道了如何實(shí)現(xiàn))。他的另一個(gè)選擇是shell。Bourne Shell作為UNIX系統(tǒng)的解釋器(interpreter)已經(jīng)長(zhǎng)期存在。UNIX的管理員們常常用shell去寫一些簡(jiǎn)單的腳本,以進(jìn)行一些系統(tǒng)維 護(hù)的工作,比如定期備份、文件系統(tǒng)管理等等。shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語(yǔ)言下上百行的程序,在shell下只 用幾行就可以完成。然而,shell的本質(zhì)是調(diào)用命令。它并不是一個(gè)真正的語(yǔ)言。比如說(shuō),shell沒(méi)有數(shù)值型的數(shù)據(jù)類型,加法運(yùn)算都很復(fù)雜。總 之,shell不能全面的調(diào)動(dòng)計(jì)算機(jī)的功能。

(關(guān)于shell,你可以參考Linux架構(gòu)Linux命令行與命令)

Guido希望有一種語(yǔ)言,這種語(yǔ)言能夠像C語(yǔ)言那樣,能夠全面調(diào)用計(jì)算機(jī)的功能接口,又可以像shell那樣,可以輕松的編程。ABC語(yǔ)言讓Guido看到希望。ABC是由荷蘭的CWI (Centrum Wiskunde & Informatica, 數(shù)學(xué)和計(jì)算機(jī)研究所)開(kāi)發(fā)的。Guido在CWI工作,并參與到ABC語(yǔ)言的開(kāi)發(fā)。ABC語(yǔ)言以教學(xué)為目的。與當(dāng)時(shí)的大部分語(yǔ)言不同,ABC語(yǔ)言的目標(biāo)是“讓用戶感覺(jué)更好”。ABC語(yǔ)言希望讓語(yǔ)言變得容易閱讀,容易使用,容易記憶,容易學(xué)習(xí),并以此來(lái)激發(fā)人們學(xué)習(xí)編程的興趣。比如下面是一段來(lái)自Wikipedia的ABC程序,這個(gè)程序用于統(tǒng)計(jì)文本中出現(xiàn)的詞(word)的總數(shù):

  1. HOW TO RETURN words document: 
  2.    PUT {} IN collection 
  3.    FOR line IN document: 
  4.       FOR word IN split line: 
  5.          IF word not.in collection: 
  6.             INSERT word IN collection 
  7.    RETURN collection 

HOW TO用于定義一個(gè)函數(shù)。一個(gè)Python程序員應(yīng)該很容易理解這段程序。ABC語(yǔ)言使用冒號(hào)(:)和縮進(jìn)來(lái)表示程序塊(C語(yǔ)言使用{}來(lái)表示程序塊)。行 尾沒(méi)有分號(hào)。for和if結(jié)構(gòu)中也沒(méi)有括號(hào)()。如果將HOW TO改為def,將PUT行改為collection = [],將INSERT行改為collection.append(word),這就幾乎是一個(gè)標(biāo)準(zhǔn)的Python函數(shù)。上面的函數(shù)讀起來(lái)就像一段自然的文字。

盡管已經(jīng)具備了良好的可讀性和易用性,ABC語(yǔ)言最終沒(méi)有流行起來(lái)。在當(dāng)時(shí),ABC語(yǔ)言編譯器需要比較高配置的電腦才能運(yùn)行。而這些電腦的使用者通常精通計(jì)算機(jī),他們更多考慮程序的效率,而非它的學(xué)習(xí)難度。除了硬件上的困難外,ABC語(yǔ)言的設(shè)計(jì)也存在一些致命的問(wèn)題:

·可拓展性差。ABC語(yǔ)言不是模塊化語(yǔ)言。如果想在ABC語(yǔ)言中增加功能,比如對(duì)圖形化的支持,就必須改動(dòng)很多地方。

·不能直接進(jìn)行IO。ABC語(yǔ)言不能直接操作文件系統(tǒng)。盡管你可以通過(guò)諸如文本流的方式導(dǎo)入數(shù)據(jù),但ABC無(wú)法直接讀寫文件。輸入輸出的困難對(duì)于計(jì)算機(jī)語(yǔ)言來(lái)說(shuō)是致命的。你能想像一個(gè)打不開(kāi)車門的跑車么?

·過(guò)度革新。 ABC用自然語(yǔ)言的方式來(lái)表達(dá)程序的意義,比如上面程序中的HOW TO (如何)。然而對(duì)于程序員來(lái)說(shuō),他們更習(xí)慣用function或者define來(lái)定義一個(gè)函數(shù)。同樣,程序員也習(xí)慣了用等號(hào)(=)來(lái)分配變量。這盡管讓 ABC語(yǔ)言顯得特別,但實(shí)際上增加了程序員的學(xué)習(xí)難度 (程序員大都掌握不止一種語(yǔ)言)。

·傳播困難。ABC編譯器很大,必須被保存在磁帶(tape)上。當(dāng)時(shí)Guido在訪問(wèn)的時(shí)候,就必須有一個(gè)大磁帶來(lái)給別人安裝ABC編譯器。 這樣,ABC語(yǔ)言就很難快速傳播。

IBM tape drive:讀寫磁帶

1989年,為了打發(fā)圣誕節(jié)假期,Guido 開(kāi)始寫Python語(yǔ)言的編譯/解釋器。Python來(lái)自Guido所摯愛(ài)的電視劇Monty Python's Flying Circus (BBC1960-1970年代播放的室內(nèi)情景幽默劇,以當(dāng)時(shí)的英國(guó)生活為素材)。他希望這個(gè)新的叫做Python的語(yǔ)言,能實(shí)現(xiàn)他的理念(一種C和 shell之間,功能全面,易學(xué)易用,可拓展的語(yǔ)言)。Guido作為一個(gè)語(yǔ)言設(shè)計(jì)愛(ài)好者,已經(jīng)有過(guò)設(shè)計(jì)語(yǔ)言的(不很成功)的嘗試。這一次,也不過(guò)是一次 純粹的hacking行為。

Python的誕生

1991年,***個(gè)Python編譯器(同時(shí) 也是解釋器)誕生。它是用C語(yǔ)言實(shí)現(xiàn)的,并能夠調(diào)用C庫(kù)(.so文件)。從一出生,Python已經(jīng)具有了:類(class),函數(shù) (function),異常處理(exception),包括表(list)和詞典(dictionary)在內(nèi)的核心數(shù)據(jù)類型,以及模塊 (module)為基礎(chǔ)的拓展系統(tǒng)。

最初的Python logo: 由Guido的兄弟Just von Rossum設(shè)計(jì)

Python語(yǔ)法很多來(lái)自C,但又受到ABC語(yǔ)言的強(qiáng)烈影響。來(lái)自ABC語(yǔ)言的一些規(guī)定直到今天還富有爭(zhēng)議,比如強(qiáng)制縮進(jìn)。但這些語(yǔ)法規(guī)定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例(特別是C語(yǔ)言的慣例)。比如使用等號(hào)賦值,使用def來(lái)定義函數(shù)。Guido認(rèn)為,如果“常識(shí)”上確立的東西,沒(méi)有必要過(guò)度糾結(jié)。

Python從一開(kāi)始就特別在意可拓展性(extensibility)。 Python可以在多個(gè)層次上拓展。從高層上,你可以引入.py文件。在底層,你可以引用C語(yǔ)言的庫(kù)。Python程序員可以快速的使用Python 寫.py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí),Python程序員可以深入底層,寫C程序,編譯為.so文件引入到Python中使用。 Python就好像是使用鋼構(gòu)建房一樣,先規(guī)定好大的框架。而程序員可以在此框架下相當(dāng)自由的拓展或更改。

最初的Python完全由Guido本人開(kāi) 發(fā)。Python得到Guido同事的歡迎。他們迅速的反饋使用意見(jiàn),并參與到Python的改進(jìn)。Guido和一些同事構(gòu)成Python的核心團(tuán)隊(duì)。他 們將自己大部分的業(yè)余時(shí)間用于hack Python (也包括工作時(shí)間,因?yàn)樗麄儗ython用于工作)。隨后,Python拓展到CWI之外。Python將許多機(jī)器層面上的細(xì)節(jié)隱藏,交給編譯器處理, 并凸顯出邏輯層面的編程思考。Python程序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié) (Guido有一件T恤,寫著:人生苦短,我用Python)。這一特征吸引了廣大的程序員。Python開(kāi)始流行。

我們不得不暫停我們的Python時(shí)間,轉(zhuǎn)而 看一看這時(shí)的計(jì)算機(jī)概況。1990年代初,個(gè)人計(jì)算機(jī)開(kāi)始進(jìn)入普通家庭。Intel發(fā)布了486處理器,windows發(fā)布window 3.0開(kāi)始的一系列視窗系統(tǒng)。計(jì)算機(jī)的性能大大提高。程序員開(kāi)始關(guān)注計(jì)算機(jī)的易用性  (比如圖形化界面)。

Windows 3.0

由于計(jì)算機(jī)性能的提高,軟件的世界也開(kāi)始隨之改變。硬件足以滿足許多個(gè)人電腦的需要。硬件廠商甚至渴望高需求軟件的出現(xiàn),以帶動(dòng)硬件的更新?lián)Q代。C++和 Java相繼流行。C++和Java提供了面向?qū)ο蟮木幊谭妒剑约柏S富的對(duì)象庫(kù)。在犧牲了一定的性能的代價(jià)下,C++和Java大大提高了程序的產(chǎn)量。 語(yǔ)言的易用性被提到一個(gè)新的高度。我們還記得,ABC失敗的一個(gè)重要原因是硬件的性能限制。從這方面說(shuō),Python要比ABC幸運(yùn)許多。

另一個(gè)悄然發(fā)生的改變是Internet。 1990年代還是個(gè)人電腦的時(shí)代,windows和Intel挾PC以令天下,盛極一時(shí)。盡管Internet為主體的信息革命尚未到來(lái),但許多程序員以 及資深計(jì)算機(jī)用戶已經(jīng)在頻繁使用Internet進(jìn)行交流 (包括email和newsgroup)。Internet讓信息交流成本大大下降。一種新的軟件開(kāi)發(fā)模式開(kāi)始流行:開(kāi)源 (open source)。程序員利用業(yè)余時(shí)間進(jìn)行軟件開(kāi)發(fā),并開(kāi)放源代碼。1991年,Linus在comp.os.minix新聞組上發(fā)布了Linux內(nèi)核源代 碼,吸引大批hacker的加入。Linux和GNU相互合作,最終構(gòu)成了一個(gè)充滿活力的開(kāi)源平臺(tái)。

硬件性能不是瓶頸,Python又容易使用,所以許多人開(kāi)始轉(zhuǎn)向Python。Guido維護(hù)了一個(gè)maillist,Python用戶就通過(guò)郵件進(jìn)行交流。Python用戶來(lái)自許多領(lǐng)域,有不同的背景,對(duì)Python也有不同的需求。Python 相當(dāng)?shù)拈_(kāi)放,又容易拓展,所以當(dāng)用戶不滿足于現(xiàn)有功能,很容易對(duì)Python進(jìn)行拓展或改造。隨后,這些用戶將改動(dòng)發(fā)給Guido,并由Guido決定是 否將新的特征加入到Python或者標(biāo)準(zhǔn)庫(kù)中。如果代碼能被納入Python自身或者標(biāo)準(zhǔn)庫(kù),這將極大的榮譽(yù)。Python自身也因此變得更好。

(Guido不得不作出許多決定,這也是他被稱為Benevolent Dictator For Life的原因)

Python被稱為“Battery Included”,是說(shuō)它以及其標(biāo)準(zhǔn)庫(kù)的功能強(qiáng)大。這些是整個(gè)社區(qū)的貢獻(xiàn)。Python的開(kāi)發(fā)者來(lái)自不同領(lǐng)域,他們將不同領(lǐng)域的優(yōu)點(diǎn)帶給Python。 比如Python標(biāo)準(zhǔn)庫(kù)中的正則表達(dá)(regular expression)是參考Perl,而lambda, map, filter, reduce函數(shù)參考Lisp。Python本身的一些功能以 及大部分的標(biāo)準(zhǔn)庫(kù)來(lái)自于社區(qū)。Python的社區(qū)不斷擴(kuò)大,進(jìn)而擁有了自己的newsgroup,網(wǎng)站(python.org),以及基金 (Python Software Foundation)。從Python 2.0開(kāi)始,Python也從maillist的開(kāi)發(fā)方式,轉(zhuǎn)為完全開(kāi)源的開(kāi)發(fā)方式。社區(qū)氣氛已經(jīng)形成,工作被整個(gè)社區(qū)分擔(dān),Python也獲得了更加高 速的發(fā)展。

(由于Guido享有絕對(duì)的仲裁權(quán),所以在Python早期maillist的開(kāi)發(fā)時(shí)代,不少愛(ài)好者相當(dāng)擔(dān)心Guido的生命。他們甚至作出假設(shè):如果Guido掛了的話,Python會(huì)怎樣。見(jiàn)If Guido was hit by a bus)

到今天,Python的框架已經(jīng)確立。 Python語(yǔ)言以對(duì)象為核心組織代碼(Everything is object),支持多種編程范式(multi-paradigm),采用動(dòng)態(tài)類型(dynamic typing),自動(dòng)進(jìn)行內(nèi)存回收(garbage collection)。Python支持解釋運(yùn)行(interpret),并能調(diào)用C庫(kù)進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫(kù) (battery included)。由于標(biāo)準(zhǔn)庫(kù)的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開(kāi)始拓展到第三方包。這些包,如Django, web.py, wxpython, numpy, matplotlib,PIL,將Python升級(jí)成了物種豐富的熱帶雨林。

今天Python已經(jīng)進(jìn)入到3.0的時(shí)代。由于Python 3.0向后不兼容,所以從2.0到3.0的過(guò)渡并不容易。另一方面,Python的性能依然值得改進(jìn),Python的運(yùn)算性能低于C++和Java(見(jiàn)Google的討論)。Python依然是一個(gè)在發(fā)展中的語(yǔ)言。我期待看到Python的未來(lái)。

Python啟示錄

Python崇尚優(yōu)美、清晰、簡(jiǎn)單,是一個(gè)優(yōu)秀并廣泛使用的語(yǔ)言 (TIOBE語(yǔ)言排行第八,Google的第三大開(kāi)發(fā)語(yǔ)言,Dropbox的基礎(chǔ)語(yǔ)言,豆瓣的服務(wù)器語(yǔ)言)。這個(gè)世界并不缺乏優(yōu)秀的語(yǔ)言,但Python的發(fā)展史作為一個(gè)代表,帶給我許多啟示。

在Python的開(kāi)發(fā)過(guò)程中,社區(qū)起到了重要的作用。Guido自認(rèn)為自己不是全能型的程序員,所以他只負(fù)責(zé)制訂框架。如果問(wèn)題太復(fù)雜,他會(huì)選擇繞過(guò)去,也就是cut the corner。這些問(wèn)題最終由社區(qū)中的其他人解決。社區(qū)中的人才是異常豐富的,就連創(chuàng)建網(wǎng)站,籌集基金這樣與開(kāi)發(fā)稍遠(yuǎn)的事情,也有人樂(lè)意于處理。如今的項(xiàng)目開(kāi)發(fā)越來(lái)越復(fù)雜,越來(lái)越龐大,合作以及開(kāi)放的心態(tài)成為項(xiàng)目最終成功的關(guān)鍵。

Python從其他語(yǔ)言中學(xué)到了很多,無(wú)論是 已經(jīng)進(jìn)入歷史的ABC,還是依然在使用的C和Perl,以及許多沒(méi)有列出的其他語(yǔ)言。可以說(shuō),Python的成功代表了它所有借鑒的語(yǔ)言的成功。同 樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個(gè)語(yǔ)言都是混合體, 都有它優(yōu)秀的地方,但也有各種各樣的缺陷。同時(shí),一個(gè)語(yǔ)言“好與不好”的評(píng)判,往往受制于平臺(tái)、硬件、時(shí)代等等外部原因。程序員經(jīng)歷過(guò)許多語(yǔ)言之爭(zhēng)。我 想,為什么不以開(kāi)放的心態(tài)和客觀的分析,去區(qū)分一下每個(gè)語(yǔ)言的具體優(yōu)點(diǎn)缺點(diǎn),去區(qū)分內(nèi)部和外部的因素。說(shuō)不定哪一天發(fā)現(xiàn),我不喜歡的某個(gè)語(yǔ)言中,正包含了 我所需要的東西。

無(wú)論P(yáng)ython未來(lái)的命運(yùn)如何,Python的歷史已經(jīng)是本很有趣的小說(shuō)。

如果你因?yàn)楸疚膶?duì)Python產(chǎn)生了興趣,歡迎閱讀我的Python快速教程

本文主要參考:

Guido在Dropbox所做演講

http://v.youku.com/v_show/id_XNTExOTc1NTU2.html

原文鏈接:http://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html

責(zé)任編輯:張偉 來(lái)源: 博客園
相關(guān)推薦

2011-11-03 15:55:40

Windows Pho

2022-04-25 15:55:58

C 語(yǔ)言編程語(yǔ)言Java

2022-11-22 15:34:24

物聯(lián)網(wǎng)

2013-03-04 15:04:16

2012-04-18 15:39:04

諾基亞NFC

2012-02-20 10:12:09

Java

2013-03-07 10:52:57

2012-09-21 13:30:51

Java多線程Java發(fā)展

2020-05-22 08:16:07

PONGPONXG-PON

2015-10-21 14:07:17

Oracle備份Oracle恢復(fù)

2017-04-11 15:43:39

JavaScript模塊演化

2020-09-28 06:48:15

HTTP協(xié)議版本

2009-06-10 18:19:09

Android平臺(tái)簡(jiǎn)史Android平臺(tái)簡(jiǎn)介

2013-06-09 09:58:58

2010-03-11 10:34:22

Scala

2020-03-10 14:35:29

容器云計(jì)算發(fā)展

2011-06-23 12:02:43

SPARC云計(jì)算服務(wù)器

2017-06-21 20:54:40

電子技術(shù)計(jì)算機(jī)電子

2010-07-21 16:10:25

計(jì)算機(jī)

2020-11-11 00:40:35

云計(jì)算混合云私有云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人国产精品免费观看 | 99reav | 亚洲精品1区 | h网站在线观看 | 免费艹逼视频 | 午夜精品一区二区三区在线观看 | 日韩高清中文字幕 | 日韩视频在线播放 | 亚洲成人久久久 | 国产精品久久久久久久久图文区 | 99re6在线视频精品免费 | 欧美男人天堂 | 国产丝袜一区二区三区免费视频 | 尤物视频在线免费观看 | 二区中文| 日韩中文一区 | 亚洲福利一区 | 黄色在线免费播放 | 亚洲视频一区在线播放 | 精品久久99 | 精品亚洲二区 | 国产精品日韩在线观看一区二区 | 一区二区三区欧美在线 | 亚洲一区二区在线播放 | 欧美一区二区三区在线观看 | av午夜激情 | 男人天堂久久久 | 爱爱爱av | 国产精品成人国产乱一区 | 精品国产1区2区3区 一区二区手机在线 | 亚洲69p | 日韩精品久久久久久 | 亚洲第一网站 | 精品国产免费人成在线观看 | 国产一区二区在线免费观看 | 欧美成人精品一区二区男人看 | 久久久久国产一区二区三区 | 99精品免费久久久久久久久日本 | 久久91精品久久久久久9鸭 | 992人人草| 国产99视频精品免视看9 |