本系列資料由"思達(dá)網(wǎng)校" 授權(quán)發(fā)布,任何網(wǎng)站不得轉(zhuǎn)載,否則追究法律責(zé)任。
1. 基礎(chǔ)知識(shí)
1.1. 基本概念
程序設(shè)計(jì)語(yǔ)言的定義涉及語(yǔ)法、語(yǔ)義和語(yǔ)用3個(gè)方面。
語(yǔ)法是指由程序語(yǔ)言的基本符號(hào)組成程序中的各個(gè)語(yǔ)法成分的一組規(guī)則。包括詞法規(guī)則和語(yǔ)法規(guī)則。由形式語(yǔ)言進(jìn)行描述。
語(yǔ)義是程序語(yǔ)言中按語(yǔ)法規(guī)則構(gòu)成的各個(gè)語(yǔ)法成分的含義,可分為靜態(tài)語(yǔ)義和動(dòng)態(tài)語(yǔ)義。程序運(yùn)行的效果反映了該程序的語(yǔ)義。
語(yǔ)用表示了構(gòu)成語(yǔ)言的各個(gè)記號(hào)和使用者的關(guān)系,涉及符號(hào)的來(lái)源、使用和影響。
1.2. 程序設(shè)計(jì)語(yǔ)言的種類(lèi)和特點(diǎn)
可分為命令式程序設(shè)計(jì)語(yǔ)言、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言、函數(shù)式程序設(shè)計(jì)語(yǔ)言和邏輯型程序設(shè)計(jì)語(yǔ)言。
命令式程序設(shè)計(jì)語(yǔ)言是基于動(dòng)作的語(yǔ)言,計(jì)算被看成動(dòng)作的序列。如Pascal、C等。
面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言主要包括幾個(gè)概念:對(duì)象、類(lèi)和繼承。如C++、Java等。
函數(shù)式程序設(shè)計(jì)語(yǔ)言是一類(lèi)以λ-演算為基礎(chǔ)的語(yǔ)言。最顯著的特點(diǎn)是語(yǔ)言中程序和數(shù)據(jù)的形式是等價(jià)的。其代表是LISP語(yǔ)言。
邏輯程序設(shè)計(jì)語(yǔ)言是以形式邏輯為基礎(chǔ)的語(yǔ)言。其代表是PROLOG。
1.3. 程序設(shè)計(jì)語(yǔ)言的基本成分
1.3.1. 數(shù)據(jù)成分
是程序語(yǔ)言的數(shù)據(jù)類(lèi)型。數(shù)據(jù)是程序操作的對(duì)象。包括常量和變量、全局量和局部量。數(shù)據(jù)類(lèi)型有基本類(lèi)型(如整型、字符型等)、特殊類(lèi)型(空類(lèi)型)、構(gòu)造類(lèi)型(數(shù)組、結(jié)構(gòu)、聯(lián)合)、指針類(lèi)型等。
1.3.2. 運(yùn)算成分
運(yùn)算成分指明允許使用的運(yùn)算符號(hào)及運(yùn)算規(guī)則。一般包括算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算。
1.3.3. 控制成分
控制成分指明語(yǔ)言允許表述的控制結(jié)構(gòu)。包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。參見(jiàn)教材中講述的C(C++)提動(dòng)的控制語(yǔ)句。
1.3.4. 函數(shù)
函數(shù)是程序模塊的主要成分,是一段具有獨(dú)立功能的程序。函數(shù)的使用涉及3個(gè)概念:函數(shù)定義、函數(shù)聲明和函數(shù)調(diào)用。函數(shù)調(diào)用時(shí)實(shí)參與形參之間交換信息的方法有傳值調(diào)用和引用調(diào)用兩種。
2. 語(yǔ)言處理程序基礎(chǔ)
2.1. 匯編語(yǔ)言基本原理
2.1.1. 匯編語(yǔ)言
匯編語(yǔ)言是為特定的計(jì)算機(jī)或者計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的面向機(jī)器的語(yǔ)言。
匯編語(yǔ)言中的語(yǔ)句可以分成兩大類(lèi):
與機(jī)器指令相對(duì)應(yīng)的可執(zhí)行匯編語(yǔ)句;
匯編控制語(yǔ)句,即偽指令。
[NextPage]
2.1.2. 匯編程序
匯編程序的功能是將用匯編語(yǔ)言編寫(xiě)的源程序翻譯成機(jī)器指令程序。
整個(gè)匯編程序工作通常要對(duì)源程序進(jìn)行兩次掃描才能完成。第一次掃描主要工作是定義符號(hào)的值。第二次掃描的目的則是產(chǎn)生目標(biāo)程序。其中,可執(zhí)行匯編語(yǔ)句被翻譯成對(duì)應(yīng)的二進(jìn)制代碼機(jī)器指令,而偽指令會(huì)根據(jù)偽指令記憶碼調(diào)用偽指令表對(duì)應(yīng)元素所規(guī)定的子程序入口。
2.2. 編譯程序基本原理
編譯程序的功能是把用高級(jí)語(yǔ)言書(shū)寫(xiě)的源程序翻譯成與之等價(jià)的目標(biāo)程序(匯編語(yǔ)言或者機(jī)器語(yǔ)言)。
編譯程序的工作過(guò)程分為6個(gè)階段:詞法分析階段、語(yǔ)法分析階段、語(yǔ)義分析階段、中間代碼生成階段、代碼優(yōu)化階段和目標(biāo)代碼生成階段。參見(jiàn)《程序員教程》的P278 圖6-4。
2.3. 解釋程序基本原理
解釋程序是一種語(yǔ)言處理程序,它直接執(zhí)行源程序或源程序的內(nèi)部形式。它并不產(chǎn)生目標(biāo)程序,這是它和編譯程序的主要區(qū)別。
高級(jí)語(yǔ)言實(shí)現(xiàn)語(yǔ)言處理有4種方案:
源程序被直接解釋執(zhí)行。
先將源程序翻譯成高級(jí)中間代碼,然后再掃描和解釋執(zhí)行高級(jí)中間代碼。
先將源程序轉(zhuǎn)化成和機(jī)器代碼十分接近的低級(jí)中間代碼,再解釋執(zhí)行這種中間代碼。
源程序被最終翻譯成機(jī)器語(yǔ)言表示的目標(biāo)程序。這類(lèi)系統(tǒng)的目標(biāo)程序執(zhí)行效率最高。
翻譯系統(tǒng)與解釋系統(tǒng)比較:
翻譯系統(tǒng)在執(zhí)行速度上都優(yōu)于建立在解釋執(zhí)行基礎(chǔ)上的系統(tǒng);
翻譯系統(tǒng)的缺點(diǎn)是其復(fù)雜性高,這使得它的開(kāi)發(fā)和維護(hù)費(fèi)用都大;
解釋系統(tǒng)比較簡(jiǎn)單,可移植性較好,適合于以交互方式執(zhí)行程序;
解釋系統(tǒng)缺點(diǎn)是執(zhí)行速度慢;
純粹的解釋和純粹的編譯都是極端,因此一般是兩種技術(shù)的結(jié)合,先將源程序編譯形成中間代碼,然后由解釋器解釋執(zhí)行。
解釋系統(tǒng)的結(jié)構(gòu)可分成兩個(gè)部分:
1) 包括通常的詞法分析程序以及語(yǔ)法和語(yǔ)義分析程序,它的作用仍是把源程序翻譯成中間代碼。
2) 解釋部分,用來(lái)對(duì)第一部分所產(chǎn)生的中間代碼進(jìn)行解釋執(zhí)行,完成真正的解釋。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |