- Python 3.7從零開始學(xué)
- 劉宇宙
- 1639字
- 2019-12-06 14:02:17
1.1 Python的起源
Python的創(chuàng)始人為Guido van Rossum(后文簡稱Guido)。1982年,Guido從阿姆斯特丹大學(xué)獲得數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。盡管Guido算得上是一位數(shù)學(xué)家,不過他更享受計(jì)算機(jī)帶來的樂趣。用Guido的話說,盡管他擁有數(shù)學(xué)和計(jì)算機(jī)雙料資質(zhì),不過他更傾向于做計(jì)算機(jī)相關(guān)的工作,并熱衷于做所有和編程相關(guān)的活兒。
Guido接觸并使用過Pascal、C、Fortran等語言,這些語言的基本設(shè)計(jì)原則是讓機(jī)器運(yùn)行得更快。在20世紀(jì)80年代,雖然IBM和蘋果已經(jīng)掀起了個(gè)人計(jì)算機(jī)浪潮,但是那時(shí)候個(gè)人計(jì)算機(jī)的配置很低,比如早期的Macintosh只有8MHz的CPU主頻和128KB的RAM,一個(gè)大的數(shù)組就能占滿內(nèi)存,因此所有編譯器的核心都是做優(yōu)化,以便讓程序能夠運(yùn)行。為了提高效率,程序員不得不像計(jì)算機(jī)一樣思考,以便寫出更符合機(jī)器口味的程序,在那個(gè)時(shí)代,程序員恨不得榨取計(jì)算機(jī)每一寸的能力,有人甚至認(rèn)為C語言的指針是在浪費(fèi)內(nèi)存。至于動(dòng)態(tài)類型、內(nèi)存自動(dòng)管理、面向?qū)ο蟮染筒灰肓耍@些只會(huì)讓你的計(jì)算機(jī)陷入癱瘓。
這種編程方式讓Guido感到苦惱。雖然Guido知道如何用C語言寫出一個(gè)功能,但整個(gè)編寫過程卻需要耗費(fèi)大量時(shí)間。Guido還可以選擇Shell,Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)存在很久了。UNIX的管理員常常用Shell寫一些簡單的腳本,以進(jìn)行系統(tǒng)維護(hù)的工作,比如定期備份、文件系統(tǒng)管理等。在C語言中,許多上百行的程序在Shell中只用幾行就可以完成。然而,Shell的本質(zhì)是調(diào)用命令,它不是一個(gè)真正的語言,比如Shell沒有數(shù)值型的數(shù)據(jù)類型,運(yùn)用加法運(yùn)算都很復(fù)雜。總之,Shell不能全面調(diào)動(dòng)計(jì)算機(jī)的功能。
Guido希望有一種語言能夠像C語言一樣全面調(diào)用計(jì)算機(jī)的功能接口,又可以像Shell一樣輕松編程。ABC語言讓Guido看到了希望,該語言是由荷蘭的數(shù)學(xué)和計(jì)算機(jī)研究所開發(fā)的,Guido曾經(jīng)在該研究所工作,并參與了ABC語言的開發(fā)。與當(dāng)時(shí)大部分語言不同的是,ABC語言以教學(xué)為目的,目標(biāo)是“讓用戶感覺更好”,希望通過ABC語言讓語言變得容易閱讀、容易使用、容易記憶、容易學(xué)習(xí),并以此激發(fā)人們學(xué)習(xí)編程的興趣。
ABC語言盡管已經(jīng)具備了良好的可讀性和易用性,不過始終沒有流行起來。當(dāng)時(shí),ABC語言編譯器需要配置比較高的計(jì)算機(jī)才能運(yùn)行,而這些計(jì)算機(jī)的使用者通常精通計(jì)算機(jī),他們考慮更多的是程序的效率,而不是學(xué)習(xí)難度。ABC語言不能直接操作文件系統(tǒng),盡管用戶可以通過文本流等方式導(dǎo)入數(shù)據(jù),不過ABC無法直接讀寫文件。輸入輸出的困難對(duì)于計(jì)算機(jī)語言來說是致命的。你能想象一款打不開車門的跑車嗎?
1989年,為了打發(fā)圣誕節(jié)假期,Guido開始寫Python語言的編譯器。Python這個(gè)名字來自于Guido所摯愛的電視劇——Monty Python’s Flying Circus,他希望這個(gè)新語言Python能夠符合他的理想:創(chuàng)造一種介于C和Shell之間,功能全面、易學(xué)易用、可拓展的語言。Guido作為一個(gè)語言設(shè)計(jì)愛好者,已經(jīng)嘗試過設(shè)計(jì)語言,這次不過是一種純粹的hacking行為。
1991年,第一個(gè)Python編譯器誕生。該編譯器是用C語言實(shí)現(xiàn)的,并且能夠調(diào)用C語言的庫文件。Python誕生時(shí)便具有類、函數(shù)、異常處理、包含表和詞典在內(nèi)的核心數(shù)據(jù)類型以及模塊為基礎(chǔ)的拓展系統(tǒng)。
Python的很多語法來自于C,卻又受ABC語言的強(qiáng)烈影響。來自ABC語言的一些規(guī)定至今還富有爭議(比如強(qiáng)制縮進(jìn)),不過這些語法規(guī)定讓Python容易理解。另一方面,Guido聰明地選擇讓Python服從一些慣例,特別是C語言的慣例,比如回歸等號(hào)賦值。Guido認(rèn)為“常識(shí)”確定的東西沒有必要過度糾結(jié)。
Python從一開始就特別在意可拓展性。Python可以在多個(gè)層次上拓展,在高層可以直接引入.py文件,在底層可以引用C語言的庫。程序員可以使用Python快速編寫.py文件作為拓展模塊。當(dāng)性能是重點(diǎn)考慮的因素時(shí),程序員可以深入底層寫C程序,將編譯的.so文件引入Python中使用。Python就像使用鋼筋建房一樣,要先規(guī)定好大的框架,程序員可以在此框架下相當(dāng)自由地拓展或更改。
最初,Python完全由Guido本人開發(fā),后來逐漸受到Guido同事的歡迎,他們迅速反饋使用意見,并參與Python的改進(jìn)。Guido和一些同事構(gòu)成了Python的核心團(tuán)隊(duì),他們將自己大部分業(yè)余時(shí)間用于hack Python,Python逐漸拓展到了研究所外。Python將許多機(jī)器層面的細(xì)節(jié)隱藏交給編譯器處理,并凸顯邏輯層面的編程思考,程序員使用Python時(shí)可以將更多時(shí)間用于程序邏輯的思考,而不是具體細(xì)節(jié)的實(shí)現(xiàn),這一特征吸引了廣大程序員。Python開始流行起來了。
- 手機(jī)安全和可信應(yīng)用開發(fā)指南:TrustZone與OP-TEE技術(shù)詳解
- Vue.js設(shè)計(jì)與實(shí)現(xiàn)
- 基于粒計(jì)算模型的圖像處理
- Getting started with Google Guava
- Python Geospatial Development(Second Edition)
- Web Application Development with MEAN
- Learning ArcGIS Pro
- 大學(xué)計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)指導(dǎo)
- 青少年學(xué)Python(第1冊(cè))
- Cybersecurity Attacks:Red Team Strategies
- 智能搜索和推薦系統(tǒng):原理、算法與應(yīng)用
- 一本書講透Java線程:原理與實(shí)踐
- 微課學(xué)人工智能Python編程
- Redmine Cookbook
- 高效使用Greenplum:入門、進(jìn)階與數(shù)據(jù)中臺(tái)