亚洲免费一级高潮_欧美极品白嫩视频在线_中国AV片在线播放_欧美亚洲日韩欧洲在线看

您現(xiàn)在所在的位置:首頁 >關(guān)于奇酷 > 行業(yè)動態(tài) > python的前世與今生

python的前世與今生

來源:奇酷教育 發(fā)表于:

python的前世與今生

  python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學(xué)易用,可拓展的語言。并且在他去谷歌面試的時候簡歷只寫了一句話,就是我創(chuàng)造了Python,可見能力確實(shí)不一般。
 
 
 
  吉多·范羅蘇姆
 
 
  我們的前輩有一個非常親民的名字叫做“龜叔”
 
  在80年代,個人電腦的配置較之如今是極低的,程序員不得不努力思考如何最大化利用空間,以寫出符合機(jī)器口味的程序。而正是因?yàn)檫@一點(diǎn),讓龜叔感到苦惱。他認(rèn)為這樣編寫程序?qū)嵲谑翘^于耗費(fèi)時間,于是他想到了shell。shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質(zhì)是調(diào)用命令,它并不是一個真正的語言,shell不能全面的調(diào)動計算機(jī)的功能。 
 
  于是,龜叔開始思考,是否能設(shè)計一款語言,使它同時具備C與shell的優(yōu)點(diǎn),既能夠全面調(diào)用計算機(jī)的功能接口,又可以輕松編寫程序。 
 
  所以龜叔當(dāng)時一直在尋找這樣一種的語言,既可以像命令那樣簡潔明了,又可以和C語言的功能相媲美。不過當(dāng)時那個年代,幾乎是找不到的,不過找到了一種稍微類似的語言,就是傳說中的ABC語言
 
  1989年圣誕節(jié)期間,在阿姆斯特丹,龜叔為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個新的腳本解釋程序,做為ABC 語言的一種繼承。而取名python,是取自他摯愛的一部電視劇Monty Python’s Flying Circus 。 
 
  1991年,第一個Python編譯器誕生,它是用C語言實(shí)現(xiàn)的,并能夠調(diào)用C庫(.so文件)。從一出生,Python已經(jīng)具有了:類(class),函數(shù)(function),異常處理(exception),包括表(list)和詞典(dictionary)在內(nèi)的核心數(shù)據(jù)類型,以及模塊(module)為基礎(chǔ)的拓展系統(tǒng)。 
 
  龜叔為防止重蹈ABC的覆轍,著重注意python的可擴(kuò)展性,并且也沿用了C中的大部分語法習(xí)慣,而這,使python得到龜叔同事的歡迎。他們迅速的反饋使用意見,并參與到Python的改進(jìn)。
 
  python誕生在一個幸運(yùn)的時間。1990年代初,個人計算機(jī)開始進(jìn)入普通家庭。Intel發(fā)布了486處理器,windows發(fā)布window 3.0開始的一系列視窗系統(tǒng),計算機(jī)的性能大大提高。并且由于Internet隨個人電腦的普及而為人們所廣知,許多程序員以及資深計算機(jī)用戶頻繁使用Internet進(jìn)行交流,這使得python沒有了硬件上的束縛與傳播上的困難,再加上python易于使用的特點(diǎn),使python得到了一定程度上的傳播。 
 
  龜叔維護(hù)了一個maillist,python用戶通過郵件進(jìn)行交流。因?yàn)閜ython用戶來自許多領(lǐng)域,有不同的背景,對python也有不同的需求。python相當(dāng)?shù)拈_放,又容易拓展,所以當(dāng)用戶不滿足于現(xiàn)有功能,很容易對python進(jìn)行拓展或改造。隨后,這些用戶將改動發(fā)給龜叔,并由龜叔決定是否將新的特征加入到python或者標(biāo)準(zhǔn)庫中。這就使得不同領(lǐng)域的優(yōu)點(diǎn)集中于python。 
 
  后來的python2.0,從maillist的開發(fā)方式,轉(zhuǎn)為完全開源的開發(fā)方式,(開源:由于Internet讓信息交流成本大大下降,所出現(xiàn)的一種新的軟件開發(fā)模式)python的數(shù)據(jù)庫的擴(kuò)展速度與傳播速度也由此更進(jìn)一步。 
 
  到今天,Python的框架已經(jīng)確立。Python語言以對象為核心組織代碼(Everything is object),支持多種編程范式(multi-paradigm),采用動態(tài)類型(dynamic typing),自動進(jìn)行內(nèi)存回收(garbage collection)。Python支持解釋運(yùn)行(interpret),并能調(diào)用C庫進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫 (battery included)。由于標(biāo)準(zhǔn)庫的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開始拓展到第三方包。
 
 
  python干嘛用的?
 
  Python可以應(yīng)用于眾多領(lǐng)域,如:數(shù)據(jù)分析、組件集成、網(wǎng)絡(luò)服務(wù)、圖像處理、數(shù)值計算和科學(xué)計算等眾多領(lǐng)域。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube、Dropbox、BT、、Google、Yahoo!、Facebook、NASA、Quora(中國知乎)、豆瓣、知乎、百度、騰訊、汽車之家、美團(tuán)等。
 
 
  目前Python主要應(yīng)用領(lǐng)域
 
  云計算: 云計算最火的語言, 典型應(yīng)用OpenStack
 
  WEB開發(fā): 眾多優(yōu)秀的WEB框架,眾多大型網(wǎng)站均為Python開發(fā),Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
 
  科學(xué)運(yùn)算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
 
  系統(tǒng)運(yùn)維: 運(yùn)維人員必備語言
 
  金融:量化交易,金融分析,在金融工程領(lǐng)域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態(tài)語言的Python,語言結(jié)構(gòu)清晰簡單,庫豐富,成熟穩(wěn)定,科學(xué)計算和統(tǒng)計分析都很牛逼,生產(chǎn)效率遠(yuǎn)遠(yuǎn)高于c,c++,java,尤其擅長策略回測
 
  圖形GUI: PyQT, WxPython,TkInter
 
 
  Python在一些公司的應(yīng)用
 
  谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項(xiàng)目都在大量使用Python開發(fā)
 
  CIA: 美國中情局網(wǎng)站就是用Python開發(fā)的
 
  NASA: 美國航天局(NASA)大量使用Python進(jìn)行數(shù)據(jù)分析和運(yùn)算
 
  YouTube:世界上最大的視頻網(wǎng)站YouTube就是用Python開發(fā)的
 
  Dropbox:美國最大的在線云存儲網(wǎng)站,全部用Python實(shí)現(xiàn),每天網(wǎng)站處理10億個文件的上傳和下載
 
  Instagram:美國最大的圖片分享社交網(wǎng)站,每天超過3千萬張照片被分享,全部用python開發(fā)
 
  Facebook:大量的基礎(chǔ)庫均通過Python實(shí)現(xiàn)的
 
  Redhat: 世界上最流行的Linux發(fā)行版本中的yum包管理工具就是用python開發(fā)的
 
  豆瓣: 公司幾乎所有的業(yè)務(wù)均是通過Python開發(fā)的
 
  知乎: 國內(nèi)最大的問答社區(qū),通過Python開發(fā)(國外Quora)
 
  春雨醫(yī)生:國內(nèi)知名的在線醫(yī)療網(wǎng)站是用Python開發(fā)的
 
  除上面之外,還有搜狐、金山、騰訊、盛大、網(wǎng)易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務(wù)。
 
 
  Python的種類
 
  Cpython
 
      Python的官方版本,使用C語言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。
 
  Jyhton
 
      Python的Java實(shí)現(xiàn),Jython會將Python代碼動態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。
 
  IronPython
 
      Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行。(與Jython類似)
 
  PyPy(特殊)
 
      Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。
 
  RubyPython、Brython ...
 
 
  python 設(shè)計定位
 
  Python的設(shè)計哲學(xué)是“優(yōu)雅”、“明確”、“簡單”。因此,Perl語言中“總是有多種方法來做同一件事”的理念在Python開發(fā)者中通常是難以忍受的。Python開發(fā)者的哲學(xué)是[“用一種方法,最好是只有一種方法來做一件事”]。在設(shè)計Python語言時,如果面臨多種選擇,Python開發(fā)者一般會拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。由于這種設(shè)計觀念的差異,Python源代碼通常被認(rèn)為比Perl具備更好的可讀性,并且能夠支撐大規(guī)模的軟件開發(fā)。這些準(zhǔn)則被稱為Python格言。在Python解釋器內(nèi)運(yùn)行import this可以獲得完整的列表。 
 
  Python開發(fā)人員盡量避開不成熟或者不重要的優(yōu)化。一些針對非重要部位的加快運(yùn)行速度的補(bǔ)丁通常不會被合并到Python內(nèi)。所以很多人認(rèn)為Python很慢。不過,根據(jù)二八定律,大多數(shù)程序?qū)λ俣纫蟛桓摺T谀承\(yùn)行速度要求很高的情況,Python設(shè)計師傾向于使用JIT技術(shù),或者用使用C/C++語言改寫這部分程序??捎玫腏IT技術(shù)是PyPy。 
 
  Python是完全面向?qū)ο蟮恼Z言。函數(shù)、模塊、數(shù)字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。Python支持重載運(yùn)算符和動態(tài)類型。相對于Lisp這種傳統(tǒng)的函數(shù)式編程語言,Python對函數(shù)式設(shè)計只提供了有限的支持。有兩個標(biāo)準(zhǔn)庫(functools, itertools)提供了Haskell和Standard ML中久經(jīng)考驗(yàn)的函數(shù)式程序設(shè)計工具。 
 
  雖然Python可能被粗略地分類為“腳本語言”(script language),但實(shí)際上一些大規(guī)模軟件開發(fā)計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高級動態(tài)編程語言,原因是“腳本語言”泛指僅作簡單程序設(shè)計任務(wù)的語言,如shellscript、VBScript等只能處理簡單任務(wù)的編程語言,并不能與Python相提并論。 
 
  Python本身被設(shè)計為可擴(kuò)充的。并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴(kuò)充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內(nèi)。因此,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python將其他語言編寫的程序進(jìn)行集成和封裝。在Google內(nèi)部的很多項(xiàng)目,例如Google Engine使用C++編寫性能要求極高的部分,然后用Python或Java/Go調(diào)用相應(yīng)的模塊。《Python技術(shù)手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004 年,Python 已在Google 內(nèi)部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬件的場合使用 C++,在快速開發(fā)時候使用 Python。”