編程必備基礎知識|計算機組成原理篇(04):計算機的層次與編程語言


計算機基礎方面的知識,對於一些非科班出身的同學來講,一直是他們心中的痛,而對於科班出身的同學,很多同學在工作之后,也意識到自身所學知識的不足與欠缺,想回頭補補基礎知識。關於計算機基礎的課程很多,內容繁雜,但無論是相關書籍還是大學課程,都有點脫離工作。特別地,計算機基礎知識體系龐雜,想要從零學習或者復習都耗時耗力。

有鑒於此,本系列文章將帶你更快的補足編程必備基礎知識,涵蓋計算機領域三大基礎知識:計算機組成原理、操作系統、計算機網絡,這些都是大學計算機課程里面最重要的內容。文章對這些內容做了提煉和總結,摒棄了作為程序員不需要掌握的知識。

目的是:

  • 幫助大家形成計算機知識的結構體系
  • 幫助大家理解計算機底層原理
  • 幫助大家在工作實踐中借鑒其中的優秀設計

本篇是計算機組成原理之計算機的層次與編程語言。

歡迎關注、轉發、收藏、評論

程序翻譯與程序解釋

計算機是無法直接理解人類語言的,它只認識01010101...這樣的比特位,因此,我們需要進行程序翻譯或程序解析,把人類語言翻譯或解析成計算機所能理解的語言。

那么程序翻譯和程序解析這兩者之間有什么區別和聯系呢?為了理解問題,我們引入兩個語言,一個是較為高級的計算機語言——L1,另一個是較為低級的計算機語言——L0,我們接下來會使用這兩個語言作為例子來理解什么是程序翻譯,什么是程序解析。

程序翻譯

假設我們現在使用較為高級的計算機語言L1來進行程序的邏輯描述,也就是說我們使用L1來編寫程序,那么這個由L1編寫的程序是怎么樣執行的呢?當然了,它不是直接執行的,而是在執行的時候生成一個邏輯等價的由低級語言L0組成的程序,這個L0是計算機實際執行的語言,那么由L1生成L0這個過程,我們稱之為程序翻譯,用於生成L0的工具叫編譯器。

程序解析

同樣的,假如我們使用L1來進行程序的邏輯描述,那么這個由L1編寫的程序是怎樣執行的呢?為了執行L1,我們還需要使用L0實現另外一個程序,這個程序把L1程序作為輸入來進行執行,每一句L1程序會在L0所實現的程序里面進行等價的轉換,然后執行,這就是程序的解析,其中,使用L0實現的程序叫做解釋器。

簡要的總結程序翻譯和程序解析:

  1. 對於前面的兩個例子而言,計算機執行的指令都是L0
  2. 翻譯過程生成新的L0程序,解釋過程不生成新的L0程序
  3. 解釋過程由L0編寫的解釋器去解釋L1程序

理解了程序翻譯和程序解釋,我們來看下常見的編程語言,哪些語言是翻譯型語言,哪些是解釋型語言,如下圖:

對於常見的,我們還有Java和C#,它們又屬於哪種語言呢?其實,嚴格的來說,它們既不屬於翻譯型語言,也不屬於解釋型語言,它們是屬於翻譯+解釋型語言。

如何理解翻譯+解釋型語言呢?以Java程序的運行過程為例,Java程序首先會被編譯器編譯成JVM字節碼,然后會通過解釋器解釋成機器碼,從而被計算機執行。

計算機的層次與編程語言

按層次來划分計算機系統的話,我們可以划分成七個層次。

下面逐一介紹每一層。

硬件邏輯層:主要由門電路、觸發器等邏輯電路組成,屬於電子工程的領域,這里就不展開介紹了。

微程序機器層:編程語言主要是微指令集,微指令所組成的微程序直接交由硬件執行,主要是由生產硬件的公司的程序員來編寫的。

傳統機器層:編程語言主要是CPU指令集(機器指令),和硬件是直接相關的,程序員所用機器指令編寫的程序可以交由微程序直接進行解析,而這里提到的指令集,存儲在CPU內部,對CPU的運算進行指導和優化,擁有指令集,CPU就可以有效地運行。我們知道,CPU的制造商分為AMD和Intel兩大陣營,那么這兩大廠商生產的CPU最大的區別是——指令集不同,Intel的CPU所使用的指令集不適合AMD的CPU,同樣的,AMD的CPU所使用的指令集也不適合Intel。除了不同廠商以后,同一個廠商也可以生產不同指令集的CPU,即不同架構的CPU使用不同的CPU指令集。

操作系統層:操作系統,一方面,向上提供了簡易的操作界面,使得用戶能夠容易地操作計算機;同時,向下對接了指令系統,管理硬件資源。操作系統對用戶程序所使用機器的各種資源進行管理和分配,包括CPU、存儲器等等,比如說,當一個用戶程序需要運行的時候,首先由操作系統將其加載到內存中,這就需要操作系統首先為其分配內存空間來進行存儲。再比如說,某一個程序需要使用某一個輸出設備進行結果輸出的時候,需要操作系統為其提供該設備的控制權。由此可見,操作系統是在軟件和硬件之間的適配層。

匯編語言層:編程語言是匯編語言,匯編語言可以翻譯成可直接執行的機器語言,完成這個翻譯過程的程序就是匯編器。從這一層開始,它們所使用的編程語言就是人類比較容易理解的語言了。

高級語言層:編程語言就是為廣大程序員所接受的高級語言,種類非常多,有幾百種,常見的編程語言有Python、Java、C/C++、Golang等。

應用層:計算機針對某種用途而設計的應用,像Word、Excel等。

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM