目錄
RETURN
一門語言的誕生
時勢造英雄
啟示錄
首頁 後端開發 Python教學 關於Python程式語言的發展簡介

關於Python程式語言的發展簡介

Mar 23, 2017 pm 03:58 PM
python 程式設計語言

Python是我喜歡的語言,簡潔、優美、易用。前兩天,我很激昂地向朋友宣傳Python的好處。 」

「呃,似乎是電視劇的名字。 」
「那你說的Guido是美國人麼? 」

「他從Google換到Dropbox工作,但他的名字像是荷蘭人的。 」
「你確定你很熟悉Python嗎? 」


所以為了雪恥,我花時間調查了Python的歷史。我看到了Python中許多功能的來源和Python的設計概念,看到了一門

程式語言
的演化歷史,看到了Python與開源運動的奇妙聯繫。 。位數學家,但他更享受電腦帶來的樂趣。

##在那個時候,Guido接觸並使用過Pascal、C、 Fortran等語言。蘋果已經掀起了個人電腦浪潮,但這些個人電腦的配置很低。做優化,以便讓程式能夠運作。電腦每一吋的能力。的電腦陷入癱瘓。 。 #檔案系統管理等等。的本質是呼叫指令。 #Guido希望有一種語言,這種語言能夠像C語言一樣,能夠全面調用計算機的功能接口,又可以像shell那樣,可以輕鬆的編程。 ABC語言讓Guido看到希望。 ABC是由荷蘭的數學和計算機研究所開發的。 Guido在該研究所工作,並參與到ABC語言的開發。 ABC語言以教學為目的。與當時的大部分語言不同,ABC語言的目標是「讓使用者感覺更好」。 ABC語言希望讓語言變得容易閱讀,容易使用,容易記憶,容易學習,並以此來激發人們學習程式設計的興趣。例如下面是一段來自Wikipedia的ABC程序,這個程式用來統計文本中出現的字的總數:

HOW TO

RETURN

words

document

:

PUT {} IN collectionFOR line IN document:FOR word IN split line:IF word not.in collection:INSERT word IN collectionRETURN collection

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程式語言的發展簡介

人生苦短,我用python

時勢造英雄

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

關於Python程式語言的發展簡介

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,並由Guido決定是否將新的特徵加入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的歷史已經是本很有趣的小說

以上是關於Python程式語言的發展簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML:是編程語言還是其他? HTML:是編程語言還是其他? Apr 15, 2025 am 12:13 AM

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

Python vs. JavaScript:社區,圖書館和資源 Python vs. JavaScript:社區,圖書館和資源 Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

CentOS上PyTorch的GPU支持情況如何 CentOS上PyTorch的GPU支持情況如何 Apr 14, 2025 pm 06:48 PM

在CentOS系統上啟用PyTorchGPU加速,需要安裝CUDA、cuDNN以及PyTorch的GPU版本。以下步驟將引導您完成這一過程:CUDA和cuDNN安裝確定CUDA版本兼容性:使用nvidia-smi命令查看您的NVIDIA顯卡支持的CUDA版本。例如,您的MX450顯卡可能支持CUDA11.1或更高版本。下載並安裝CUDAToolkit:訪問NVIDIACUDAToolkit官網,根據您顯卡支持的最高CUDA版本下載並安裝相應的版本。安裝cuDNN庫:前

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

PHP:服務器端腳本語言的簡介 PHP:服務器端腳本語言的簡介 Apr 16, 2025 am 12:18 AM

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

CentOS上PyTorch的分佈式訓練如何操作 CentOS上PyTorch的分佈式訓練如何操作 Apr 14, 2025 pm 06:36 PM

在CentOS系統上進行PyTorch分佈式訓練,需要按照以下步驟操作:PyTorch安裝:前提是CentOS系統已安裝Python和pip。根據您的CUDA版本,從PyTorch官網獲取合適的安裝命令。對於僅需CPU的訓練,可以使用以下命令:pipinstalltorchtorchvisiontorchaudio如需GPU支持,請確保已安裝對應版本的CUDA和cuDNN,並使用相應的PyTorch版本進行安裝。分佈式環境配置:分佈式訓練通常需要多台機器或單機多GPU。所

為什麼要使用PHP?解釋的優點和好處 為什麼要使用PHP?解釋的優點和好處 Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

See all articles