版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編譯原理編譯原理 陳文宇陳文宇 電子科技大學(xué)計算機(jī)科學(xué)與工程學(xué)院電子科技大學(xué)計算機(jī)科學(xué)與工程學(xué)院 陳文宇陳文宇聯(lián)系方式聯(lián)系方式 1380818178213808181782主樓主樓B1-509B1-509(A A區(qū))區(qū))5151科研科研2#2#樓樓4 4課件下載:計算機(jī)學(xué)院網(wǎng)站課件下載:計算機(jī)學(xué)院網(wǎng)站 師資隊伍師資隊伍 程序設(shè)計語言與編譯程序設(shè)計語言與編譯 -語言的設(shè)計與實現(xiàn)(語言的設(shè)計與實現(xiàn)(3 3版)版) 王曉斌王曉斌 陳文宇陳文宇 編著編著 龔天富龔天富 審審 2009 2009 電子工業(yè)出版社電子工業(yè)出版社一一.教材教材二二. . 參考書參考書1. 1. 龔天富龔天富等等 高級程序設(shè)計
2、語言概論高級程序設(shè)計語言概論2. 2. 陳火旺陳火旺等等 編譯原理編譯原理(3(3版版) )3 3 Alfred V.Aho Alfred V.Aho 等等 趙建華趙建華 等等譯譯 編譯原理編譯原理龍書龍書 機(jī)械工業(yè)出版社機(jī)械工業(yè)出版社 4 4 Andrew W.Appel Andrew W.Appel 等等 趙克佳趙克佳 等譯等譯 現(xiàn)代編譯原理現(xiàn)代編譯原理- -虎書虎書 人民郵電出版社人民郵電出版社1. 1. 課程設(shè)置課程設(shè)置: : 64= 64=5656+8 +8 學(xué)時學(xué)時2. 2. 先修課程先修課程 C 三三. . 關(guān)于教學(xué)關(guān)于教學(xué)四四. . 成績構(gòu)成成績構(gòu)成 平時平時 10% 10%
3、作業(yè)作業(yè)+ +課堂測驗課堂測驗 半期半期 10%10% 實驗實驗 10%10% 期末期末 70%70%課堂點名、測驗、作業(yè)課堂點名、測驗、作業(yè) 累加到累加到4 4次次: 取消考試資格取消考試資格五五. . 教學(xué)內(nèi)容教學(xué)內(nèi)容 涉及語言及其編譯系統(tǒng)的涉及語言及其編譯系統(tǒng)的設(shè)計要素設(shè)計要素、設(shè)計思想設(shè)計思想、設(shè)計方法設(shè)計方法和和設(shè)計技術(shù)設(shè)計技術(shù)等等 1)1)上篇,程序設(shè)計語言的上篇,程序設(shè)計語言的設(shè)計設(shè)計 緒論、數(shù)據(jù)類型緒論、數(shù)據(jù)類型 控制結(jié)構(gòu)、語言設(shè)計控制結(jié)構(gòu)、語言設(shè)計2)2)下篇,程序設(shè)計語言的下篇,程序設(shè)計語言的實現(xiàn)實現(xiàn)(編譯)(編譯) 編譯概述、詞法分析、語法分析編譯概述、詞法分析、語法分析
4、 語義分析和中間代碼生成語義分析和中間代碼生成 代碼優(yōu)化和目標(biāo)代碼生成代碼優(yōu)化和目標(biāo)代碼生成 運(yùn)行時存儲空間的組織運(yùn)行時存儲空間的組織六六. .學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo) 掌握掌握設(shè)計設(shè)計和和實現(xiàn)實現(xiàn)一個程序設(shè)計語一個程序設(shè)計語言的基本思想和方法。言的基本思想和方法。 具有具有分析、鑒賞、評價、選擇、分析、鑒賞、評價、選擇、學(xué)習(xí)、設(shè)計和實現(xiàn)學(xué)習(xí)、設(shè)計和實現(xiàn)語言的基本能力。語言的基本能力。七七. . 課程的重要性課程的重要性 2020世紀(jì)世紀(jì)5050年代,出現(xiàn)了與機(jī)器無關(guān)年代,出現(xiàn)了與機(jī)器無關(guān)的編程語言(高級程序設(shè)計語言)。的編程語言(高級程序設(shè)計語言)。 第一個編譯器是由第一個編譯器是由葛麗絲葛麗絲穆雷
5、穆雷霍霍普普( Grace Murray Hopper Grace Murray Hopper )于)于19521952年為年為A-0 (A-0 (算術(shù)語言版本算術(shù)語言版本0) )系統(tǒng)編寫的。系統(tǒng)編寫的。 19571957年由年由IBMIBM的的約翰約翰巴科斯巴科斯領(lǐng)導(dǎo)領(lǐng)導(dǎo)開發(fā)的開發(fā)的FORTRANFORTRAN語言編譯器語言編譯器則是第一個則是第一個具備完整功能的編譯器具備完整功能的編譯器課程的重要性課程的重要性 編譯技術(shù)已經(jīng)成為計算機(jī)科學(xué)編譯技術(shù)已經(jīng)成為計算機(jī)科學(xué)中發(fā)展最中發(fā)展最迅速、最成熟迅速、最成熟的一個重的一個重要分支。要分支。 編譯技術(shù)集中體現(xiàn)了計算機(jī)科學(xué)編譯技術(shù)集中體現(xiàn)了計算機(jī)科
6、學(xué)發(fā)展的重要成果與精華。發(fā)展的重要成果與精華。課程的重要性課程的重要性 ACMACM圖靈獎圖靈獎是授予在計算機(jī)技術(shù)領(lǐng)域是授予在計算機(jī)技術(shù)領(lǐng)域作出突出貢獻(xiàn)的科學(xué)家的最高獎勵作出突出貢獻(xiàn)的科學(xué)家的最高獎勵. . 自自19661966年設(shè)立以來,年設(shè)立以來,程序設(shè)計語言、程序設(shè)計語言、編譯理論編譯理論與方法的方面的成果約占總數(shù)與方法的方面的成果約占總數(shù)的的1/31/3。課程的重要性課程的重要性 從計算機(jī)應(yīng)用的發(fā)展來看,編譯從計算機(jī)應(yīng)用的發(fā)展來看,編譯技術(shù)在其中有著極其重要的和不可技術(shù)在其中有著極其重要的和不可替代的作用。替代的作用。 正是在正是在編譯技術(shù)編譯技術(shù)的支持下,程的支持下,程序設(shè)計才從以繁
7、瑣的低級語言為工序設(shè)計才從以繁瑣的低級語言為工具,發(fā)展到以接近具,發(fā)展到以接近自然語言和數(shù)學(xué)自然語言和數(shù)學(xué)語言語言的高級程序設(shè)計語言為工具的高級程序設(shè)計語言為工具; ; 課程的重要性課程的重要性 編譯技術(shù)的發(fā)展極大地提高了軟編譯技術(shù)的發(fā)展極大地提高了軟件開發(fā)的件開發(fā)的效率效率,深刻地影響著,深刻地影響著軟件軟件開發(fā)方法的變革開發(fā)方法的變革。 軟件開發(fā)軟件開發(fā)也從模塊化的開發(fā)方也從模塊化的開發(fā)方法發(fā)展到了面向?qū)ο蟮拈_發(fā)方法。法發(fā)展到了面向?qū)ο蟮拈_發(fā)方法。通過本課程的學(xué)習(xí)通過本課程的學(xué)習(xí)1)1)掌握和理解掌握和理解語言設(shè)計語言設(shè)計的理論和方法;的理論和方法;2)2)掌握和理解掌握和理解編譯系統(tǒng)編譯
8、系統(tǒng)的各組成部分的的各組成部分的設(shè)計原理設(shè)計原理和和實現(xiàn)技術(shù)實現(xiàn)技術(shù);3)3)提高對提高對語言、操作系統(tǒng)、計算機(jī)原理語言、操作系統(tǒng)、計算機(jī)原理和體系結(jié)構(gòu)和體系結(jié)構(gòu)等課程知識的等課程知識的綜合理解綜合理解。結(jié)論結(jié)論 從計算機(jī)專業(yè)人才的從計算機(jī)專業(yè)人才的知識知識結(jié)構(gòu)結(jié)構(gòu)和和專業(yè)素養(yǎng)專業(yè)素養(yǎng)的培養(yǎng)而言的培養(yǎng)而言 編譯原理是高等學(xué)校培養(yǎng)編譯原理是高等學(xué)校培養(yǎng)計算機(jī)專業(yè)人才的計算機(jī)專業(yè)人才的核心課程核心課程內(nèi)容安排內(nèi)容安排 上篇上篇 程序設(shè)計語言的程序設(shè)計語言的設(shè)計設(shè)計 下篇下篇 程序設(shè)計語言的程序設(shè)計語言的實現(xiàn)實現(xiàn) 第一章第一章 緒論緒論 本章討論程序設(shè)計語言中的一些重本章討論程序設(shè)計語言中的一些重要
9、要概念概念,為深入了解程序設(shè)計語言打下,為深入了解程序設(shè)計語言打下基礎(chǔ)。基礎(chǔ)。 簡介程序設(shè)計語言的簡介程序設(shè)計語言的發(fā)展歷史發(fā)展歷史。 1.1 1.1 引言引言l1.1.程序設(shè)計語言的產(chǎn)生程序設(shè)計語言的產(chǎn)生 語言是人們交流思想的工具。人類在語言是人們交流思想的工具。人類在長期的歷史發(fā)展過程中,為了交流思想、長期的歷史發(fā)展過程中,為了交流思想、表達(dá)感情和交換信息,逐步形成了語言表達(dá)感情和交換信息,逐步形成了語言-自然語言自然語言。 程序設(shè)計語言程序設(shè)計語言: :人工語言人工語言程序設(shè)計語言程序設(shè)計語言programming languagel程序設(shè)計語言程序設(shè)計語言本質(zhì)上本質(zhì)上是一組規(guī)則:是一組
10、規(guī)則:l1)字母表的定義字母表的定義;l2)詞法規(guī)則詞法規(guī)則:單詞符號單詞符號的形成規(guī)則的形成規(guī)則 一個單詞對應(yīng)一條形成規(guī)則,規(guī)定一個單詞對應(yīng)一條形成規(guī)則,規(guī)定了該單詞由哪些字母按照什么順序進(jìn)了該單詞由哪些字母按照什么順序進(jìn)行排列行排列程序設(shè)計語言程序設(shè)計語言l3)語法規(guī)則語法規(guī)則:語法單位語法單位的形成規(guī)則的形成規(guī)則( C語言語言語法單位包括:表達(dá)式、語語法單位包括:表達(dá)式、語句、句、函數(shù)函數(shù)、程序);、程序);l4)語義規(guī)則:單詞符號和語法單位)語義規(guī)則:單詞符號和語法單位的的含義規(guī)則含義規(guī)則;程序設(shè)計語言程序設(shè)計語言l5)語用規(guī)則語用規(guī)則:語義規(guī)則的發(fā)展和延伸:語義規(guī)則的發(fā)展和延伸 在一
11、定的語境中使用單詞和語法單在一定的語境中使用單詞和語法單位時體現(xiàn)出來的具體意義位時體現(xiàn)出來的具體意義,要根據(jù)上要根據(jù)上下文明確單詞和語法單位的具體意義下文明確單詞和語法單位的具體意義l6)其他規(guī)則其他規(guī)則:包括類型使用規(guī)則,:包括類型使用規(guī)則,參數(shù)傳遞規(guī)則,作用域規(guī)則等參數(shù)傳遞規(guī)則,作用域規(guī)則等等等。程序設(shè)計語言程序設(shè)計語言l計算機(jī)程序設(shè)計語言的發(fā)展,計算機(jī)程序設(shè)計語言的發(fā)展,經(jīng)歷了從經(jīng)歷了從機(jī)器語言機(jī)器語言、匯編語言匯編語言到到高級語言高級語言的歷程。的歷程。2.2.程序設(shè)計語言的發(fā)展程序設(shè)計語言的發(fā)展機(jī)器語言機(jī)器語言匯編語言匯編語言高級語言高級語言 用用機(jī)器語言機(jī)器語言編寫的程序由二編寫的
12、程序由二進(jìn)制指令組成,計算機(jī)可以直接進(jìn)制指令組成,計算機(jī)可以直接執(zhí)行。執(zhí)行。 將機(jī)器語言將機(jī)器語言符號化符號化,產(chǎn)生了,產(chǎn)生了匯匯編語言編語言。 不同的不同的機(jī)器語言和匯編語言:機(jī)器語言和匯編語言: 對于指令的操作碼與功能、指令格式、對于指令的操作碼與功能、指令格式、尋址方式、數(shù)據(jù)格式等,不同的計算機(jī)尋址方式、數(shù)據(jù)格式等,不同的計算機(jī)有不同的規(guī)定:有不同的規(guī)定:機(jī)器有關(guān)機(jī)器有關(guān)的語言的語言 通常稱為低級語言。通常稱為低級語言。 與機(jī)器無關(guān)的程序設(shè)計語言,通與機(jī)器無關(guān)的程序設(shè)計語言,通常稱為常稱為高級語言高級語言。 直觀、自然、易于理解直觀、自然、易于理解 易讀,易寫,易于交流、存檔易讀,易寫,
13、易于交流、存檔 一般都是獨(dú)立于機(jī)器的一般都是獨(dú)立于機(jī)器的, ,易于移植易于移植3.高級語言的特點高級語言的特點翻譯翻譯: :等價的變換。等價的變換。 計算機(jī)可直接執(zhí)行用機(jī)器語言編計算機(jī)可直接執(zhí)行用機(jī)器語言編寫的寫的程序程序。 而用匯編語言和高級語言編寫的而用匯編語言和高級語言編寫的程序,機(jī)器不能直接執(zhí)行程序,機(jī)器不能直接執(zhí)行 必須將它們必須將它們翻譯翻譯成完全成完全等價等價的機(jī)的機(jī)器語言程序才能執(zhí)行器語言程序才能執(zhí)行 將匯編語言將匯編語言程序程序翻譯為機(jī)器語言翻譯為機(jī)器語言程序程序的程序稱為的程序稱為匯編程序匯編程序(匯編器)(匯編器) 將高級語言程序翻譯為低級語言程序?qū)⒏呒壵Z言程序翻譯為低級
14、語言程序的程序稱為的程序稱為編譯程序編譯程序(編譯器)(編譯器) 編寫一個高級語言的編譯程序的工作,編寫一個高級語言的編譯程序的工作,通常稱為對這個語言的通常稱為對這個語言的實現(xiàn)實現(xiàn)。程序另一種執(zhí)行方式:解釋程序另一種執(zhí)行方式:解釋 BASIC BASIC是最簡單的高級語言,它不是編譯是最簡單的高級語言,它不是編譯執(zhí)行,即不需要將源程序編譯成目標(biāo)程序,執(zhí)行,即不需要將源程序編譯成目標(biāo)程序,而是對源程序進(jìn)行而是對源程序進(jìn)行解釋解釋(分析),直接計算(分析),直接計算出結(jié)果。出結(jié)果。 需要需要解釋程序解釋程序(解釋器)支持(解釋器)支持 LISPLISP,MLML,PrologProlog和和Sm
15、alltalkSmalltalk均是均是解釋型的語言解釋型的語言。 Java Java被當(dāng)作一種解釋型語言。被當(dāng)作一種解釋型語言。 翻譯產(chǎn)生中間代碼翻譯產(chǎn)生中間代碼-字節(jié)碼字節(jié)碼 可以在可以在JavaJava虛擬機(jī)上運(yùn)行虛擬機(jī)上運(yùn)行 解釋執(zhí)行特別適合于解釋執(zhí)行特別適合于動態(tài)語言動態(tài)語言和和交互式環(huán)境交互式環(huán)境,因為可以立即得到計,因為可以立即得到計算結(jié)果,便于人機(jī)對話。算結(jié)果,便于人機(jī)對話。 解釋器邊翻譯邊解釋執(zhí)行,解釋器邊翻譯邊解釋執(zhí)行,重重復(fù)復(fù)執(zhí)行的語句需要重復(fù)翻譯,比編執(zhí)行的語句需要重復(fù)翻譯,比編譯執(zhí)行要花去更多的時間,執(zhí)行效譯執(zhí)行要花去更多的時間,執(zhí)行效率較低。率較低。 4.4.與編譯
16、有關(guān)的三種語言、三種程序與編譯有關(guān)的三種語言、三種程序 源源語言、語言、工具工具語言、語言、目標(biāo)目標(biāo)語言語言 源程序、編譯程序、目標(biāo)程序源程序、編譯程序、目標(biāo)程序5.5.高級語言涉及的三類人高級語言涉及的三類人 設(shè)計者、實現(xiàn)者、設(shè)計者、實現(xiàn)者、使用者使用者 1.2 1.2 強(qiáng)制式語言強(qiáng)制式語言一一. .程序設(shè)計語言的分類程序設(shè)計語言的分類按設(shè)計的按設(shè)計的理論基礎(chǔ)理論基礎(chǔ)分為分為4 4類語言類語言: : 強(qiáng)制式強(qiáng)制式語言語言: :基礎(chǔ)是基礎(chǔ)是馮馮諾依曼諾依曼模型模型函數(shù)式函數(shù)式語言語言: :基礎(chǔ)是基礎(chǔ)是數(shù)學(xué)函數(shù)數(shù)學(xué)函數(shù)( (函數(shù)運(yùn)算函數(shù)運(yùn)算) )邏輯式邏輯式語言語言: :基礎(chǔ)是基礎(chǔ)是數(shù)理邏輯、謂
17、詞演算數(shù)理邏輯、謂詞演算對象式對象式語言語言: :基礎(chǔ)是基礎(chǔ)是抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型 按語言的按語言的發(fā)展進(jìn)程發(fā)展進(jìn)程分類分類: : 第一代語言(機(jī)器語言)第一代語言(機(jī)器語言)第二代語言(匯編語言)第二代語言(匯編語言)第三代語言(高級語言第三代語言(高級語言: :命令式、過程式)命令式、過程式)第四代語言(說明性語言、超高級語言)第四代語言(說明性語言、超高級語言)新一代語言(函數(shù)式、邏輯式語言)新一代語言(函數(shù)式、邏輯式語言)1.1.基礎(chǔ)基礎(chǔ) 存儲器存儲器, ,控制器控制器, ,處理器,處理器,ipip2.2.特點特點數(shù)據(jù)、指令數(shù)據(jù)、指令以以二進(jìn)制二進(jìn)制形式存儲形式存儲( ( 區(qū)別?區(qū)
18、別?););存儲存儲程序程序(指令的組合)的工作方式;(指令的組合)的工作方式;程序程序順序執(zhí)行;可強(qiáng)制修改執(zhí)行順序順序執(zhí)行;可強(qiáng)制修改執(zhí)行順序存儲器的內(nèi)容可以被存儲器的內(nèi)容可以被修改修改。二二. 馮馮.諾依曼體系結(jié)構(gòu)(模型)諾依曼體系結(jié)構(gòu)(模型)ip代碼存儲器(代碼存儲器(C)數(shù)據(jù)存儲器(數(shù)據(jù)存儲器(D)3.在命令式語言上的表現(xiàn)在命令式語言上的表現(xiàn)變量變量 存儲單元及名稱由變量的概念存儲單元及名稱由變量的概念代替。變量可以代表一個或一組單元。代替。變量可以代表一個或一組單元。 賦值賦值 存儲存儲( (中間、最終的中間、最終的) )計算結(jié)果。計算結(jié)果。重復(fù)重復(fù) 語句順序執(zhí)行語句順序執(zhí)行, ,指
19、令存儲在有限指令存儲在有限的存儲器中的存儲器中, ,完成復(fù)雜計算時需要重完成復(fù)雜計算時需要重復(fù)執(zhí)行某些指令序列。復(fù)執(zhí)行某些指令序列。 馮馮.諾依曼體系結(jié)構(gòu)諾依曼體系結(jié)構(gòu)(模型模型)實體實體:程序的組成部分,如變量,表達(dá):程序的組成部分,如變量,表達(dá)式、程序單元等。式、程序單元等。屬性屬性:實體具有的特性。:實體具有的特性。綁定綁定:實體與其各種屬性建立起某種聯(lián):實體與其各種屬性建立起某種聯(lián)系的過程稱為綁定,實際上就是建立了系的過程稱為綁定,實際上就是建立了某種約束。某種約束。描述符描述符:描述實體屬性的:描述實體屬性的表格表格。三三. 綁定(綁定(Binding)概念概念編譯時能確定的特性編譯
20、時能確定的特性-靜態(tài)特性靜態(tài)特性運(yùn)行時才能確定的特性運(yùn)行時才能確定的特性-動態(tài)特性動態(tài)特性 靜態(tài)和動態(tài)特性靜態(tài)和動態(tài)特性 若綁定在運(yùn)行之前若綁定在運(yùn)行之前( (即編譯時即編譯時) )完完成,且在運(yùn)行時不會改變,則稱為成,且在運(yùn)行時不會改變,則稱為靜態(tài)綁定靜態(tài)綁定。 若綁定在運(yùn)行時完成,則稱為若綁定在運(yùn)行時完成,則稱為動動態(tài)綁定態(tài)綁定。四四 變量變量 變量是對一個或若干個存儲單元的抽象變量是對一個或若干個存儲單元的抽象一個存儲單元至少一個字節(jié)(也可以為一個存儲單元至少一個字節(jié)(也可以為2個字節(jié)個字節(jié) 4個字節(jié)個字節(jié))一個變量至少占用一個存儲單元一個變量至少占用一個存儲單元 賦值是對修改存儲單元內(nèi)
21、容的抽象。賦值是對修改存儲單元內(nèi)容的抽象。 變量用名字來標(biāo)識變量用名字來標(biāo)識(變量可以不具有變量可以不具有名字名字-匿名匿名變量變量)還有還有4個屬性:個屬性: 作用域作用域、生存期生存期、值值、類型類型 1.變量的作用域變量的作用域 可以訪問該變量的程序范圍??梢栽L問該變量的程序范圍。 靜態(tài)作用域綁定靜態(tài)作用域綁定:按照程序的按照程序的語法結(jié)語法結(jié)構(gòu)構(gòu)定義變量的作用域(定義變量的作用域(C語言等)。語言等)。 動態(tài)作用域綁定動態(tài)作用域綁定:按照程序的執(zhí)行動按照程序的執(zhí)行動態(tài)地定義變量的作用域(態(tài)地定義變量的作用域(SNOBL4 語語言等)言等) 。2.變量的生存期變量的生存期存儲單元綁定于一
22、個變量的存儲單元綁定于一個變量的時間區(qū)間時間區(qū)間l編譯階段編譯階段 數(shù)據(jù)由變量和常量表示數(shù)據(jù)由變量和常量表示l運(yùn)行階段運(yùn)行階段 數(shù)據(jù)由數(shù)據(jù)由數(shù)據(jù)對象數(shù)據(jù)對象表示表示數(shù)據(jù)對象數(shù)據(jù)對象表示存儲區(qū)和它保存的值。表示存儲區(qū)和它保存的值。變量獲得存儲區(qū)的活動稱為變量獲得存儲區(qū)的活動稱為分配分配。變量分配的存儲單元的個數(shù)變量分配的存儲單元的個數(shù)-變量長度變量長度。運(yùn)行前分配變量存儲區(qū)運(yùn)行前分配變量存儲區(qū) -靜態(tài)分配靜態(tài)分配(FORTRAN語言)語言)運(yùn)行時分配變量存儲區(qū)運(yùn)行時分配變量存儲區(qū) -動態(tài)分配動態(tài)分配(C 、C+語言)語言)分配原則,由語言分配原則,由語言(設(shè)計者設(shè)計者)規(guī)定。規(guī)定。動態(tài)分配通過兩
23、種途徑來實現(xiàn):動態(tài)分配通過兩種途徑來實現(xiàn): 用相關(guān)的語句用相關(guān)的語句顯式顯式提出請求提出請求(new) 進(jìn)入變量的作用域時進(jìn)入變量的作用域時自動自動分配。分配。3.變量的值變量的值 存儲區(qū)單元的存儲區(qū)單元的內(nèi)容內(nèi)容 變量在生存期內(nèi)綁定于存儲單元,該變量在生存期內(nèi)綁定于存儲單元,該存儲單元中的內(nèi)容以存儲單元中的內(nèi)容以二進(jìn)制二進(jìn)制編碼方式編碼方式表示的變量值,并綁定于變量。表示的變量值,并綁定于變量。 值按變量所綁定的值按變量所綁定的類型類型來進(jìn)行解釋。來進(jìn)行解釋。 訪問匿名變量的基本方法是通過訪問匿名變量的基本方法是通過訪問路徑訪問路徑來實現(xiàn)的。來實現(xiàn)的。 變量的值在程序運(yùn)行時可以通過變量的值在
24、程序運(yùn)行時可以通過賦值操作來修改,因此,變量與它賦值操作來修改,因此,變量與它的值的綁定是的值的綁定是動態(tài)動態(tài)的。的。 常數(shù)(量)的值不能修改常數(shù)(量)的值不能修改。初始值問題初始值問題 變量獲得所分配的存儲單元,完成變量與變量獲得所分配的存儲單元,完成變量與存儲區(qū)的綁定。存儲區(qū)的綁定。此時,該變量綁定的值是什么呢?即變量此時,該變量綁定的值是什么呢?即變量初始化初始化問題。問題。不同的語言有不同的規(guī)則:不同的語言有不同的規(guī)則: 不初始化則出錯不初始化則出錯 隨機(jī)隨機(jī) 缺省值缺省值04.變量的類型變量的類型與變量相關(guān)聯(lián)的與變量相關(guān)聯(lián)的值值,以及對這些值進(jìn),以及對這些值進(jìn)行的行的操作操作的抽象。
25、的抽象。 類型可用來解釋變量綁定的存儲區(qū)的類型可用來解釋變量綁定的存儲區(qū)的內(nèi)容內(nèi)容(二進(jìn)制編碼二進(jìn)制編碼)的意義;的意義;語言定義語言定義時,類型綁定于值和操作時,類型綁定于值和操作;語言實現(xiàn)語言實現(xiàn)時,值和操作綁定于某種機(jī)器時,值和操作綁定于某種機(jī)器二進(jìn)制表示二進(jìn)制表示變量類型可以變量類型可以靜態(tài)或動態(tài)地進(jìn)行綁定靜態(tài)或動態(tài)地進(jìn)行綁定 靜態(tài)綁定:通過說明語句完成靜態(tài)綁定:通過說明語句完成 動態(tài)綁定:執(zhí)行時動態(tài)綁定:執(zhí)行時隱式隱式說明,且動態(tài)變化說明,且動態(tài)變化 A A 5 5 整型整型 A A 1 2 51 0 1 2 51 0 一維數(shù)組一維數(shù)組 A A 0 0 A2:3 A2:3 0 0 二
26、維數(shù)組二維數(shù)組 ? 動態(tài)綁定動態(tài)綁定的語言實現(xiàn)采用的語言實現(xiàn)采用解釋解釋方式處方式處理更合適,因為對于一個不能確定變量理更合適,因為對于一個不能確定變量類型的表達(dá)式,在運(yùn)行之前沒有足夠的類型的表達(dá)式,在運(yùn)行之前沒有足夠的信息來生成合適的代碼。信息來生成合適的代碼。 語言實現(xiàn)采用編譯還是解釋方式,語言實現(xiàn)采用編譯還是解釋方式,受到變量與類型受到變量與類型綁定規(guī)則綁定規(guī)則的嚴(yán)重影響。的嚴(yán)重影響。靜態(tài)綁定語言是靜態(tài)綁定語言是面向編譯面向編譯的語言。的語言。動態(tài)綁定語言是動態(tài)綁定語言是面向解釋面向解釋的語言。的語言。 類型進(jìn)行綁定動態(tài)的語言,往往類型進(jìn)行綁定動態(tài)的語言,往往其作用域也是動態(tài)綁定的,因此
27、,其作用域也是動態(tài)綁定的,因此,這類語言又稱為這類語言又稱為動態(tài)語言動態(tài)語言。 M M1 1是實際的機(jī)器,是實際的機(jī)器,匯編語言程序要在匯編語言程序要在M M1 1和匯編程序上執(zhí)行,和匯編程序上執(zhí)行, M M1 1+ +匯編程序匯編程序= =M M2 2 虛擬機(jī)虛擬機(jī)M M2 2的機(jī)器語言是匯編語言的機(jī)器語言是匯編語言 M M2 2+ +編譯程序編譯程序= =M M3 3虛擬機(jī)虛擬機(jī)M M3 3以高級語言為機(jī)器語言以高級語言為機(jī)器語言( (對用戶而言對用戶而言) )五五.虛擬機(jī):軟件實現(xiàn)的機(jī)器虛擬機(jī):軟件實現(xiàn)的機(jī)器 虛擬機(jī)是由實際機(jī)器加軟件虛擬機(jī)是由實際機(jī)器加軟件實現(xiàn)的機(jī)器。實現(xiàn)的機(jī)器。 若一
28、臺實際機(jī)器配置上若一臺實際機(jī)器配置上C C語言語言編譯程序,對用戶來說,這臺編譯程序,對用戶來說,這臺機(jī)器就是機(jī)器就是C C語言的虛擬機(jī)(語言的虛擬機(jī)(C C語語言言機(jī)機(jī))。)。六. 主要的強(qiáng)制式語言及其關(guān)系1.(1.(程序程序) )單元單元: :程序執(zhí)行過程中的被獨(dú)程序執(zhí)行過程中的被獨(dú)立調(diào)用單元:子程序立調(diào)用單元:子程序, ,分程序分程序, ,過程等過程等2.2.單元表示單元表示 編譯時,單元表示為單元的源程序。編譯時,單元表示為單元的源程序。 運(yùn)行時,單元表示由一個運(yùn)行時,單元表示由一個代碼段代碼段和和一個一個活動記錄活動記錄組成,稱為組成,稱為單元實例單元實例。1.3 程序單元3.3.活
29、動記錄活動記錄: :執(zhí)行單元所需要的執(zhí)行單元所需要的信息信息, ,及及局部變量所綁定的數(shù)據(jù)對象的局部變量所綁定的數(shù)據(jù)對象的存儲區(qū)存儲區(qū)4.4.非局部變量非局部變量: :一個程序單元可以引用一個程序單元可以引用被其它單元說明的變量。被其它單元說明的變量。5.5.全局變量全局變量: :在一個程序中,各個程序在一個程序中,各個程序單元都可以引用的變量。單元都可以引用的變量。6.6.引用環(huán)境引用環(huán)境 引用環(huán)境:一個程序單元可以引用的引用環(huán)境:一個程序單元可以引用的局部變量、非局部變量和全局變量。局部變量、非局部變量和全局變量。 局部變量綁定于存儲在程序單元的局部變量綁定于存儲在程序單元的當(dāng)當(dāng)前活動記錄
30、前活動記錄中的數(shù)據(jù)對象,稱為中的數(shù)據(jù)對象,稱為局部環(huán)局部環(huán)境境。 非局部變量綁定于別的非局部變量綁定于別的( (說明該非局說明該非局部變量部變量) )程序單元的活動記錄或全局?jǐn)?shù)程序單元的活動記錄或全局?jǐn)?shù)據(jù)區(qū)中的數(shù)據(jù)對象,稱為據(jù)區(qū)中的數(shù)據(jù)對象,稱為非局部環(huán)境非局部環(huán)境以以C語言為例語言為例lC程序運(yùn)行時的存儲空間:程序運(yùn)行時的存儲空間:(1)程序代碼區(qū):)程序代碼區(qū):存儲程序代碼(編譯后形成的二進(jìn)制機(jī)存儲程序代碼(編譯后形成的二進(jìn)制機(jī)器指令序列)器指令序列)(2)數(shù)據(jù)靜態(tài)存儲區(qū):存儲程序的)數(shù)據(jù)靜態(tài)存儲區(qū):存儲程序的常常量數(shù)據(jù)、量數(shù)據(jù)、全局?jǐn)?shù)據(jù)和全局?jǐn)?shù)據(jù)和static數(shù)據(jù)。數(shù)據(jù)。(3)數(shù)據(jù)動態(tài)存
31、儲區(qū):)數(shù)據(jù)動態(tài)存儲區(qū): 活動記錄活動記錄:存儲返回地址、:存儲返回地址、CPU現(xiàn)現(xiàn)場、形參、函數(shù)定義變量、場、形參、函數(shù)定義變量、臨時變量臨時變量 存儲動態(tài)內(nèi)存申請數(shù)據(jù)存儲動態(tài)內(nèi)存申請數(shù)據(jù)(malloc)7.7.別名別名 同一單元的引用環(huán)境中有兩個或同一單元的引用環(huán)境中有兩個或多個變量綁定于同一數(shù)據(jù)對象,稱多個變量綁定于同一數(shù)據(jù)對象,稱這些變量具有這些變量具有別名別名。8.副作用副作用 對一個對一個非局部變量非局部變量的進(jìn)行的進(jìn)行修改修改。 隨著計算機(jī)技術(shù)的發(fā)展隨著計算機(jī)技術(shù)的發(fā)展,計算機(jī)應(yīng)計算機(jī)應(yīng)用用,已經(jīng)滲透到社會的各個領(lǐng)域已經(jīng)滲透到社會的各個領(lǐng)域 對程序設(shè)計語言也提出了新的要對程序設(shè)計
32、語言也提出了新的要求求(如可維護(hù)性如可維護(hù)性,可靠性可靠性,可移植性等可移植性等),從而促進(jìn)了語言的發(fā)展。從而促進(jìn)了語言的發(fā)展。1.4 程序設(shè)計語言發(fā)展簡介目標(biāo)目標(biāo): :追求效率追求效率lFORTRANFORTRAN= =FORFORmula mula TRANTRANslation slation . .主要用于科學(xué)計算主要用于科學(xué)計算 . .子程序獨(dú)立編譯子程序獨(dú)立編譯 .COMMON .COMMON語句實現(xiàn)了模塊之間的通信語句實現(xiàn)了模塊之間的通信一一. 早期的高級語言(早期的高級語言(50年代)年代)2. 2. ALGOL 60ALGOL 60 ALGOALGOrithmic rithm
33、ic L Language anguage 6060 . .主要用于科學(xué)計算主要用于科學(xué)計算 . .引入了引入了分程序分程序結(jié)構(gòu)和結(jié)構(gòu)和遞歸遞歸過程過程 . .采用采用BNFBNF形式描述語法形式描述語法 3. COBOL COmmon Business Oriented Language.廣泛應(yīng)用于各種事務(wù)處理領(lǐng)域廣泛應(yīng)用于各種事務(wù)處理領(lǐng)域.引入了文件和數(shù)據(jù)描述引入了文件和數(shù)據(jù)描述.類自然語言程序描述類自然語言程序描述 6060年代初,不再盲目地追求效率年代初,不再盲目地追求效率, ,出現(xiàn)了基出現(xiàn)了基于良好刻畫數(shù)學(xué)原則的語言。于良好刻畫數(shù)學(xué)原則的語言。1. 1. LISPLISP. .具有很
34、強(qiáng)的符號處理能力具有很強(qiáng)的符號處理能力. .統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu). .數(shù)據(jù)和程序統(tǒng)一的表示方法數(shù)據(jù)和程序統(tǒng)一的表示方法. .其基礎(chǔ)是其基礎(chǔ)是函數(shù)函數(shù)和函數(shù)作用和函數(shù)作用二二.早期的突破早期的突破2. 2. APLAPL. .支持函數(shù)式程序設(shè)計風(fēng)格支持函數(shù)式程序設(shè)計風(fēng)格. .廣泛應(yīng)用于涉及大量矩陣運(yùn)算的廣泛應(yīng)用于涉及大量矩陣運(yùn)算的科學(xué)計算中科學(xué)計算中. .具有豐富的具有豐富的操作符操作符3 3. SNOBOL 4. SNOBOL 4 . .主要用于字符串處理主要用于字符串處理 . .給出了一種與機(jī)器無關(guān)的宏功能給出了一種與機(jī)器無關(guān)的宏功能, ,增加了程序的可移植性增加了程序的可移植性PL
35、/1PL/1 . .希望將所有語言概念希望將所有語言概念集成集成大全大全 . .分程序概念和遞歸過程分程序概念和遞歸過程 . .數(shù)據(jù)描述機(jī)能數(shù)據(jù)描述機(jī)能 . .動態(tài)數(shù)據(jù)結(jié)構(gòu)動態(tài)數(shù)據(jù)結(jié)構(gòu) . .異常處理異常處理 . .多任務(wù)機(jī)能多任務(wù)機(jī)能 . .可用于科學(xué)數(shù)值計算可用于科學(xué)數(shù)值計算, ,數(shù)據(jù)處理等數(shù)據(jù)處理等 . .難以得到廣泛的應(yīng)用難以得到廣泛的應(yīng)用三三. 概念的集成(概念的集成(64年)年) 引入了許多有趣的概念引入了許多有趣的概念1. 1. ALGOL 68ALGOL 68 . .以以零型文法零型文法描述形成規(guī)則描述形成規(guī)則 . .引入引入正交性正交性和和通用性通用性原則原則四四. 再一次突破再一次突破(60年代后期年代后期)l正交性正交性是從幾何中借來的術(shù)語。如果兩條是從幾何中借來的術(shù)語。如果兩條直線相交成直角,它們們就是正交的。用直線相交成直角,它們們就是正交的。用向量術(shù)語來說,這兩條直線互不依賴。向量術(shù)語來說,這兩條直線互不依賴。l在計算技術(shù)中,該術(shù)語用于表示某種在計算技術(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年安徽省淮北市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年黑龍江省黑河市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年遼寧省大連市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2021年安徽省合肥市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2021年四川省瀘州市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年江西省九江市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年物業(yè)買賣合同范本(含物業(yè)服務(wù)企業(yè)信息公開)3篇
- 2024年綠化景觀工程苗木采購承包合同2篇
- 2022-2024年中考道德與法治試題分項匯編:友誼的天空(解析版)
- 2024戊方提供財務(wù)咨詢服務(wù)合同
- 2024年國考行測真題-言語理解與表達(dá)真題及完整答案1套
- 人教版三年級上冊數(shù)學(xué)期末測試卷可打印
- 醫(yī)療高級職稱評審論文答辯
- 設(shè)計服務(wù)保障措施方案
- 軟件測試方案模板(完整版)
- 建筑幕墻工程(鋁板、玻璃、石材)監(jiān)理實施細(xì)則(全面版)
- 基于課程標(biāo)準(zhǔn)的學(xué)生創(chuàng)新素養(yǎng)培育的學(xué)科教學(xué)改進(jìn)研究課題申報評審書
- 批判性思維技能測試題及答案
- 人工智能教學(xué)實驗室建設(shè)方案
- 醫(yī)療人員廉潔從業(yè)九項準(zhǔn)則
- 培訓(xùn)費(fèi)收款收據(jù)模板
評論
0/150
提交評論