成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

第二章計(jì)算機(jī)編程

2.1 編程語(yǔ)言

創(chuàng)新互聯(lián)公司于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元迎江做網(wǎng)站,已為上家服務(wù),為迎江各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

  從本質(zhì)上來(lái)說(shuō),CPU只能運(yùn)行二進(jìn)制格式的指令,也就是CPU內(nèi)指令集限定的二進(jìn)制指令。

  如果讓程序員通過(guò)二進(jìn)制進(jìn)行編程,那就太困難了,很少有人能夠通過(guò)二進(jìn)制進(jìn)行編程。但是人類又需要很多人能夠進(jìn)行編程,所以必須讓編程代碼能夠接近人類所能理解的思維方式才行。所以編程語(yǔ)言有所謂高級(jí)語(yǔ)言和低級(jí)語(yǔ)言之分。

  一種編程語(yǔ)言離機(jī)器越近我們就說(shuō)它越低級(jí),離人越近我們就說(shuō)它越高級(jí)。高級(jí)并不是說(shuō)功能強(qiáng),也不是指性能強(qiáng)大,而是指它越接近于人類的自然語(yǔ)言。

  高級(jí)語(yǔ)言人類容易看懂了,但是計(jì)算機(jī)看不懂,所以要想使用高級(jí)語(yǔ)言寫的程序能夠在CPU中執(zhí)行,必須先將其轉(zhuǎn)換成CPU所能夠理解的二進(jìn)制指令。

第二章 計(jì)算機(jī)編程

  如圖所示,從機(jī)器到人之間通常有三層,分別為機(jī)器語(yǔ)言-->匯編語(yǔ)言(微碼語(yǔ)言)-->高級(jí)語(yǔ)言。

2.1.1 高級(jí)語(yǔ)言編寫的程序的執(zhí)行過(guò)程

  用高級(jí)語(yǔ)言編寫的程序要想執(zhí)行通常有2個(gè)過(guò)程:

    a) 把高級(jí)語(yǔ)言轉(zhuǎn)換成匯編語(yǔ)言(轉(zhuǎn)換成對(duì)應(yīng)的CPU芯片所支持的匯編語(yǔ)言)

    b) 把匯編語(yǔ)言轉(zhuǎn)換成對(duì)機(jī)器指令的調(diào)用

  如果是C語(yǔ)言,第一步我們稱之為編譯的過(guò)程。

  從高級(jí)語(yǔ)言轉(zhuǎn)換成匯編語(yǔ)言的過(guò)程取決于底層的CPU芯片是什么格式的。不同廠商所生產(chǎn)的不同型號(hào)的CPU是不一樣的。

2.1.2 編程語(yǔ)言的使用場(chǎng)景

  匯編語(yǔ)言(微碼編程):用于編寫系統(tǒng)中某些與硬件相關(guān)的特有代碼、驅(qū)動(dòng)程序開(kāi)發(fā)等

  高級(jí)語(yǔ)言C,C++:用于編寫系統(tǒng)級(jí)應(yīng)用、對(duì)性能要求非常高的應(yīng)用、驅(qū)動(dòng)程序開(kāi)發(fā)等

  高級(jí)語(yǔ)言java,python,php:用于開(kāi)發(fā)應(yīng)用程序

2.2 通用軟件

2.2.1 通過(guò)軟件的背景

  上面已經(jīng)說(shuō)過(guò),不同廠商生產(chǎn)的CPU,其內(nèi)含的指令集是不一樣的。同樣,一個(gè)程序在512M內(nèi)存中運(yùn)行和在4G內(nèi)存中運(yùn)行,其所能夠使用的內(nèi)存資源也是不一樣的。因此寫程序時(shí)必須要告訴程序有多少內(nèi)存資源可以用,任何一個(gè)程序員寫任何一個(gè)程序都要考慮底層的機(jī)器是誰(shuí),是什么廠商的芯片,運(yùn)行的速度如何,擁有多少資源等等。寫一個(gè)程序是512M內(nèi)存的,就只能在512M內(nèi)存的機(jī)器上運(yùn)行,稍微換一個(gè)就不行了。這是非常麻煩的,因此,我們要達(dá)到靈活使用的目的,就必須將這些底層的差異給消除。那么如何消除這些底層的差異呢?

  比如我們要去很多個(gè)國(guó)家旅游,每個(gè)國(guó)家的語(yǔ)言都不一樣,若想獨(dú)自旅行就要學(xué)多種語(yǔ)言,若我們不會(huì)這些國(guó)家的語(yǔ)言就可以找個(gè)懂這些國(guó)家語(yǔ)言的翻譯隨行。

  同理,為了避免程序員寫程序時(shí)要應(yīng)付各種機(jī)器的不同情況,就找了一個(gè)翻譯,它本身能夠應(yīng)付各種底層的不同情況,但是向上輸出的接口是統(tǒng)一的。這就是通用軟件。

第二章 計(jì)算機(jī)編程

  通用軟件是一種將底層計(jì)算機(jī)所提供的各種計(jì)算能力給抽象為一種統(tǒng)一接口的程序。無(wú)論底層是AMD的CPU還是Intel的CPU,都可以統(tǒng)一成一種提供計(jì)算能力的接口。無(wú)論內(nèi)存是多少G的,統(tǒng)一規(guī)定32位系統(tǒng)最多支持4G內(nèi)存,64位系統(tǒng)最多支持4G個(gè)4G的內(nèi)存。

  有了通用軟件(操作系統(tǒng))以后,程序員寫程序就不用考慮底層的實(shí)現(xiàn)了,只需要針對(duì)操作系統(tǒng)的接口進(jìn)行編程。如此一來(lái)就大大的簡(jiǎn)化了編程的過(guò)程,效率自然提高了。

2.2.2 OS(Operation System)

  OS是一種通用軟件程序。

  在上一章我們說(shuō)過(guò),任何情況下,一個(gè)普通程序要想完成一個(gè)特權(quán)操作,是沒(méi)辦法直接進(jìn)行的,它必須向內(nèi)核申請(qǐng)。

  當(dāng)系統(tǒng)運(yùn)行起來(lái)以后,操作系統(tǒng)隨時(shí)監(jiān)控在特權(quán)指令上,一旦發(fā)現(xiàn)有要執(zhí)行特權(quán)指令的程序,只能向操作系統(tǒng)發(fā)請(qǐng)求,由操作系統(tǒng)代理完成特權(quán)操作。所以操作系統(tǒng)必須能夠隨時(shí)接收程序發(fā)來(lái)的請(qǐng)求。那么操作系統(tǒng)允許接收哪些請(qǐng)求呢?以下這些就是操作系統(tǒng)完成的工作:

  a) 硬件驅(qū)動(dòng)

  b) 進(jìn)程管理

  c) 內(nèi)存管理

  d) 網(wǎng)絡(luò)管理

  e) 安全管理

  每一個(gè)被操作系統(tǒng)所允許接收的請(qǐng)求,都稱之為系統(tǒng)調(diào)用(System Call)。

2.3 編程層次

  硬件規(guī)格(hardware specifiacation):面向硬件編程

  系統(tǒng)調(diào)用(system call):面向操作系統(tǒng)編程

  庫(kù)調(diào)用(library call):把非常多的底層功能整合出來(lái),提供成離最終目標(biāo)更近的功能

  程序員寫程序要么面向硬件規(guī)格,要么面向操作系統(tǒng)。而操作系統(tǒng)又過(guò)于底層,于是就有人把操作系統(tǒng)向上又抽象出來(lái)一層,也就是上面所說(shuō)的庫(kù)調(diào)用。此時(shí)程序員編程的過(guò)程就簡(jiǎn)化多了。

  下圖是編程層次的一個(gè)架構(gòu)圖:

第二章 計(jì)算機(jī)編程

2.3.1 ABI與API

  眾所周知,windows下的應(yīng)用程序拿到Linux下是無(wú)法運(yùn)行的。

  一個(gè)應(yīng)用程序一旦制作成了二進(jìn)制格式,其適用的操作系統(tǒng)平臺(tái)也就定下來(lái)了。編譯成了exe格式的就只能在windows下運(yùn)行,編譯成了elf格式的就只能在類Unix的系統(tǒng)下運(yùn)行。這是由應(yīng)用二進(jìn)制接口規(guī)定的,也就是ABI(Application Binary Interface)

  ABI是一種操作系統(tǒng)接口格式,是一種規(guī)范,定義了系統(tǒng)平臺(tái)所屬。

  面向不同操作系統(tǒng)的應(yīng)用程序,編譯成二進(jìn)制格式以后在不同平臺(tái)是無(wú)法兼容的。但是在沒(méi)有編譯的情況下,如果應(yīng)用程序的源代碼是針對(duì)不同平臺(tái)的相同接口進(jìn)行編寫的,那么該源程序就可以跨平臺(tái)編譯。也就是說(shuō)源程序可以在windows下編譯,也可以在類Unix系統(tǒng)下編譯,編譯后的二進(jìn)制程序格式是不一樣的。

  這里說(shuō)的不同平臺(tái)的相同接口,這個(gè)接口是指應(yīng)用編程接口API(Application Programming Interface)。

  API是一種應(yīng)用編程接口,程序員一般都是針對(duì)API進(jìn)行編程。

  windows和linux的應(yīng)用程序格式不一樣,但是編程接口API卻可能是可以兼容的。這也就意味著,程序員在windows系統(tǒng)下以兼容模式寫的程序源代碼在linux下是兼容的。雖然源代碼是兼容的,但是一旦編譯成了二進(jìn)制格式,若是在linux下編譯的就只能在linux下運(yùn)行,若是在windows下編譯的就只能在windows下運(yùn)行。

  面向庫(kù)的編程時(shí),程序員寫應(yīng)用程序源代碼是面向API進(jìn)行的,一旦編譯成二進(jìn)制格式了,就是面向ABI了。

2.3.2 UI(User Interface)

  GUI(Graphic User Interface):圖形用戶接口,如windows桌面

  CLI(Command Line Interface):命令行接口,如Unix/Linux下的命令行終端

文章標(biāo)題:第二章計(jì)算機(jī)編程
網(wǎng)站URL:http://jinyejixie.com/article34/ijcdse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)、虛擬主機(jī)做網(wǎng)站、App設(shè)計(jì)、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
青州市| 邵阳市| 朝阳市| 丰台区| 全南县| 木兰县| 德安县| 延吉市| 池州市| 丰县| 虎林市| 娄烦县| 玛多县| 米易县| 米易县| 延庆县| 永川市| 澎湖县| 灵璧县| 德阳市| 陇西县| 湖北省| 黎平县| 临猗县| 颍上县| 罗定市| 田阳县| 民丰县| 佛教| 友谊县| 呼和浩特市| 清涧县| 杭锦后旗| 商水县| 建水县| 陆良县| 东源县| 建昌县| 察哈| 盐亭县| 苍南县|