电竞比分网-中国电竞赛事及体育赛事平台

分享

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

 dushikuaile 2019-08-13

一、前言

隨著計(jì)算機(jī)的廣泛應(yīng)用,各種程序設(shè)計(jì)語(yǔ)言也脫穎而出,作為書(shū)寫(xiě)計(jì)算機(jī)程序而人為設(shè)計(jì)的符號(hào)語(yǔ)言,打通了人類(lèi)和計(jì)算機(jī)的語(yǔ)言通道,程序設(shè)計(jì)語(yǔ)言是一個(gè)不斷演化的過(guò)程,其根本的動(dòng)力是更高的抽象機(jī)制以及對(duì)程序設(shè)計(jì)思想的更好支持。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

二、程序設(shè)計(jì)語(yǔ)言基本概述

1.低級(jí)語(yǔ)言和高級(jí)語(yǔ)言

眾所周知,計(jì)算機(jī)只能識(shí)別0和1的數(shù)字,那么我們平時(shí)對(duì)于計(jì)算機(jī)的各種操作內(nèi)存程序都是怎樣執(zhí)行的呢,計(jì)算機(jī)有著固定的機(jī)器指令程序,這些機(jī)器指令就是所謂的機(jī)器語(yǔ)言,只要能讀懂機(jī)器語(yǔ)言就可以和計(jì)算機(jī)打交道了,但這樣進(jìn)行程序設(shè)計(jì)是效率很低,程序的可讀性很差,更加難以修改和維護(hù),因此0和1就誕生了,例如用add表示加,sub表示減法等。其中用符號(hào)表示的程序指令為匯編指令,匯編指令的集合就是常說(shuō)的匯編語(yǔ)言,由于匯編語(yǔ)言和機(jī)器語(yǔ)言很相似,在很大程度上取決于機(jī)器指令,所以機(jī)器語(yǔ)言和匯編語(yǔ)言都一般稱(chēng)為低級(jí)語(yǔ)言。在此基礎(chǔ)上,為了是計(jì)算機(jī)編程更加方便快捷,就出現(xiàn)了面向各類(lèi)程序的程序設(shè)計(jì)語(yǔ)言,稱(chēng)為高級(jí)語(yǔ)言,常見(jiàn)的有java、python、C、C++、Delphi、PASCAL等,有了這類(lèi)與人類(lèi)自然語(yǔ)言比較接近的語(yǔ)言,瞬間提高了程序設(shè)計(jì)的效率。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

2.編程語(yǔ)言和解釋程序

有了程序設(shè)計(jì)語(yǔ)言,那么就必須有解釋器來(lái)解釋我們所寫(xiě)的程序代碼,因?yàn)闄C(jī)器智能識(shí)別0和1,所以需要轉(zhuǎn)換后才能使計(jì)算機(jī)識(shí)別,用java、python等寫(xiě)的程序一般都稱(chēng)為源程序,這類(lèi)程序計(jì)算機(jī)直接是無(wú)法識(shí)別的,如果源程序是用匯編語(yǔ)言編寫(xiě)的,則需要一個(gè)匯編程序?qū)⑵浞g成目標(biāo)程序后才能執(zhí)行,如果是高級(jí)語(yǔ)言編寫(xiě)的,則需要對(duì)應(yīng)的解釋程序或編譯程序?qū)ζ溥M(jìn)行編譯,然后才能在機(jī)器上執(zhí)行,解釋器可以直接將源程序解釋執(zhí)行或者翻譯成某種中間代碼后再加以執(zhí)行,二編譯程序(編譯器)是將源程序翻譯為目標(biāo)語(yǔ)言程序,然后在計(jì)算機(jī)上運(yùn)行目標(biāo)程序,比如java就需要編譯后才能執(zhí)行,而python則直接加入python運(yùn)行環(huán)境由其解釋器直接執(zhí)行無(wú)需編譯。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

3.程序設(shè)計(jì)語(yǔ)言規(guī)則定義

一般程序設(shè)計(jì)語(yǔ)言都有語(yǔ)法、語(yǔ)義、語(yǔ)用等方面,其中語(yǔ)法是有程序設(shè)計(jì)語(yǔ)言的基本符號(hào)組成的各個(gè)語(yǔ)法成分的統(tǒng)一規(guī)則,基本都是有單詞構(gòu)成的語(yǔ)法規(guī)則,其表示形式可用形式語(yǔ)言直接描述。語(yǔ)義是程序設(shè)計(jì)語(yǔ)言中按照語(yǔ)法規(guī)則構(gòu)成的各個(gè)語(yǔ)法成分,有靜態(tài)語(yǔ)義和動(dòng)態(tài)語(yǔ)義。語(yǔ)用是構(gòu)成語(yǔ)言的各個(gè)標(biāo)記和使用者的關(guān)系,有符號(hào)來(lái)源和使用的影響等,語(yǔ)言的規(guī)則有編譯語(yǔ)境和運(yùn)行語(yǔ)境。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

4.程序設(shè)計(jì)語(yǔ)言的分類(lèi)

程序設(shè)計(jì)語(yǔ)言發(fā)展在不斷的演練中,許多新的語(yǔ)言也都相繼出,這里直接從c語(yǔ)言開(kāi)始說(shuō)起

(1)C語(yǔ)言是20世紀(jì)70年代發(fā)展起來(lái)的一種通用程序設(shè)計(jì)語(yǔ)言,現(xiàn)在很多軟件都是用C語(yǔ)言編寫(xiě)的,包括unix中的很多軟件都是用其編寫(xiě)的,它兼顧了匯編和高級(jí)語(yǔ)言的特點(diǎn),其提供了豐富的語(yǔ)言符號(hào)集合合緊湊的語(yǔ)句格式,在編寫(xiě)起來(lái)比匯編更加方便快捷,稱(chēng)為當(dāng)時(shí)最火的開(kāi)發(fā)語(yǔ)言。

(2)C++是在C語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,與C語(yǔ)言兼容,后來(lái)發(fā)展稱(chēng)為面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。

(3)C#是由微軟公司開(kāi)發(fā)的一種面向C/S的程序語(yǔ)言,運(yùn)行于.NET Framework的高級(jí)程序設(shè)計(jì)語(yǔ)言,相比于C++這門(mén)語(yǔ)言在許多方面進(jìn)行了限制和增強(qiáng)。

(4)java產(chǎn)生于20世紀(jì)90年代,為現(xiàn)如今非?;鸬囊豢铋_(kāi)發(fā)語(yǔ)言,剛開(kāi)始java只是開(kāi)發(fā)網(wǎng)絡(luò)瀏覽器的小應(yīng)用程序,但作為一種通用的程序設(shè)計(jì)語(yǔ)言,java的應(yīng)用非常廣泛,java在C++的基礎(chǔ)上刪除了其不好的特征,使java更加方便靈活。

(5)Ruby使松本行弘設(shè)計(jì)的一種解釋型、面向?qū)ο?、?dòng)態(tài)類(lèi)型的腳本設(shè)計(jì)語(yǔ)言,與java相比起更加簡(jiǎn)單。

(6)PHP是一種在服務(wù)端執(zhí)行的,可以嵌套在html中的腳本語(yǔ)言。

(7)Python是一種解釋性的程序腳本設(shè)計(jì)語(yǔ)言,可以獨(dú)立編寫(xiě)程序,快速腳本和復(fù)雜的應(yīng)用原型。

(8)javaScript是一種運(yùn)行于前端web開(kāi)發(fā)中的腳本語(yǔ)言,一般和html結(jié)合使用。

程序設(shè)計(jì)語(yǔ)言發(fā)展久遠(yuǎn),目前也在不斷發(fā)展中,還有很多編程語(yǔ)言,這里就不一一展示了

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

各種編程語(yǔ)言

三、程序設(shè)計(jì)語(yǔ)言的組成

1.程序設(shè)計(jì)語(yǔ)言一般包括數(shù)據(jù)、運(yùn)算、控制、傳輸?shù)?/p>

其中數(shù)據(jù)是程序操作的對(duì)象,具有存儲(chǔ)類(lèi)別、名稱(chēng)等屬性值,在使用時(shí)會(huì)給它分配空間,一般就是變成中的變量和常量、全局變量和局部變量以及數(shù)據(jù)類(lèi)型的劃分。程序設(shè)計(jì)語(yǔ)言的運(yùn)算成分指的就是允許使用的運(yùn)算符合和運(yùn)算規(guī)則,控制成分指的是程序的控制邏輯,一般程序中都用判斷條件控制程序邏輯分層執(zhí)行,傳輸成分一般就是各種結(jié)構(gòu),比如順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)等傳輸邏輯。

四、程序設(shè)計(jì)語(yǔ)言的執(zhí)行原理

1.編譯過(guò)程:編譯程序的功能是把某種高級(jí)程序設(shè)計(jì)語(yǔ)言的源程序翻譯成為與之等價(jià)的目標(biāo)程序(也就是匯編語(yǔ)言或者機(jī)器語(yǔ)言)用來(lái)和機(jī)器通話(huà)。

2.程序編譯原理步驟

(1)詞法分析:將源程序簡(jiǎn)單的看成一個(gè)或者多個(gè)字符串。

(2)語(yǔ)法分析:語(yǔ)法分析是在詞法分析基礎(chǔ)上執(zhí)行的,將單詞分列為各個(gè)語(yǔ)法單位。

(3)語(yǔ)義分析:語(yǔ)義分析是分析各個(gè)語(yǔ)法的結(jié)構(gòu)和含義,檢查源程序語(yǔ)義是否錯(cuò)誤等。

(4)中間代碼生成:此步驟是根據(jù)語(yǔ)義分析輸出中間代碼。

(5)代碼優(yōu)化:優(yōu)化中間生成的繁瑣代碼,使執(zhí)行更加高效。

(6)目標(biāo)代碼生成:目標(biāo)代碼是最終的代碼,將其轉(zhuǎn)為機(jī)器指令程序。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

3.最后概述下解釋程序基本原理:解釋程序是另外一種不同于編譯程序那樣的語(yǔ)言,在詞法,語(yǔ)義、語(yǔ)法分析方面與編譯程序的工作原理基本相同,但在運(yùn)行程序時(shí),它是直接執(zhí)行源程序和源程序的中間表示形式,從而解釋型程序不產(chǎn)生目標(biāo)程序代碼。

計(jì)算機(jī)是怎如何執(zhí)行我們發(fā)給它的指令的呢?看完此篇你就了解了

到此程序設(shè)計(jì)語(yǔ)言就講述完了,這里只是大概描述,有興趣的可以參與討論哦。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多