編程必備基礎知識|計算機組成原理篇(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

相關文章
相關標籤/搜索