您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python計算機組成是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
??計算機已經成為我們這個時代的核心設備,我們無時無刻都需要它。它也已經不是人們印象中的臺式機、服務器,已經演變成了我們身邊的任何物體,如手機、平板電腦和筆記本,以及很多人主觀上沒有意識到,但實際設備內部確實包含“計算機”的設備,如電視機、微波爐、汽車,甚至小孩玩的智能機器人等。毫不夸張地說,計算機已經成為人身體的延伸,大腦的延伸,成為不可或缺的一部分。未來,計算機將真的進入人體、進入大腦,真正成為人體的一部分。比如,在科幻電影《黑客帝國》中的主角被超級針頭插在頸部后方便可以實現快速學習,改變大腦神經網絡,幾秒成為功夫高手。計算機,俗稱電腦(Computer),用于高速計算的電子機器,是20世紀最偉大的科學技術發明之一,可以進行數值計算和邏輯判斷,同時還具有存儲記憶和數據處理的功能。一個完整的計算機系統由硬件系統和軟件系統組成,如下圖所示:
??硬件系統主要可以分為主機和外設,是指構成計算機系統的物理實體,它們主要由各種各樣的電子器件和機電裝置組成。從ENIAC
(世界上第一臺計算機)到目前最先進的電腦,硬件系統的設計采用的都是馮·諾依曼
體系結構,如下所示:
運算器: 負責數據的算術運算和邏輯運算,即數據的加工處理;
控制器: 計算機的中樞神經,協調計算機各部分組件工作以及內存和外設的訪問;
其中:運算器和控制器統稱為中央處理器,即CPU
存儲器: 實現記憶功能的部件,用來存儲程序、數據、命令和各種信號等信息,并在需要時提供這些信息;
輸入設備: 實現將程序、原始數據、文字、字符、控制命令或現場采集的數據等信息輸入到計算機中;
輸出設備: 實現將計算機處理后生成的中間結果或最終結果輸出,包括各種數據符號、文字和控制信號等信息;
??軟件系統主要可以分為系統軟件和應用軟件,是指保證計算機正常運行所需的各種程序,是我們編程實踐的主要對象,組成如下:
系統軟件: 保證計算機硬件的正常工作和性能得到發揮,并且為計算機用戶提供一個直觀、友好和方便的使用界面。
操作系統: 方便用戶控制和管理計算機軟硬件資源的系統軟件,功能復雜,是所有軟件正常運行的基礎和核心;
編譯程序: 也叫語言處理程序,作用是把程序員使用各種編程語言,如Java和Python等所編寫的程序,翻譯成計算機可執行的機器語言。
應用軟件: 應用軟件是計算機為滿足不同用戶的需求而提供的那部分軟件,它可以拓寬計算機系統的應用領域,方法硬件的性能。
社交辦公類: 微信、QQ、WPS、騰訊會議、釘釘、陌陌等;
休閑娛樂類: QQ音樂、騰訊視頻、Steam、歡樂斗地主等;
??機器語言也叫機器碼,是可以通過
CPU
進行分析和執行的指令集。計算機只能識別0和1的機器碼,不能接收類似于漢語、英語或其它的人類語言。因此,為了實現人類和計算機的交互,各種編程語言應運而生,如C++、Java、PhP和Python等。
分析: 計算機可以直接識別下面這段Python代碼嗎?
""" 分析:在控制臺輸出以下Python代碼,計算機可以直接處理嗎? """print("Hello world!") # print()為Python中的內置函數,主要用于輸出括號內的內容,類似于Java中的System.out.println("Hello world!")
??顯然,上述代碼主要由英文字母和標點符號組成,但前面已經說過,計算機只能識別機器碼(0和1),即它本身壓根就不認識這段代碼。
??那么,我們是如何通過代碼控制計算機進行工作的?
??人機交互的過程就像一個當地人與一個外國人進行交流時一樣,如果雙方想要理解彼此的想法,就需要一個中間介質,它可以通過某種方式把對方的語言轉換成自己可以理解的語言,反之亦然。因此,計算機如果想要理解我們編寫的代碼,就需要將其轉換為自己可以識別的機器碼,而根據轉換過程,編程語言又被分為編譯型和解釋型。
編譯型: 編譯型語言可以直接將代碼轉為計算機可以識別并執行的機器碼,如C++
。
解釋型: 解釋型語言先將代碼轉換為字節碼,然后再將其翻譯成計算機可識別的機器碼,如Python
。
用戶打開程序,程序開始執行;
操作系統將程序內容和相關數據送入計算機內存;
CPU根據程序內容從內存中讀取指令;
CPU分析、處理指令,并為下一條指令做好準備;
讀取下一條指令分析并處理,如此循環往復直至處理完程序中的全部指令,最后將計算結果放入指令指定的存儲器地址中;
?? 算法是計算機的靈魂,而編程語言是使得計算機具有靈魂的工具。伴隨著計算機硬件的發展,計算機編程語言也歷經了從低級到高級的演變,而每一次改變的核心思想就是“讓人更容易編程”。計算機硬件的速度越快、體積越小、成本越低,應用到人類社會的場景就會越多,那么所需要的算法就會越復雜,也就要求計算機編程語言越高級。最初重達幾十噸但一秒只能運算5000次的ENIAC,只能做非常小的應用,如彈道計算。如今,任何一個人的手機運算能力都可以秒殺那個年代地球上所有計算機運算能力的總和。越容易使用的語言,就有越多人使用;越多人使用,就有越多人協作;越多人協作,就可以創造越復雜的物體。現代社會,一個軟件動輒幾十或幾百人、甚至幾千人協作也成為可能,這自然就為開發復雜軟件提供了“人力基礎”。這是一個人類普遍的社會現象,越容易使用的工具,通過使用數量,通過大量人的協作,徹底改變某個行業甚至人類社會。未來三十年必將是軟件人才的世界,除普通軟件,大量人工智能軟件,如自動駕駛、機器人保姆以及機器人女友都會進入我們的生活,甚至計算機技術和基因工程結合以實現長生不老,感興趣的可以閱讀一下《未來簡史: 從智人到智神》。
機器語言: 相當于人類的的原始階段;
??機器語言由數字組成所有指令。當讓你使用數字編程,寫幾百個數字、甚至幾千個數字,每天面對的是純數字,可以大膽預測:“程序員群體100%會有精神問題”。機器語言通常由數字串組成(最終被簡化成二進制0和1),對于人類來說,機器語言過于繁瑣。使用機器語言,人類無法編出復雜的程序。
匯編語言: 相當于人類的手工業階段;
??為了編程的方便,以及解決更加復雜的問題,程序員開始改進機器語言,使用英文縮寫的助記符(單詞)來表示基本的計算機操作。這些助記符構成了匯編語言的基礎,如: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語言的指針是在浪費內存。至于動態類型,內存自動管理,面向對象…… 別想了,那會讓你的電腦陷入癱瘓。
Shell: 本質是調用命令,它不是一個真正的語言;
??這種編程方式讓吉多感到苦惱。吉多知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間,即使他已經準確的知道了如何實現。他的另一個選擇是shell。Bourne Shell
作為UNIX系統
的解釋器已經長期存在。UNIX的管理員們常常用shell去寫一些簡單的腳本,以進行一些系統維護的工作,比如定期備份、文件系統管理等等。shell可以像膠水一樣,將UNIX系統下的許多功能連接在一起。許多C語言上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質是調用命令,它并不是一個真正的語言。例如,shell沒有數值型的數據類型,加法運算都很復雜。總之,shell不能全面調動計算機的功能。
ABC語言: 可讀易用,弊端明顯;
??吉多希望有一種語言,這種語言能夠像C語言那樣,能夠全面調用計算機的功能接口,又可以像shell那樣,可以輕松的編程。ABC語言讓吉多看到希望。ABC是由荷蘭的數學和計算機研究所開發的。吉多在該研究所工作,并參與到ABC語言的開發。ABC語言以教學為目的。與當時的大部分語言不同,ABC語言的目標是“讓用戶感覺更好”。ABC語言希望讓語言變得容易閱讀、使用、記憶和學習,并以此來激發人們學習編程的興趣。
??然而,ABC語言編譯器需要很高的電腦配置才能運行,而這些電腦的使用者通常都精通電腦,所以他們更多的是關注程序的效率,而非它的學習難度。另一方面,如下致命的設計問題是它沒有流行起來的原因:
可擴展性差: ABC不是模塊化語言,如果想在其中增加功能,如對圖形化的支持,需要改動很多地方。
不能直接進行IO
: ABC不能直接操作文件系統,即不能直接讀寫數據。輸入輸出的困難對于計算機而言是致命的,你能想象一個不能打開車門的跑車嗎?
過度革新: ABC用自然語言的形式來表達程序的意義。例如,它使用How to
來定義一個函數,而對于程序員來說,他們更習慣用function
或define
。
傳播困難: ABC編譯器很大,必須保存在磁帶上,這也就意味著如果想要使用它,必須先準備一個大大的磁帶。
Python孕育與成長: 介于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某些方面的成功。每個語言都是混合體,都有它優秀的地方,但同時也有各種各樣的缺陷。同時,一個語言“好與不好”的評判,往往受制于平臺、硬件、時代等等外部原因,程序員經歷過許多語言之爭。
獲取Python設計哲學: 成功安裝Python軟件后(下一個專題),打開任意一個編輯環境鍵入import this
運行即可;
總結: 簡單優雅可擴展,實用扁平是關鍵,最佳方案only one???
優勢:
簡單易學可擴展: 閱讀一個良好的Python程序就像欣賞一篇優美的文章一樣,盡管它的要求非常嚴格,如強制縮進可提高代碼的可讀性。Python的這種偽代碼本質使得我們可以更多地關注于解決問題的邏輯而非搞明白語言本身,如我們無需過多關注諸如內存管理這樣的底層細節。如果我們希望一段關鍵代碼運行的更快(C要比Python快50倍以上)或希望某些算法不公開,可以把部分程序用C
或C++
語言編寫,然后在Python程序中進行調用。
免費開源可移植: Python是FLOSS(自由/開放源碼軟件)之一,也就是說我們可以自由地發布這個軟件的拷貝、閱讀它的源代碼 、對它做改動、把它的一部分用于新的自由軟件中。由于其開源本質,Python可移植在許多計算機平臺上,如Windows、Linux等。
面向對象: Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程序是由數據和功能組合而成的對象構建起來的。與其它的編程語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象編程,而封裝、繼承和多態三大特性則是它成"神"的關鍵。
動態語言: 動態語言,又稱為弱類型語言,是指變量在創建時不需聲明類型,具體類型根據指向的內存單元中的數據類型決定,即指向什么類型就是什么類型。相反,靜態語言(強類型語言),定義變量時需要聲明類型,變量指向的內存單元可存放的數據類型固定。例如,Python中定義一個整數變量為num = 10
,而在Java中則為int num = 10;
。總結:動態類型,指向可變,內存單元中的內容不可變;靜態類型,指向不可變,內容可變。
解釋型語言: 編譯型語言,如C++
寫的程序可以從源文件(C++語言)轉換到一個你的計算機使用的語言,即二進制代碼(0和1)。這個過程通過編譯器和不同的標記以及選項完成。當我們運行程序的時候,連接轉載器軟件把我們的程序從硬盤復制到內存中并且運行。而Python語言寫的程序不需要編譯成二進制代碼。我們可以直接從源代碼運行程序。在計算機內部,Python解釋器把源代碼轉換成稱為字節碼的中間形式,然后再把它翻譯成計算機使用的機器碼并運行。由于只需要把我們的Python程序拷貝到另外一臺計算機上,它就可以工作了,這也使得Python程序更加容易移植。
豐富的庫: 包括Python自帶的標準庫和第三方庫。其中Python的標準庫可以幫助我們處理各種工作,包括正則表達式、文檔生成、線程、數據庫、HTML、GUI等。這被稱作Python的“功能齊全”理念。除了標準庫以外,Python也支持安裝第三方庫,如wxPython、Twisted和Python圖像庫等。
缺點: Python語言非常完美,沒有明顯的短板和缺點。唯一的不足就是執行效率慢,而這個是解釋型語言所通有的,不過這一缺陷會隨著計算機硬件性能的不斷提升而弱化。
以上就是“Python計算機組成是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。