搜尋
首頁資料庫mysql教程Python快速教學(補充篇04):Python簡史

Python的起源

Python的作者,Guido von Rossum,確實是荷蘭人。 1982年,Guido從阿姆斯特丹大學(University of Amsterdam)獲得了數學和電腦碩士學位。然而,儘管他算得上是一位數學家,但他更享受計算機帶來的樂趣。用他的話來說,儘管擁有數學和計算機雙料資質,他總趨向於做計算機相關的工作,並熱衷於做任何和編程相關的活兒。

Python快速教學(補充篇04):Python簡史

Guido von Rossum

在那個時候,他接觸並使用過諸如Pascal、C、 Fortran等語言。這些語言的基本設計原則是讓機器能更快運作。在80年代,雖然IBM和蘋果已經掀起了個人電腦浪潮,但這些個人電腦的配置很低 (在今天看來)。例如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的陣列就能佔滿記憶體。所有的編譯器的核心是做最佳化,以便讓程式能夠運作。為了增進效率,語言也迫使程式設計師像電腦一樣思考,以便能寫出更符合機器口味的程式。在那個時代,程式設計師恨不得用手榨取電腦每一寸的能力。有人甚至認為C語言的指標在浪費記憶體。至於動態類型,記憶體自動管理,物件導向…… 別想了,那會讓你的電腦陷入癱瘓。

 

然而,這種思考方式讓Guido感到苦惱。 Guido知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間 (即使他已經準確的知道瞭如何實現)。他的另一個選擇是shell。 Bourne Shell作為UNIX系統的解譯器(interPReter)已經長期存在。 UNIX的管理員常常用shell去寫一些簡單的腳本,以進行一些系統維護的工作,例如定期備份、檔案系統管理等等。 shell可以像膠水一樣,將UNIX下的許多功能連接在一起。許多C語言下上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質是呼叫命令。它並不是一個真正的語言。比如說,shell沒有數值型的資料型態,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。

(關於shell,你可以參考linux架構和Linux命令行與命令)

 

Guido希望有一種語言,這種語言能夠像C語言那樣,能夠全面調用計算機的功能接口,又可以像shell那樣,可以輕鬆的程式設計。 ABC語言讓Guido看到希望。 ABC是由荷蘭的CWI (Centrum Wiskunde & Informatica, 數學和計算機研究所)開發的。 Guido在CWI工作,並參與到ABC語言的發展。 ABC語言以教學為目的。與當時的大部分語言不同,ABC語言的目標是「讓使用者感覺更好」。 ABC語言希望讓語言變得容易閱讀,容易使用,容易記憶,容易學習,並以此來激發人們學習程式設計的興趣。例如以下是一段來自Wikipedia的ABC程序,這個程式用來統計文字中出現的字(Word)的總數:

 

HOW TO RETURN words document:

      FOR word IN split line:

         IF word not.in 

   RETURN collection

   

 

HOW TO用來定義一個函數。一個Python程式設計師應該很容易理解這段程式。 ABC語言使用冒號(:)和縮排表示程式區塊(C語言使用{}來表示程式區塊)。行尾沒有分號。 for和if結構中也沒有括號()。如果將HOW TO改為def,將PUT行改為collection = [],將INSERT行改為collection.append(word),這幾乎是一個標準的Python函數。上面的函數讀起來就像一段自然的文字。

 

儘管已經具備了良好的可讀性和易用性,ABC語言最終沒有流行起來。在當時,ABC語言編譯器需要比較高配置的電腦才能運作。而這些電腦的使用者通常精通計算機,他們更考慮程式的效率,而不是它的學習難度。除了硬體上的困難外,ABC語言的設計也存在一些致命的問題:

可拓展性差。 ABC語言不是模組化語言。如果想在ABC語言中增加功能,例如對圖形化的支持,就必須改變很多地方。

不能直接進行IO。 ABC語言不能直接操作檔案系統。儘管你可以透過諸如文字流的方式匯入數據,但ABC無法直接讀寫檔案。輸入輸出的困難對於電腦語言來說是致命的。你能想像一個打不開車門的跑車麼?

過度革新。 ABC用自然語言的方式來表達程序的意義,例如上面程式中的HOW TO (如何)。然而對於程式設計師來說,他們更習慣用function或define來定義一個函數。同樣,程式設計師也習慣了用等號(=)來分配變數。這儘管讓ABC語言顯得特別,但實際上增加了程式設計師的學習難度 (程式設計師大都掌握不只一種語言)。

傳播困難。 ABC編譯器很大,必須保存在磁帶(tape)上。當時Guido在訪問的時候,就必須有一個大磁鐵來為別人安裝ABC編譯器。 這樣,ABC語言就很難快速傳播。

Python快速教學(補充篇04):Python簡史

IBM tape drive:讀寫磁帶

 

1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯/解釋器。 Python來自Guido所摯愛的電視劇Monty Python’s Flying Circus (BBC1960-1970年代播放的室內情境幽默劇,以當時的英國生活為素材)。他希望這個新的叫做Python的語言,能實現他的理念(一種C和shell之間,功能全面,易學易用,可拓展的語言)。 Guido作為一個語言設計愛好者,已經有過設計語言的(不很成功)的嘗試。這一次,也不過是一次純粹的hacking行為。

 

Python的誕生

1991年,第一個Python編譯器(同時也是解釋者)誕生。它是用C語言實作的,並且能夠呼叫C函式庫(.so檔)。從一出生,Python已經具有了:類別(class),函數(function),異常處理(exception),包括表(list)和字典(dictionary)在內的核心資料類型,以及模組(module)為基礎的拓展系統。

Python快速教學(補充篇04):Python簡史

最初的Python logo: 由Guido的兄弟Just von Rossum設計

Python語法很多來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規定直到今天還富有爭議,例如強制縮排。但這些文法規定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例(特別是C語言的慣例)。例如使用等號賦值,使用def來定義函數。 Guido認為,如果「常識」上建立的東西,就沒有必要過度糾結。

Python從一開始就特別在意可拓展性(extensibility)。 Python可以在多個層次拓展。從高層上,你可以引入.py檔。在底層,你可以引用C語言的函式庫。 Python程式設計師可以快速的使用Python寫.py檔作為拓展模組。但當性能是考慮的重要因素時,Python程式設計師可以深入底層,寫C程序,編譯為.so檔引入到Python中使用。 Python就好像是使用鋼建造房一樣,先規定好大的框架。而程式設計師可以在此框架下相當自由的拓展或更改。

最初的Python完全由Guido本人開發。 Python得到Guido同事的歡迎。他們迅速的回饋使用意見,並參與Python的改進。 Guido和一些同事組成Python的核心團隊。他們將自己大部分的業餘時間用於hack Python (也包括工作時間,因為他們將Python用於工作)。隨後,Python拓展到CWI以外。 Python將許多機器層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的程式思考。 Python程式設計師可以花更多的時間用於思考程式的邏輯,而不是具體的實作細節 (Guido有一件T卹,寫著:人生苦短,我用Python)。這項特徵吸引了廣大的程式設計師。 Python開始流行。

 

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

Python快速教學(補充篇04):Python簡史

Windows 3.0

由於電腦效能的提高,軟體的世界也開始隨之改變。硬體足以滿足許多個人電腦的需求。硬體廠商甚至渴望高需求軟體的出現,以帶動硬體的更新換代。 C++和java相繼流行。 C++和Java提供了物件導向的程式設計範式,以及豐富的物件函式庫。在犧牲了一定的效能的代價下,C++和Java大大提高了程式的產量。語言的易用性被提到一個新的高度。我們還記得,ABC失敗的一個重要原因是硬體的效能限制。從這方面說,Python要比ABC幸運許多。

另一個悄悄發生的改變是Internet。 1990年代還是個人電腦的時代,windows和Intel挾PC以令天下,盛極一時。儘管Internet為主體的資訊革命尚未到來,但許多程式設計師以及資深電腦使用者已經在頻繁使用Internet進行交流 (包括email和newsgroup)。 Internet讓資訊交流成本大為下降。新的軟體開發模式開始流行:開源 (open source)。程式設計師利用業餘時間進行軟體開發,並開放原始碼。 1991年,Linus在comp.os.minix新聞群組上發布了Linux內核原始碼,吸引大批hacker的加入。 Linux和GNU相互合作,最終構成了一個充滿活力的開源平台。

 

硬體效能不是瓶頸,Python又容易使用,所以許多人開始轉向Python。 Guido維護了一個maillist,Python用戶就透過郵件交流。 Python使用者來自許多領域,有不同的背景,對Python也有不同的需求。 Python相當的開放,又容易拓展,所以當使用者不滿足於現有功能,很容易對Python進行拓展或改造。隨後,這些使用者將改動發給Guido,並由Guido決定是否將新的特徵加入Python或標準庫。如果程式碼能被納入Python本身或標準函式庫,這將極大的榮譽。 Python自身也因此變得更好。

(Guido不得不作出許多決定,這也是他被稱為Benevolent Dictator For Life的原因)

Python被稱為“Battery Included”,是說它以及其標準庫的功能強大。這些都是整個社區的貢獻。 Python的開發者來自不同領域,他們將不同領域的優點帶給Python。例如Python標準函式庫中的正規表示(regular expression)是參考Perl,而lambda, map, filter, reduce函數參考Lisp。 Python本身的一些功能以及大部分的標準函式庫來自社群。 Python的社群不斷擴大,進而擁有了自己的newsgroup,網站(python.org),以及基金 (Python Software Foundation)。從Python 2.0開始,Python也從maillist的開發方式,轉為完全開源的開發方式。社區氣氛已經形成,工作被整個社區分擔,Python也獲得了更高速的發展。

(由於Guido享有絕對的仲裁權,所以在Python早期maillist的開發時代,不少愛好者相當擔心Guido的生命。他們甚至作出假設:如果Guido掛了的話,Python會怎樣。見If Guido was hit by a bus)

到今天,Python的框架已經確立。 Python語言以物件為核心組織程式碼(Everything is object),支援多種程式設計範式(multi-paradigm),採用動態類型(dynamic typing),自動進行記憶體回收(garbage collection)。 Python支援解釋運行(interpret),並能呼叫C函式庫進行拓展。 Python有強大的標準函式庫 (battery included)。由於標準函式庫的系統已經穩定,所以Python的生態系開始拓展到第三方包。這些包,如Django, web.py, wxpython, numpy, matplotlib,PIL,將Python升級成了物種豐富的熱帶雨林。

 

今天Python已經進入3.0的時代。由於Python 3.0向後不相容,所以從2.0到3.0的過渡並不容易。另一方面,Python的效能依然值得改進,Python的運算效能低於C++和Java(請參閱Google的討論)。 Python依然是發展中的語言。我期待看到Python的未來。

 

Python啟示錄

Python崇尚優美、清晰、簡單,是一個優秀且廣泛使用的語言(TIOBE語言排行第八,Google的第三大開發語言,Dropbox的基礎語言,豆瓣的伺服器語言) 。這個世界並不缺乏優秀的語言,但Python的發展史作為一個代表,帶給我許多啟示。

在Python的開發過程中,社群扮演了重要的角色。 Guido自認為自己不是全能型的程式設計師,所以他只負責訂製框架。如果問題太複雜,他會選擇繞過去,也就是cut the corner。這些問題最終由社區中的其他人解決。社區中的人才是異常豐富的,就連創建網站,籌集基金這樣與開發稍遠的事情,也有人樂意處理。現今的專案開發越來越複雜,越來越龐大,合作以及開放的心態成為專案最終成功的關鍵。

Python從其他語言中學到了很多,無論是已經進入歷史的ABC,還是仍然在使用的C和Perl,以及許多沒有列出的其他語言。可以說,Python的成功代表了它所有藉鏡的語言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個語言都是混合體,都有它優秀的地方,但也有各種不同的缺陷。同時,一個語言「好與不好」的評判,往往受制於平台、硬體、時代等等外在原因。程式設計師經歷過許多語言之爭。我想,為什麼不以開放的心態和客觀的分析,去區分每個語言的具體優點和缺點,去區分內在和外在的因素。說不定哪一天發現,我不喜歡的某個語言中,正包含了我所需要的東西。

無論Python未來的命運如何,Python的歷史已經是本很有趣的小說。

 


 以上就是Python快速教學(補充篇04):Python簡史的內容,更多相關內容請關注PHP中文網(www.php.cn)!



陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web應用程序中的數據庫MySQL的角色:Web應用程序中的數據庫Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

mysql:構建您的第一個數據庫mysql:構建您的第一個數據庫Apr 17, 2025 am 12:22 AM

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL:一種對數據存儲的初學者友好方法MySQL:一種對數據存儲的初學者友好方法Apr 17, 2025 am 12:21 AM

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

See all articles

熱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尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Mac版

SublimeText3 Mac版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中