Python的發展史介紹

零下一度
發布: 2017-07-19 16:09:27
原創
6092 人瀏覽過

一、Python發展歷史

        Python語言因為簡潔而清晰的風格,有大量適用性甚廣的類別庫和python開源框架可以使用,而受到許多IT界人士的喜愛。 Python的由來及發展歷程又是怎樣的呢,下面我們來簡單的了解下。

        追溯Python語言的起源,是從20世紀90年代初由Guido van Rossum,在阿姆斯特丹,發展一個新的腳本解釋程序。不知道Guido當初有沒有想到,Python有一天會成為最受歡迎的程式設計語言之一?

有些人喜歡用膠水語言來形容Python,是因為它可以很輕鬆的把許多其它語言編寫的模組結合在一起,至於過程這裡不多講,如果你感興趣隨處都可以查到。要知道的是,國內外的許多高校也把python語言做為必修課來學習,並且國內的使用Python語言來工作的單位數量也在增加,會python的程式設計師可是炙手可熱啊。

        問有關Python語言的朋友們,它有哪些吸引人的地方呢?大多數人會這麼認為,它是一門容易上手,易讀同時也易維護的語言,所以才會有許許多多的用戶喜歡使用和學習,它真的是一門用途廣泛的語言。

        Python語言最基本語法有:縮排、控制語句、表達式、函數、物件方法、型別、數學運算。只有在學習了python基礎的語法之後,才可以開始正式應用的學習,如:圖形處理、數學處理、文字處理、資料庫、WEB程式設計、爬蟲等等的實際應用。

        python 3.3是目前最新的版本,但許多人還是喜歡從python 2開始學習。因為之前也有講過python 3的第三方支援還不完善,學習過程中會遇到莫名的問題。不如從已經很完善的python 2開始學習。之後過渡到python 3也是很簡單的。

        HOW TO用來定義一個函數。一個Python程式設計師應該很容易理解這段程式。 ABC語言使用冒號和縮排表示程式區塊。行 尾沒有分號。 for和if結構中也沒有括號() 。賦值採用的是PUT,而不是更常見的等號。這些改動讓ABC程式讀起來像一段文字。 儘管已經具備了良好的可讀性和易用性,ABC語言最終沒有流行起來。在當時,ABC語言編譯器需要比較高配置的電腦才能運作。而這些電腦的使用者通常精通計算機,他們更考慮程式的效率,而非它的學習難度。除了硬體上的困難外,ABC語言的設計也存在一些致命的問題: 可拓展性差。 ABC語言不是模組化語言。如果想在ABC語言中增加功能,例如對圖形化的支持,就必須改變很多地方。 不能直接進行IO。 ABC語言不能直接操作檔案系統。儘管你可以透過文字流的方式匯入數據,但ABC無法直接讀寫文 件。輸入輸出的困難對於電腦語言來說是致命的。你能想像一個打不開車門的跑車麼? 過度革新。 ABC用自然語言的方式來表達程式的意義,例如上面程式中的HOW TO 。然而對於程式設計師來說,他們更習慣 用function或define來定義一個函數。同樣,程式設計師更習慣用等號來分配變數。儘管ABC語言很特別,但學習難度 也很大。 傳播困難。 ABC編譯器很大,必須保存在磁帶上。當時Guido在訪問的時候,就必須有一個大磁帶來為別人安裝ABC編 譯器。 這樣,ABC語言就很難快速傳播。 1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯器。 Python這個名字,來自Guido所摯愛的電視劇Monty Python's Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。 Guido作為一個語言設計愛好者,已經有設計語言的嘗試。這一次,也不過是一次純粹的hacking行為。

一門語言的誕生

1991年,第一個Python編譯器誕生。它是用C語言實現的,並且能夠呼叫C語言的函式庫檔。從一出生,Python已經具有了 :類,函數,異常處理,包含表和詞典在內的核心資料類型,以及模組為基礎的拓展系統。 Python語法很多來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規定直到今天還富有爭議,例如強制縮排。 但這些文法規定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例,特別是C語言的慣例,例如回歸等號賦值。 Guido認為,如果「常識」上建立的東西,就沒有必要過度糾結。 Python從一開始就特別在意可拓展性。 Python可以在多個層次拓展。從高層上,你可以直接引入. py檔。在底層,你可以引用C語言的函式庫。 Python程式設計師可以快速的使用Python寫入. py檔案作為拓展模組。但當性能是考慮的重要因素時,Python程式設計師可以深入底層,寫C程序,編譯為.so檔引入到Python中使用。 Python就好像是使用鋼建造房一樣,先規定好大的框架。而程式設計師可以在此框架下相當自由的拓展或更 改。 最初的Python完全由Guido本人開發。 Python得到Guido同事的歡迎。他們迅速的回饋使用意見,並參與Python的改進。 Guido和一些同事組成Python的核心團隊。他們將自己大部分的業餘時間用於hack Python。隨後,Python拓 展到研究所之外。 Python將許多機器層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的程式思考。 Python程 序員可以花更多的時間在思考程式的邏輯,而不是具體的實作細節。這項特徵吸引了廣大的程式設計師。 Python開始流行。

時勢造英雄

我們不得不暫停我們的Python時間,轉而看一看瞬息萬變的電腦產業。 1990年代初,個人電腦開始進入一般家庭。 Intel發布了486處理器,windows發布從window 3.0開始的一系列視窗系統。計算機的性能大大提高。程式設計師開始關注電腦的易用性,例如圖形化介面。

Windows 3.0

由於電腦效能的提高,軟體的世界也開始隨之改變。硬體足以滿足許多個人電腦的需求。硬體廠商甚至渴望高需求軟 件的出現,以帶動硬體的更新換代。 C++和Java相繼流行。 C++和Java提供了物件導向的程式設計範式,以及豐富的物件函式庫。在犧牲了一定的效能的代價下,C++和Java大大提高了程式的產量。語言的易用性被提到一個新的高度。我們還記得 ,ABC失敗的一個重要原因是硬體的效能限制。從這方面說,Python要比ABC幸運許多。 另一個悄然發生的改變是Internet。 1990年代還是個人電腦的時代,windows和Intel挾PC以令天下,盛極一時。儘管Internet為主體的資訊革命尚未到來,但許多程式設計師以及資深電腦使用者已經在頻繁使用Internet進行交流,例如 使用email和newsgroup。 Internet讓資訊交流成本大為下降。一種新的軟體開發模式開始流行:開源。程式設計師利用 業餘時間進行軟體開發,並開放原始碼。 1991年,Linus在comp.os.minix新聞群組上發布了Linux內核原始碼,吸引大批hacker的加入。 Linux和GNU相互合作,最終構成了一個充滿活力的開源平台。 硬體效能不是瓶頸,Python又容易使用,所以許多人開始轉向Python。 Guido維護了一個maillist,Python用戶就透過郵件交流。 Python使用者來自許多領域,有不同的背景,對Python也有不同的需求。 Python相當的開放,又容 易拓展,所以當用戶不滿足於現有功能,很容易對Python進行拓展或改造。隨後,這些使用者將改動發給Guido,並由Gu ido決定是否將新的特徵加入Python或標準庫。如果程式碼能被納入Python本身或標準函式庫,這將極大的榮譽。由於Guido至高無上的決定權,他因此被稱為「終身的仁慈獨裁者」。 Python被稱為“Battery Included”,是說它以及其標準函式庫的功能強大。這些都是整個社區的貢獻。 Python的開發者來自不同領域,他們將不同領域的優點帶給Python。例如Python標準函式庫中的正規表示是參考Perl,而lambda, map, filter, reduce等函數參考了Lisp。 Python本身的一些功能以及大部分的標準函式庫來自社群。 Python的社 區不斷擴大,進而擁有了自己的newsgroup,網站,以及基金。從Python 2.0開始,Python也從maillist的開發方式,轉為完全開源的開發方式。社區氣氛已經形成,工作被整個社區分擔,Python也獲得了更高速的發展。 到今天,Python的框架已經確立。 Python語言以物件為核心組織程式碼,支援多種程式設計範式,採用動態類型,自動進行記憶體回收。 Python支援解釋運行,並能呼叫C函式庫進行拓展。 Python有強大的標準函式庫。由於標準函式庫的系統已經穩定,所以Python的生態系開始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級成了物種豐富的熱帶雨林。

啟示錄

Python崇尚優美、清晰、簡單,是個優秀且廣泛使用的語言。 Python在TIOBE排行榜中排行第八,它是Google的第三大開發語言,Dropbox的基礎語言,豆瓣的伺服器語言。 Python的發展史可以作為一個代表,帶給我許多啟示。 在Python的開發過程中,社群扮演了重要的角色。 Guido自認為自己不是全能型的程式設計師,所以他只負責訂製框架。如果問題太複雜,他會選擇繞過去,也就是cut the corner。這些問題最終由社區中的其他人解決。社區中的人才是異常豐富的,就連創建網站,籌集基金這樣與開發稍遠的事情,也有人樂意處理。現今的專案開發越來越複雜,越來越龐大,合作以及開放的心態成為專案最終成功的關鍵。 Python從其他語言中學到了很多,無論是已經進入歷史的ABC,還是仍然在使用的C和Perl,以及許多沒有列出的其他 語言。可以說,Python的成功代表了它所有藉鏡的語言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個語言都是混合體,都有它優秀的地方,但也有各種不同的缺陷。同時,一個語言「好與不好」的評 判,往往受制於平台、硬體、時代等等外在原因。程式設計師經歷過許多語言之爭。其實,以開放的心態來接受各個語言,說不定哪一天,程式設計師也可以如Guido那樣,混合出自己的語言。

關鍵點常識

Python的發音與拼字
Python的意思是蟒蛇,源自於作者喜歡的一部電視劇(C呢?)
Python的作者是Guido van Rossum(龜叔)
Python是龜叔在1989年聖誕節期間,為了打發無聊的聖誕節而用C編寫的一個程式語言
Python正式誕生於1991年
Python的解釋器如今有多個語言實現,我們常用的是CPython(官方版本的C語言實作),其他還有Jython(可以運行在Java平台)、IronPython(可以運行在.NET和Mono平台)、PyPy(Python實現的,支援JIT即時編譯)
Python目前有兩個版本,Python2和Python3,最新版分別為2.7.12和3.5.2,現階段大部分公司用的是Python2

二、Python優缺點

優點

  • 簡單----Python是一種代表簡單主義思想的語言。閱讀一個好的Python程式就感覺像是在讀英文一樣,儘管這個英文的要求非常嚴格! Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞清楚語言本身。

  • 易學————就如同你即將看到的一樣,Python極其容易上手。前面已經提到了,Python有極為簡單的語法。

  • 免費、開源————Python是FLOSS(自由/開放原始碼軟體)之一。簡單地說,你可以自由地發布這個軟體的拷貝、閱讀它的原始碼、對它做改動、把它的一部分用於新的自由軟體中。 FLOSS是基於一個團體分享知識的概念。這就是為什麼Python如此優秀的原因之一——它是由一群希望看到一個更優秀的Python的人創造並經常改進著的。

  • 高層語言————當你用Python語言寫程式的時候,你無需考慮諸如如何管理你的程式所使用的記憶體一類的底層細節。

  • 可移植性--由於它的開源本質,Python已經被移植在許多平台上(經過改變使它能夠工作在不同平台上)。如果你小心地避免使用依賴系統的特性,那麼你的所有Python程式無需修改就可以在下述任何平台上面運作。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、 PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平台!

  • 解釋性————這一點需要一些解釋。一個用編譯性語言例如C或C++寫的程式可以從原始檔(即C或C++語言)轉換到一個你的電腦使用的語言(二進位程式碼,即0和1)。這個過程透過編譯器和不同的標記、選項完成。當你運行你的程式的時候,連接/轉載器軟體把你的程式從硬碟複製到記憶體並且運行。而Python語言寫的程式則不需要編譯成二進位程式碼。你可以直接從原始碼運行程式。在電腦內部,Python解釋器把原始碼轉換成稱為字節碼的中間形式,然後再把它翻譯成電腦使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的函式庫等等,這一切使得使用Python更加簡單。由於你只需要把你的Python程式拷貝到另外一台電腦上,它就可以運作了,這也讓你的Python程式更容易移植。

  • 物件導向--Python既支援流程導向的程式設計也支援物件導向的程式設計。在「過程導向」的語言中,程式是由過程或僅僅是可重複使用程式碼的函數建構起來的。在「物件導向」的語言中,程式是由資料和功能組合而成的物件建構起來的。與其他主要的語言如C++和Java相比,Python以非常強大又簡單的方式實作物件導向程式設計。

  • 可擴展性————如果你需要你的一段關鍵程式碼運行得更快或希望某些演算法不公開,你可以把你的部分程式用C或C++寫,然後在你的Python程式中使用它們。

  • 豐富的函式庫--Python標準函式庫確實很龐大。它可以幫助你處理各種工作,包括正規表示式、文件生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV檔案、密碼系統、GUI (圖形使用者介面)、Tk和其他與系統相關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的「功能齊全」理念。除了標準庫以外,還有許多其他高品質的庫,如wxPython、Twisted和Python圖像庫等等。

  • 規範的程式碼————Python採用強制縮排的方式使得程式碼具有極佳的可讀性。

缺點

運行速度,有速度要求的話,用C++改寫關鍵部分吧。
國內市場較小(國內以python來做主要開發的,目前只有一些web2.0公司)。但時間推移,目前許多國內軟體公司,尤其是遊戲公司,也開始規模使用他。
中文資料匱乏(好的python中文資料屈指可數)。托社群的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高級內容還是只能看英文版。
架構選擇太多(沒有像C#這樣的官方.net架構,也沒有像ruby由於歷史較短,架構開發的相對集中。Ruby on Rails 架構開發中小型web程式天下無敵)。不過這也從另一個側面說明,python比較優秀,吸引的人才多,專案也多。

三、Python應用場景

Web應用開發
Python常被用於Web開發。例如,透過mod_wsgi模組,Apache可以運行用Python編寫的Web程式。 Python定義了WSGI標準應用介面來協調Http伺服器與基於Python的Web程式之間的通訊。一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程式設計師輕鬆開發和管理複雜的Web程式。

作業系統管理、伺服器運維的自動化腳本
在很多作業系統裡,Python是標準的系統元件。 大多數Linux發行版以及NetBSD、OpenBSD和Mac OS X都整合了Python,可以在終端機下直接運行Python。有一些Linux發行版的安裝器使用Python語言編寫,像是Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。 Gentoo Linux使用Python來編寫它的Portage套件管理系統。 Python標準函式庫包含了多個呼叫作業系統功能的函式庫。透過pywin32這個第三方軟體 套件,Python能夠存取Windows的COM服務及其它Windows API。使用IronPython,Python程式能夠直接呼叫.Net Framework。一般說來,Python編寫的系統管理腳本在可讀性、效能、程式碼重用度、擴充性幾方面都優於普通的shell腳本。

科學計算
NumPy,SciPy,Matplotlib可以讓Python程式設計師撰寫科學計算程式。

桌面軟體
PyQt、PySide、wxPython、PyGTK是Python快速開發桌面應用程式的利器。

伺服器軟體(網路軟體)
Python對於各種網路協定的支援很完善,因此經常被用於編寫伺服器軟體、網路爬蟲。第三方函式庫Twisted支援非同步網路程式設計和多數標準的網路協定(包含客戶端和伺服器),並且提供了多種工具,被廣泛用於編寫高效能的伺服器軟體。

遊戲
很多遊戲使用C++編寫圖形顯示等高效能模組,而使用Python或Lua編寫遊戲的邏輯、伺服器。相較於Python,Lua的功能更簡單、體積更小;而Python則支援更多的特性和資料類型。

構思實現,產品早期原型和迭代
YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。

以上是Python的發展史介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!