微机原理和计算机组成原理一样吗_计算机组成原理:计算机的层次与编程语言...
計(jì)算機(jī)基礎(chǔ)方面的知識,對于一些非科班出身的同學(xué)來講,一直是他們心中的痛,而對于科班出身的同學(xué),很多同學(xué)在工作之后,也意識到自身所學(xué)知識的不足與欠缺,想回頭補(bǔ)補(bǔ)基礎(chǔ)知識。關(guān)于計(jì)算機(jī)基礎(chǔ)的課程很多,內(nèi)容繁雜,但無論是相關(guān)書籍還是大學(xué)課程,都有點(diǎn)脫離工作。特別地,計(jì)算機(jī)基礎(chǔ)知識體系龐雜,想要從零學(xué)習(xí)或者復(fù)習(xí)都耗時(shí)耗力。
有鑒于此,本系列文章將帶你更快的補(bǔ)足編程必備基礎(chǔ)知識,涵蓋計(jì)算機(jī)領(lǐng)域三大基礎(chǔ)知識:計(jì)算機(jī)組成原理、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò),這些都是大學(xué)計(jì)算機(jī)課程里面最重要的內(nèi)容。文章對這些內(nèi)容做了提煉和總結(jié),摒棄了作為程序員不需要掌握的知識。
目的是:
- 幫助大家形成計(jì)算機(jī)知識的結(jié)構(gòu)體系
- 幫助大家理解計(jì)算機(jī)底層原理
- 幫助大家在工作實(shí)踐中借鑒其中的優(yōu)秀設(shè)計(jì)
本篇是計(jì)算機(jī)組成原理之計(jì)算機(jī)的層次與編程語言。
歷史好文:
計(jì)算機(jī)組成原理:計(jì)算機(jī)的發(fā)展歷史
計(jì)算機(jī)組成原理:計(jì)算機(jī)的分類
計(jì)算機(jī)組成原理:計(jì)算機(jī)的體系與結(jié)構(gòu)
歡迎關(guān)注、轉(zhuǎn)發(fā)、收藏、評論
程序翻譯與程序解釋
計(jì)算機(jī)是無法直接理解人類語言的,它只認(rèn)識01010101...這樣的比特位,因此,我們需要進(jìn)行程序翻譯或程序解析,把人類語言翻譯或解析成計(jì)算機(jī)所能理解的語言。
那么程序翻譯和程序解析這兩者之間有什么區(qū)別和聯(lián)系呢?為了理解問題,我們引入兩個(gè)語言,一個(gè)是較為高級的計(jì)算機(jī)語言——L1,另一個(gè)是較為低級的計(jì)算機(jī)語言——L0,我們接下來會使用這兩個(gè)語言作為例子來理解什么是程序翻譯,什么是程序解析。
程序翻譯
假設(shè)我們現(xiàn)在使用較為高級的計(jì)算機(jī)語言L1來進(jìn)行程序的邏輯描述,也就是說我們使用L1來編寫程序,那么這個(gè)由L1編寫的程序是怎么樣執(zhí)行的呢?當(dāng)然了,它不是直接執(zhí)行的,而是在執(zhí)行的時(shí)候生成一個(gè)邏輯等價(jià)的由低級語言L0組成的程序,這個(gè)L0是計(jì)算機(jī)實(shí)際執(zhí)行的語言,那么由L1生成L0這個(gè)過程,我們稱之為程序翻譯,用于生成L0的工具叫編譯器。
程序翻譯過程
程序解析
同樣的,假如我們使用L1來進(jìn)行程序的邏輯描述,那么這個(gè)由L1編寫的程序是怎樣執(zhí)行的呢?為了執(zhí)行L1,我們還需要使用L0實(shí)現(xiàn)另外一個(gè)程序,這個(gè)程序把L1程序作為輸入來進(jìn)行執(zhí)行,每一句L1程序會在L0所實(shí)現(xiàn)的程序里面進(jìn)行等價(jià)的轉(zhuǎn)換,然后執(zhí)行,這就是程序的解析,其中,使用L0實(shí)現(xiàn)的程序叫做解釋器。
程序解釋的過程
簡要的總結(jié)程序翻譯和程序解析:
理解了程序翻譯和程序解釋,我們來看下常見的編程語言,哪些語言是翻譯型語言,哪些是解釋型語言,如下圖:
翻譯型語言和解釋型語言
對于常見的,我們還有Java和C#,它們又屬于哪種語言呢?其實(shí),嚴(yán)格的來說,它們既不屬于翻譯型語言,也不屬于解釋型語言,它們是屬于翻譯+解釋型語言。
如何理解翻譯+解釋型語言呢?以Java程序的運(yùn)行過程為例,Java程序首先會被編譯器編譯成JVM字節(jié)碼,然后會通過解釋器解釋成機(jī)器碼,從而被計(jì)算機(jī)執(zhí)行。
計(jì)算機(jī)的層次與編程語言
按層次來劃分計(jì)算機(jī)系統(tǒng)的話,我們可以劃分成七個(gè)層次。
計(jì)算機(jī)的層次
下面逐一介紹每一層。
硬件邏輯層:主要由門電路、觸發(fā)器等邏輯電路組成,屬于電子工程的領(lǐng)域,這里就不展開介紹了。
微程序機(jī)器層:編程語言主要是微指令集,微指令所組成的微程序直接交由硬件執(zhí)行,主要是由生產(chǎn)硬件的公司的程序員來編寫的。
傳統(tǒng)機(jī)器層:編程語言主要是CPU指令集(機(jī)器指令),和硬件是直接相關(guān)的,程序員所用機(jī)器指令編寫的程序可以交由微程序直接進(jìn)行解析,而這里提到的指令集,存儲在CPU內(nèi)部,對CPU的運(yùn)算進(jìn)行指導(dǎo)和優(yōu)化,擁有指令集,CPU就可以有效地運(yùn)行。我們知道,CPU的制造商分為AMD和Intel兩大陣營,那么這兩大廠商生產(chǎn)的CPU最大的區(qū)別是——指令集不同,Intel的CPU所使用的指令集不適合AMD的CPU,同樣的,AMD的CPU所使用的指令集也不適合Intel。除了不同廠商以后,同一個(gè)廠商也可以生產(chǎn)不同指令集的CPU,即不同架構(gòu)的CPU使用不同的CPU指令集。
微指令、微程序、機(jī)器指令的概念
操作系統(tǒng)層:操作系統(tǒng),一方面,向上提供了簡易的操作界面,使得用戶能夠容易地操作計(jì)算機(jī);同時(shí),向下對接了指令系統(tǒng),管理硬件資源。操作系統(tǒng)對用戶程序所使用機(jī)器的各種資源進(jìn)行管理和分配,包括CPU、存儲器等等,比如說,當(dāng)一個(gè)用戶程序需要運(yùn)行的時(shí)候,首先由操作系統(tǒng)將其加載到內(nèi)存中,這就需要操作系統(tǒng)首先為其分配內(nèi)存空間來進(jìn)行存儲。再比如說,某一個(gè)程序需要使用某一個(gè)輸出設(shè)備進(jìn)行結(jié)果輸出的時(shí)候,需要操作系統(tǒng)為其提供該設(shè)備的控制權(quán)。由此可見,操作系統(tǒng)是在軟件和硬件之間的適配層。
匯編語言層:編程語言是匯編語言,匯編語言可以翻譯成可直接執(zhí)行的機(jī)器語言,完成這個(gè)翻譯過程的程序就是匯編器。從這一層開始,它們所使用的編程語言就是人類比較容易理解的語言了。
高級語言層:編程語言就是為廣大程序員所接受的高級語言,種類非常多,由幾百種,常見的編程語言有Python、Java、C/C++、Golang等。
應(yīng)用層:計(jì)算機(jī)針對某種用途而設(shè)計(jì)的應(yīng)用,像Word、Excel等。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的微机原理和计算机组成原理一样吗_计算机组成原理:计算机的层次与编程语言...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux打开pythonshall,l
- 下一篇: 提高篇 第四部分 数据结构 第2章 RM