本篇文章為大家帶來了關於python的相關知識,其中主要介紹了包括程式運作機制和Python語言的誕生與發展史等相關問題,希望對大家有幫助。
推薦學習:python學習教學
## 計算機已經成為我們這個時代的核心設備,我們無時無刻都需要它。它也已經不是人們印像中的桌上型電腦、伺服器,已經演變成了我們身邊的任何物體,如手機、平板電腦和筆記本,以及很多人主觀上沒有意識到,但實際設備內部確實包含「電腦」的設備,如電視、微波爐、汽車,甚至是小孩玩的智慧機器人等。毫不誇張地說,電腦已經成為人身體的延伸,大腦的延伸,成為不可或缺的一部分。未來,電腦將真的進入人體、進入大腦,真正成為人體的一部分。例如,在科幻電影《駭客任務》中的主角被超級針頭插在頸部後方便可以實現快速學習,改變大腦神經網絡,幾秒鐘成為功夫高手。計算機,俗稱電腦(Computer),用於高速計算的電子機器,是20世紀最偉大的科學技術發明之一,可以進行數值計算和邏輯判斷,同時還具有存儲記憶和資料處理的功能。一個完整的電腦系統由硬體系統和軟體系統所組成,如下圖所示:
主機和周邊,是指構成電腦系統的物理實體,它們主要由各種各樣的電子裝置和機電裝置組成。從ENIAC(世界上第一台電腦)到目前最先進的電腦,硬體系統的設計採用的都是
馮諾依曼體系結構,如下所示:
系統軟體和應用軟體,是指保證電腦正常運作所需的各種程序,是我們程式設計實踐的主要對象,組成如下:
機器語言也叫機器碼,是可以透過
CPU
來分析和執行的指令集。電腦只能辨識0和1的機器碼,不能接收類似漢語、英語或其它的人類語言。因此,為了實現人類和電腦的交互,各種程式語言應運而生,如C 、Java、PhP和Python等。
分析: 電腦可以直接辨識下面這段Python程式碼嗎?
""" 分析:在控制台输出以下Python代码,计算机可以直接处理吗? """print("Hello world!") # print()为Python中的内置函数,主要用于输出括号内的内容,类似于Java中的System.out.println("Hello world!")
顯然,上述程式碼主要由英文字母和標點符號組成,但前面已經說過,電腦只能辨識機器碼(0和1),也就是它本身壓根就不認識這段程式碼。
那麼,我們是如何透過程式碼控制電腦進行工作的?
人機互動的過程就像一個當地人與一個外國人進行交流時一樣,如果雙方想要理解彼此的想法,就需要一個中間介質,它可以通過某種方式把對方的語言轉換成自己可以理解的語言,反之亦然。因此,電腦如果想要理解我們所寫的程式碼,就需要將其轉換為自己可以辨識的機器碼,而根據轉換過程,程式語言又被分為編譯型和解釋型。
C
。 Python
。 演算法是電腦的靈魂,而程式語言是使得電腦具有靈魂的工具。伴隨著電腦硬體的發展,電腦程式語言也經歷了從低階到高階的演變,而每一次改變的核心思想就是「讓人更容易編程」。電腦硬體的速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那麼所需的演算法就會越複雜,也就要求電腦程式語言越高階。最初重達幾十噸但一秒只能運算5000次的ENIAC,只能做非常小的應用,如彈道計算。如今,任何一個人的手機運算能力都可以秒殺那個年代地球上所有電腦運算能力的總和。越容易使用的語言,就有越多人使用;越多人使用,就有越多人協作;越多人協作,就可以創造越複雜的物件。現代社會,一個軟體動輒幾十或幾百人、甚至幾千人協作也成為可能,這自然就為開發複雜軟體提供了「人力基礎」。這是一個人類普遍的社會現象,越容易使用的工具,透過使用數量,透過大量人的協作,徹底改變某個產業甚至人類社會。未來三十年必將是軟體人才的世界,除了普通軟體,大量人工智慧軟體,如自動駕駛、機器人保姆以及機器人女友都會進入我們的生活,甚至電腦技術和基因工程結合以實現長生不老,感興趣的可以閱讀《未來簡史: 從智人到智神》。
LOAD、MOVE 之類,這樣人更容易記憶和使用。辨識成百上千個單詞,總比成百上千個數字,感覺會好很多。組合語言相當於人類的手工藝社會,需要技術極為純熟的工匠,但開發效率也非常低。雖然彙編語言能編寫高效率的程序,但是學習和使用都不是易事,而且很難調試。另一個複雜的問題,彙編語言以及早期的電腦語言
(Basic、Fortran等)沒有考慮結構化設計原則,而是使用
goto語句來作為
程式流程控制的主要方法。這樣做的後果是:一大堆混亂的調轉語句使得程式幾乎不可能被讀懂。對於那個時代的程式設計師,能讀懂上個月自己寫的程式碼都成為一種挑戰。即使這樣,彙編語言仍然應用於工業電子程式設計領域、軟體的加密解密、電腦病毒分析等。
對於簡單的任務,組合語言可以勝任。但是,隨著電腦的發展以及其漸漸滲透到了工作生活的方方面面,一些複雜的任務出現了,彙編語言就顯得力不從心(應該說是程式設計師使用彙編語言解決複雜問題出現了瓶頸)。於是,出現了高階語言,如C
、Java
等。語言越高級,越接近人的思維,使用就越方便。高階語言,尤其是物件導向的語言,如Java、Python
等,使得程式設計的難度和門檻越來越低。目前以及可預見的未來,電腦語言仍然處於「第三代高階語言」階段,高階語言允許程式設計師使用接近日常英語的指令來編寫程式。例如,實作一個簡單的任務:A B=C
, 使用機器語言、組合語言和高階語言的實作如下所示:
Python是一門動態資料類型、物件導向的詮釋語言,主要用於人工智慧的各個領域,如機器學習、爬蟲與資料分析、深度學習、電腦視覺等。
TIOBE程式語言排行榜:
Python的作者,Guido von Rossum
(吉多·範·羅蘇姆),荷蘭人。 1982年,吉多從阿姆斯特丹大學獲得了數學和電腦碩士學位。然而,儘管他算得上是一位數學家,但他更享受計算機帶來的樂趣。用他的話來說,雖然擁有數學和電腦雙料資質,他總是趨向於做電腦相關的工作,並熱衷於做任何和程式相關的事情。在那個時候,吉多接觸並使用過諸如Pascal、C、Fortran等語言。這些語言的基本設計原則是讓機器能更快運作。在80年代,雖然IBM和蘋果已經掀起了個人電腦(personal computer)浪潮,但這些個人電腦的配置很低。例如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個大的陣列就能佔滿記憶體。 所有的編譯器的核心是做最佳化,以便讓程式能夠運作。為了增進效率,語言也迫使程式設計師像電腦一樣思考,以便能寫出更符合機器口味的程式。在那個時代,程式設計師恨不得用手榨取電腦每一寸的能力。有人甚至認為C語言的指標在浪費記憶體。至於動態類型,記憶體自動管理,物件導向…… 別想了,那會讓你的電腦陷入癱瘓。
這種程式設計方式讓吉多感到苦惱。吉多知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間,即使他已經準確的知道如何實現。他的另一個選擇是shell。 Bourne Shell
作為UNIX系統
的解釋器已經長期存在。 UNIX的管理員常常用shell去寫一些簡單的腳本,以進行一些系統維護的工作,例如定期備份、檔案系統管理等等。 shell可以像膠水一樣,將UNIX系統下的許多功能連接在一起。許多C語言上百行的程序,在shell下方只用幾行就可以完成。然而,shell的本質是呼叫命令,它並不是一個真正的語言。例如,shell沒有數值型的資料型態,加法運算都很複雜。 總之,shell不能全面調動電腦的功能。
吉多希望有一種語言,這種語言能夠像C語言那樣,能夠全面呼叫電腦的功能接口,又可以像shell那樣,可以輕鬆的程式設計。 ABC語言讓吉多看到希望。 ABC是由荷蘭的數學和計算機研究所開發的。吉多在該研究所工作,並參與ABC語言的開發。 ABC語言以教學為目的。與當時的大部分語言不同,ABC語言的目標是「讓使用者感覺更好」。 ABC語言希望讓語言變得容易閱讀、使用、記憶和學習,並以此激發人們學習程式設計的興趣。
然而,ABC語言編譯器需要很高的電腦配置才能運行,而這些電腦的使用者通常都精通電腦,所以他們更多的是關注程式的效率,而不是它的學習難度。另一方面,以下致命的設計問題是它沒有流行起來的原因:
IO
: ABC不能直接操作檔案系統,也就是不能直接讀寫資料。輸入輸出的困難對於電腦而言是致命的,你能想像一個不能打開車門的跑車嗎?How to
來定義一個函數,而對於程式設計師來說,他們更習慣用function
或define
。 C
與Shell
之間的簡單易學、功能全面的語言;
1989年,為了打發聖誕節假期,吉多開始寫Python語言的編譯器。 Python這個名字,來自吉多所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:介於C和shell之間,功能全面,易學易用,可拓展的語言。吉多作為一個語言設計愛好者,已經有設計語言的嘗試。這一次,也不過是一次純粹的hacking行為。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並且能夠呼叫C語言的函式庫檔。從一出生,Python已經具有了:類,函數,異常處理,包含表和字典在內的核心資料類型,以及模組為基礎的拓展系統。 Python語法很多來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規定直到今天還富有爭議,例如強制縮排,但這些語法規定讓Python容易讀取。另一方面,Python聰明的選擇服從一些慣例,特別是C語言的慣例,例如恢復等號賦值。吉多認為,如果「常識」上確立的東西,就沒有必要過度糾結。 Python從一開始就特別在意可拓展性。 Python可以在多個層次拓展。 從高層上,你可以直接引入.py檔。在底層,你可以引用C語言的函式庫。 Python程式設計師可以快速的使用Python寫.py檔作為拓展模組。但當性能是考慮的重要因素時,Python程式設計師可以深入底層,寫C程序,編譯為.so檔引入到Python中使用。 Python就好像是使用鋼建造房一樣,先規定好大的框架,而程式設計師可以在此框架下相當自由的拓展或更改。
最初的Python完全由吉多本人開發。 Python得到吉多同事的歡迎。他們迅速的回饋使用意見,並參與Python的改進。吉多和一些同事構成Python的核心團隊。他們將自己大部分的業餘時間用於hack Python。隨後,Python拓展到研究所之外。 Python將許多技術層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的程式思考。因此,Python程式設計師可以花更多的時間用於思考程式的邏輯,而不是具體的實作細節。這項特質吸引了廣大的程式設計師,Python開始流行。電腦硬體越來越強大,Python又容易使用,所以許多人開始轉向Python。吉多維護了一個mail list,Python用戶就透過郵件進行交流。 Python使用者來自許多領域,有不同的背景,對Python也有不同的需求。 Python相當的開放,又容易拓展,所以當使用者不滿足於現有功能,很容易對Python進行拓展或改造。隨後,這些用戶將改動發給吉多,並由吉多決定是否將新的特徵加入Python或標準庫。 如果程式碼能被納入Python本身或標準函式庫,這將是極大的榮譽。由於吉多至高無上的決定權,他因此被稱為「終身的仁慈獨裁者」
。 2018年7月12日,在完成PEP(Python Enhancement Proposals)572後,吉多決定退出Python核心決策層。
Python以及其標準函式庫的功能強大,這些都是整個社群的貢獻。 Python的開發者來自不同領域,他們將不同領域的優點帶給Python。例如,Python標準函式庫中的正規表示式(Regular expression)是參考Perl,而lambda, map, filter, reduce等函數參考了Lisp。 Python本身的一些功能以及大部分的標準函式庫來自社群。 Python的社群不斷擴大,進而擁有了自己的newsgroup,網站,以及基金。 從Python 2.0開始,Python也從mail list的開發方式,轉為完全開源的開發方式。社區氣氛已經形成,工作被整個社區分擔,Python也獲得了更高速的發展。到今天,Python的框架已經確立。 Python語言以物件為核心組織程式碼,支援多種程式設計範式,採用動態類型,自動進行記憶體回收。 Python支援解釋運行,並能呼叫C函式庫進行拓展。 Python有強大的標準函式庫。由於標準函式庫的系統已經穩定,所以Python的生態系開始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級成了物種豐富的熱帶雨林。
Python崇尚優美、清晰、簡單,是個優秀且廣泛使用的語言。 Python在TIOBE排行榜中排行第八,它是Google的第三大開發語言,Dropbox的基礎語言,豆瓣的伺服器語言。 Python的發展史可以作為一個代表,帶給我們許多啟示。 在Python的開發過程中,社群扮演了重要的角色。吉多自認為自己不是全能型的程式設計師,所以他只負責訂製框架。如果問題太複雜,他會選擇繞過去,也就是cut the corner。這些問題最終由社區中的其他人解決。社區中的人才是異常豐富的,就連創建網站,籌集基金這樣與開發稍遠的事情,也有人樂意處理。現今的專案開發越來越複雜,越來越龐大,合作以及開放的心態將成為專案最終成功的關鍵。
Python從其他語言中學到了很多,無論是已經進入歷史的ABC,還是依然在使用的C和Perl,以及許多沒有列出的其他語言。可以說,Python的成功代表了它所有藉鏡的語言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。 每個語言都是混合體,都有它優秀的地方,但同時也有各種各樣的缺陷。同時,一個語言「好與不好」的評判,往往受制於平台、硬體、時代等等外在原因,程式設計師經歷過許多語言之爭。
import this
運行即可;
或
C 語言編寫,然後在Python程式中進行呼叫。
,而在Java中則為
int num = 10;。總結:動態類型,指向可變,記憶體單元中的內容不可變;靜態類型,指向不可變,內容可變。
寫的程式
可以從原始檔(C 語言)轉換到一個你的電腦使用的語言,即二進位代碼(0和1)。這個過程透過編譯器和不同的標記以及選項完成。當我們運行程式的時候,連接轉載器軟體把我們的程式從硬碟複製到記憶體並且運行。而Python語言寫的程式不需要編譯成二進位代碼。我們可以直接從原始碼運行程式。在電腦內部,Python解釋器把原始程式碼轉換成稱為字節碼的中間形式,然後再把它翻譯成電腦使用的機器碼並執行。由於只需要把我們的Python程式拷貝到另外一台電腦上,它就可以運作了,這也使得Python程式更容易移植。
以上是簡單介紹一下Python(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!