雖然之前知道計算機裏有CPU,內存,硬盤,顯卡這麼些東西,我還真不知道這些東西是怎麼協做起來完成一段程序的,能寫出程序卻不懂程序,也不會向別人解釋他們的關係,因此特地總結了一下,寫的比較淺顯,和我同樣是菜鳥或小白的人能夠看一看,解釋的角度是從徹底不懂的人的角度來考慮的。程序員
首先程序是什麼?程序和咱們的電腦硬件CPU,內存,硬盤,到底有什麼關係?翻譯
程序是指一套作事的流程,好比村裏召開婦女大會的流程,可能就是先找好開會場地,而後通知領導和婦女,安排領導講話等等。計算機指的程序也差很少,也是一套作事的流程,只不過計算機只能讀懂他們所理解字符,咱們開會的流程是經過人與人之間的協做完成,計算機的程序跑起來是經過硬件的協做完成。內存
在這裏咱們先作一個比喻,假設CPU,內存,硬盤等這些東西都是來自一個星球的外星人,既然是外星人,固然不懂咱們地球人的語言啊,並且這些外星人有一個特色,他們只有一隻手,且手上只有一根手指,每次算數的時候,由於要靠手指來計數,咱們的10進制數字,他們一根手指根本不夠用啊,這就和咱們小時候數到11就得借用腳趾頭同樣,因此他們來計算咱們地球人的數字時就須要借用不少小夥伴手來表示一個大於2的數字,這個就是他們的2進制。編譯器
如今知道了CPU,內存,硬盤的特殊算數方式,咱們來進一步來看看他們之間的協做,他們是怎麼完成咱們人類的要求的。編譯
首先每一個人都有本身擅長的東西,計算機星球的這幾個小夥伴也是,各有各的屬性,CPU這我的最聰明,算數最快,缺點就是記不住太多東西,算完的東西不存起來就忘了,因此須要別人協助記流程數據。再看看硬盤,硬盤體格最大,記性好(雖然慢點),因此他被分配了一個任務,那就是記住咱們地球人分配的各類無聊的流程數據(什麼開會的流程啊,請那些人啊,這些人的電話號碼多少啊等等),可是呢因爲硬盤反應慢,cpu並不想直接和硬盤打交道,而後再看看內存, 內存比硬盤小不少,反應比硬盤快好多倍,可是就是記的東西有點少,並且沒電的時候就罷工,把東西忘的一乾二淨 ,但由於反應快,且記的東西比本身多,cpu決定和內存直接打交道要流程數據。效率
這樣咱們就能夠一次性把不少任務的流程寫好堆給硬盤兄,什麼開會的流程啊,查看天氣預報的流程啊,給女友打電話的流程啊通通提早寫好塞給硬盤,而後當咱們須要計算機完成一個任務時,內存從硬盤那把這個任務的流程全都要過來,此時的程序是一堆的指令集(作事的流程),cpu從內存逐條要指令,一條指令計算調度一次,每完成一個步驟後都要內存幫忙翻到相應的地方,看這個流程下一步要求是什麼,從頭至尾一路算完,這樣他們就完成了計算機程序。硬件
剛剛咱們提到了程序員這個角色,那爲何他們寫的東西,計算機星球的這些外星人能聽懂呢?明明剛剛說的計算機星球的這些人只懂0和1嘛,程序員寫的好歹也是英文嘛,難道,計算機星球的外星人懂英文?他們固然不懂,程序員理論上寫好計算機能直接讀懂的01代碼是能夠的,可是程序員若是每次都要把程序直接轉寫成01代碼勢必會大大下降寫程序的效率,並且每一個程序員要從底層這麼深刻了解計算機語言也會很是費時間,因此早期的程序員大神乾脆寫了個翻譯程序,這個程序也叫編譯器,這個編譯器能夠專門把一門特定的語言轉成機器能讀懂的計算機語言,這樣有了這個麼翻譯,後來的程序員寫程序就會輕鬆不少,能夠直接寫上地球程序員方便閱讀的代碼,因此咱們應該感謝發明編譯器的人,他們讓人類世界和計算機世界交流變得更便捷了。程序
以上只是大概介紹了下計算機cpu,內存,硬盤和程序的關係,用了些可能不算好的比喻,若有紕漏和不正確的地方,望指正。總結