- Python3.5從零開始學
- 劉宇宙
- 1632字
- 2020-11-28 16:06:56
1.1 Python的起源
Python的創始人為Guido van Rossum(后文簡稱Guido)。1982年,Guido從阿姆斯特丹大學獲得數學和計算機碩士學位。盡管Guido算得上是一位數學家,不過他更享受計算機帶來的樂趣。用Guido的話說,盡管他擁有數學和計算機雙料資質,不過他趨向于做計算機相關的工作,并熱衷于做所有和編程相關的活兒。
Guido接觸并使用過Pascal、C、Fortran等語言。這些語言的基本設計原則是讓機器運行得更快。在20世紀80年代,雖然IBM和蘋果已經掀起了個人電腦浪潮,但是那時候個人電腦的配置很低,比如早期的Macintosh只有8MHz的CPU主頻和128KB的RAM,一個大的數組就能占滿內存,因此所有編譯器的核心都是做優化,以便讓程序能夠運行。為了提高效率,程序員不得不像計算機一樣思考,以便寫出更符合機器口味的程序,在那個時代,程序員恨不得榨取計算機每一寸的能力,有人甚至認為C語言的指針是在浪費內存。至于動態類型、內存自動管理、面向對象等就不要想了,這些只會讓你的電腦陷入癱瘓。
這種編程方式讓Guido感到苦惱。雖然Guido知道如何用C語言寫出一個功能,但整個編寫過程卻需要耗費大量時間。Guido還可以選擇Shell, Bourne Shell作為UNIX系統的解釋器已經存在很久了。UNIX的管理員常常用Shell寫一些簡單的腳本,以進行系統維護的工作,比如定期備份、文件系統管理等。在C語言中,許多上百行的程序在Shell中只用幾行就可以完成。然而,Shell的本質是調用命令,它不是一個真正的語言,比如Shell沒有數值型的數據類型,運用加法運算都很復雜。總之,Shell不能全面調動計算機的功能。
Guido希望有一種語言能夠像C語言一樣全面調用計算機的功能接口,又可以像Shell一樣輕松編程。ABC語言讓Guido看到了希望,該語言是由荷蘭的數學和計算機研究所開發的,Guido曾經在該研究所工作,并參與了ABC語言的開發。與當時大部分語言不同,ABC語言是以教學為目的,目標是“讓用戶感覺更好”,希望通過ABC語言讓語言變得容易閱讀、容易使用、容易記憶、容易學習,并以此激發人們學習編程的興趣。
ABC語言盡管已經具備了良好的可讀性和易用性,不過始終沒有流行起來。當時,ABC語言編譯器需要配置比較高的電腦才能運行,而這些電腦的使用者通常精通計算機,他們考慮更多的是程序的效率,而不是學習難度。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容易理解。另一方面,Guido聰明地選擇讓Python服從一些慣例,特別是C語言的慣例,比如回歸等號賦值。Guido認為“常識”確定的東西沒有必要過度糾結。
Python從一開始就特別在意可拓展性。Python可以在多個層次上拓展,在高層可以直接引入.py文件,在底層可以引用C語言的庫。程序員可以使用Python快速編寫的.py文件作為拓展模塊。當性能是重點考慮的因素時,程序員可以深入底層寫C程序,將編譯的.so文件引入Python中使用。Python就像使用鋼筋建房一樣,要先規定好大的框架。程序員可以在此框架下相當自由地拓展或更改。
最初,Python完全由Guido本人開發,后來逐漸受到Guido同事的歡迎,他們迅速反饋使用意見,并參與Python的改進。Guido和一些同事構成了Python的核心團隊,他們將自己大部分業余時間用于hack Python, Python逐漸拓展到了研究所外。Python將許多機器層面的細節隱藏交給編譯器處理,并凸顯邏輯層面的編程思考,程序員使用Python時可以將更多時間用于程序邏輯的思考,而不是具體細節的實現,這一特征吸引了廣大程序員。Python開始流行起來了。
- 高手是如何做產品設計的(全2冊)
- Unity Virtual Reality Projects
- 編寫高質量代碼:改善C程序代碼的125個建議
- MariaDB High Performance
- Java EE 7 Development with NetBeans 8
- 手把手教你學C語言
- INSTANT Django 1.5 Application Development Starter
- Learning Unity 2D Game Development by Example
- C語言程序設計上機指導與習題解答(第2版)
- Angular Design Patterns
- ASP.NET開發寶典
- Koa與Node.js開發實戰
- 美麗洞察力:從化妝品行業看顧客需求洞察
- 高性能MVVM框架的設計與實現:San
- Magento 2 Developer's Guide