![ch1-編碼與程序設(shè)計語言原理-201721913555131_第1頁](http://file4.renrendoc.com/view4/M01/39/05/wKhkGGY-yZyARhjqAAEBWELavIE482.jpg)
![ch1-編碼與程序設(shè)計語言原理-201721913555131_第2頁](http://file4.renrendoc.com/view4/M01/39/05/wKhkGGY-yZyARhjqAAEBWELavIE4822.jpg)
![ch1-編碼與程序設(shè)計語言原理-201721913555131_第3頁](http://file4.renrendoc.com/view4/M01/39/05/wKhkGGY-yZyARhjqAAEBWELavIE4823.jpg)
![ch1-編碼與程序設(shè)計語言原理-201721913555131_第4頁](http://file4.renrendoc.com/view4/M01/39/05/wKhkGGY-yZyARhjqAAEBWELavIE4824.jpg)
![ch1-編碼與程序設(shè)計語言原理-201721913555131_第5頁](http://file4.renrendoc.com/view4/M01/39/05/wKhkGGY-yZyARhjqAAEBWELavIE4825.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Ch1編碼與程序設(shè)計語言原理
王超EmbeddedSystemLabSpring2017本章提綱編碼程序設(shè)計語言的原理與基本概念編碼編碼是最原始的程序設(shè)計語言編碼出現(xiàn)要遠(yuǎn)遠(yuǎn)早于計算機和程序常見的編碼形式摩爾斯碼字符編碼ASCII,Unicode,UTF-8,GB2312拼音、五筆二進制編碼條形碼與二維碼量子編碼DNA編碼摩爾斯編碼摩爾斯發(fā)明的的有線電報摩爾斯電碼的演變馬可尼的無線電報機1901年,馬可尼首次成功地實現(xiàn)了橫跨大西洋的無線電通信可以由任何能夠產(chǎn)生可控長短脈沖的裝置發(fā)送,解碼不需要使用專門設(shè)備,適合小功率通信摩爾斯電碼的優(yōu)勢A·
—J·
—
—
—S·
·
·1·
—
—
—
—[.]·
—
·
—
·
—[:]—
—
—
·
·
·B—
·
·
·K—
·
—T—2·
·
—
—
—[,]—
—
·
·
—
—[;]—
·
—
·
—
·C—
·
—
·L·
—
·
·U·
·
—3·
·
·
—
—[?]·
·
—
—
·
·[=]—
·
·
·
—D—
·
·M—
—V·
·
·
—4·
·
·
·
—[']·
—
—
—
—
·[+]·
—
·
—
·E·N—
·W·
—
—5·
·
·
·
·[!]—
·
—
·
—
—[-]—
·
·
·
·
—F·
·
—
·O—
—
—X—
·
·
—6—
·
·
·
·[/]—
·
·
—
·[_]·
·
—
—
·
—G—
—
·P·
—
—
·Y—
·
—
—7—
—
·
·
·[(]—
·
—
—
·["]·
—
·
·
—
·H·
·
·
·Q—
—
·
—Z—
—
·
·8—
—
—
·
·[)]—
·
—
—
·
—[$]·
·
·
—
·
·
—I·
·R·
—
·0—
—
—
—
—9—
—
—
—
·[&]·
—
·
·
·[@]·
—
—
·
—
·摩爾斯電碼摩爾斯電碼-二叉樹點“嘀”長度為1個單位,劃“噠”長度為3個單位同一字母中點劃間隔為1個單位同一詞中字母間隔為3個單位詞與詞間隔為7個單位摩爾斯電碼的時間控制QRA你臺的名稱是什么?QRV你準(zhǔn)備好了嗎?QRP要我降低發(fā)信機功率嗎?QTH你的地理位置在?QRS要我發(fā)得慢一些嗎?QSB我的信號有衰落嗎?QRT要我停止拍發(fā)嗎?QSL你能確認(rèn)聯(lián)絡(luò)嗎?QRU你有什么發(fā)給我嗎?QRZ誰在叫我?QRM你受到他臺干擾嗎?QSA我的信號強度怎樣?QRN你受到天電干擾嗎?QSY要我改用別的頻率拍發(fā)嗎?Q簡語與宏定義稱呼:U(你)/UR(你的)/OM(老朋友)/YL(女士)問候:GM(早上好)/GA(下午好)/GE(晚上好)狀況:RST(信號報告)/RIG(設(shè)備)/ANT(天線)/PWR(功率)/WX(天氣)/OP(操作員)其它:DE(這里是)/R(收到)/K(發(fā)送結(jié)束)/TNX(Thanks)/TU(Thankyou)/CLG(呼叫)/VY(非常)/PSE(請)/NW(現(xiàn)在)/SOS(緊急呼救)/73(Bestregards)/88(Loveandkisses)發(fā)送摩爾斯電碼的工具—電鍵手鍵美式(平頭)鍵簧較軟蘇式(圓頭)鍵簧較硬半自動鍵自動鍵單槳自動鍵(掃撥鍵)
雙槳自動鍵特別的手鍵布萊葉盲文編碼布萊葉編碼的歷史路易斯·布萊葉1809年出生于法國,1852去世ValentinHaüy(1745—1822),巴黎學(xué)校的創(chuàng)始人,發(fā)明了一種將字母凸印以供觸摸閱讀的方法。法國陸軍上尉CharlesBarbier在1819年發(fā)明了一種夜間文字的書寫體系,使用厚紙板上有規(guī)律凸起的點劃來供士兵們在夜間無聲地傳遞口信。布萊葉在上述原理基礎(chǔ)上進行改進,1823年創(chuàng)建了布萊葉編碼系統(tǒng)布萊葉編碼的編碼格式共64種編碼格式數(shù)字、字母和標(biāo)點符號—都被編碼成局限在2×3小格中一個或多個凸起的點。字母和數(shù)字的表示方法字母:例子:數(shù)字:例子:布萊葉編碼擴展(宏定義)二級布萊葉編碼條形碼與二維碼條形碼和二維碼條形碼(barcode)是將寬度不等的多個黑條和空白,按照一定的編碼規(guī)則排列,用以表達一組信息的圖形標(biāo)識符。PDF417碼QR碼UniversalProductCode條形碼的解碼條形碼的解碼第一個數(shù)字(在這里是0)被稱為數(shù)字系統(tǒng)字符,0的意思是說這是一個規(guī)范的條形碼。如果是具有不同重量的貨物(像肉類或其他商品),這個數(shù)字是2;訂單、票券的UPC編碼的第一個數(shù)字通常是5。緊接著的5個數(shù)字是制造商代碼。再后面的5個數(shù)字(01251)是該公司的某種產(chǎn)品的編號。最后的數(shù)字(這里是7)稱作模校驗字符,這個字符可用來進行另外一種錯誤檢驗。條形碼校驗為了解釋校驗字符是怎樣工作的,將前11個數(shù)字(是05100001251)各用一個字母來代替:ABCDEFGHIJK然后,計算下式的值:3×(A+C+E+G+I+K)+(B+D+F+H+J)3×(0+1+0+0+2+1)+(5+0+0+1+5)=3×4+11=23從緊挨它并大于等于它的一個10的整倍數(shù)中減去它,其結(jié)果稱為模校驗字符。緊挨23并大于等于23的一個10的整倍數(shù)是30,故:30-23=7這就是印在外包裝上并以UPC(UniversalProductCode)形式編碼的模校驗字符,這是一種冗余措施。如果掃描儀計算出來的模校驗結(jié)果和UPC中編碼中的校驗字不一致,計算機就不能將這個UPC作為一個有效值接收。二進制與邏輯門
需要復(fù)習(xí)的背景知識計算機組成原理二進制、八進制、十進制、十六進制的轉(zhuǎn)換與、或、非、同或、異或、或非、與非全加器、半加器、反向器原碼、反碼、補碼鎖存器、觸發(fā)器擴充的2的各次冪的表不同進制之間的轉(zhuǎn)換常見的邏輯門與、或、非、與非、或非、與或非、異或、同或量子編碼
量子編碼量子計算是利用量子力學(xué)來大幅度加速計算,微軟,谷歌,英特爾和IBM投入了數(shù)千萬美元,通過不同的量子位技術(shù)來實現(xiàn)一臺實用的量子計算機。量子計算機處理的信息是以量子位的形式存儲的,每個量子位可以使1或0或這兩個狀態(tài)的疊加,因此可以表示比傳統(tǒng)的二進制更多的數(shù)據(jù)。它有望解決人類一些最復(fù)雜的問題。它得到了亞馬遜創(chuàng)始人兼CEOJeffBezos、NASA和CIA的支持。每一臺造價10,000,000美元并且在零下459度下運行。而且沒人知道它究竟是怎樣工作的。量子計算機/article/1554/16/1204/07/C7E3H6A7001687H3.htmlIBM使用格型架構(gòu)(latticearchitecture)的5量子位處理器,其可以擴展成更大更強的量子計算機和1950年代早期的計算機一樣,今天的量子計算機要占據(jù)一整個實驗室量子計算的研究硬件加拿大的D-Wave公司首先實現(xiàn)了16個超導(dǎo)量子比特的量子計算機,可以提高優(yōu)化問題的效率。谷歌和IBM都是用超導(dǎo)量子技術(shù)來實現(xiàn)計算設(shè)備。英特爾投資荷蘭代爾夫特理工大學(xué)的量子技術(shù)研究項目QuTech,使用“硅原子點”技術(shù),通過向純硅中加入電子造出的人造原子,微波控制電子的量子態(tài)。微軟選擇基于非阿貝爾任意子的拓?fù)淞孔颖忍?,電子通過半導(dǎo)體結(jié)構(gòu)時會出現(xiàn)準(zhǔn)離子,他們交叉路徑可以用來編寫量子信息,可以減少錯誤修正比特數(shù)量,還需要進一步驗證其是否存在。ionQ的ChrisMonroe堅持囚禁離子技術(shù),并在馬里蘭大學(xué)的實驗室客服對離子控制的挑戰(zhàn)。超導(dǎo)量子位(superconductingqubits)囚禁離子(trappedions)量子計算的研究軟件微軟聯(lián)合加州大學(xué)圣芭芭拉分校StationQ實驗室,Redmod的QuArC團隊Intel-荷蘭戴爾福特理工大學(xué)的QuTech實驗室普渡大學(xué)的StationQPurdue實驗室馬里蘭大學(xué),悉尼大學(xué),哥本哈根大學(xué)的QDev實驗室谷歌與加州大學(xué)圣芭芭拉分校JohnM.Martinis團隊合作利用超導(dǎo)體建立量子計算機IBM的沃森實驗室耶魯大學(xué)Schoelkopf實驗室NASA量子人工智能實驗室中科院量子信息重點實驗室等團隊均在關(guān)注量子計算領(lǐng)域。目標(biāo)應(yīng)用加解密將兩個大素數(shù)(萬位以上)相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰,計算機需要處理幾千年。2001年,IBM使用一臺7量子位的量子計算機求解了15的因子3和52012年,一個研究團隊求解了21的因子。然后到了2014年,一種被稱為極小化算法(minimizationalgorithm)的前沿方法成功求解了56,153的因子。仿真IBM開放量子計算仿真平臺/qstage/DNA編碼
DNA編碼與基因測序通過檢測DNA,并通過測序技術(shù),與目標(biāo)DNA進行對比。為什么測序?疾病檢測預(yù)防與治療人工培育工作流程測序(Sanger法)測序與匹配與目標(biāo)串進行比對(串匹配算法)基因變異,允許誤差(靈敏度)技術(shù)發(fā)展-成本降低/sequencingcostsdata/目前主要挑戰(zhàn)性問題計算和存儲的增長速度與數(shù)據(jù)規(guī)模難以匹配Thecancergenome,MichaelR.Stratton,PeterJ.Campbell&P.AndrewFutreal,Nature458,719-724(9April2009)數(shù)據(jù)規(guī)模增長速度:2年10倍存儲增長速度:2年4倍處理器增長速度:18個月2倍作業(yè)1、復(fù)習(xí)二進制、八進制、十進制、十六進制之間的互相轉(zhuǎn)換2、復(fù)習(xí)邏輯門和移位等操作的物理結(jié)構(gòu)與操作原理3、調(diào)研QR二維碼的識別過程4、閱讀量子計算機和DNA測序的相關(guān)文獻或者論文程序設(shè)計語言原理本章內(nèi)容程序設(shè)計語言的發(fā)展計算模型和語言范型語言:標(biāo)準(zhǔn)和實現(xiàn)語言的開發(fā)和標(biāo)準(zhǔn)化新趨勢程序設(shè)計語言的發(fā)展程序是計算機科學(xué)技術(shù)領(lǐng)域最基本最核心的概念,有計算機就必須有程序,有描述程序的手段和方式,即,必須有描述程序的程序設(shè)計語言硬件計算機,就是機器語言程序的執(zhí)行器(解釋器)計算機硬件只能處理二進制形式的程序(機器語言程序)。如
MIPS機器語言:用歐幾里得算法求GCD的程序機器語言,人很難閱讀、理解、使用使用機器開發(fā)程序的成本高昂,耗時巨大,容易出錯,難以檢查,依賴于具體計算機,移植困難程序設(shè)計語言的發(fā)展為解決程序的易寫和可讀性,人們發(fā)展了符號形式的匯編語言。例每條指令都很容易理解,容易書寫和閱讀仍用與機器語言直接對應(yīng)的簡單線性形式。沒有高級結(jié)構(gòu),不支持程序的高級組織,大型程序難以理解和開發(fā),移植性差MIPS匯編語言:GCD程序Top10編程語言TIOBE指數(shù)走勢(2002-2016)2016-12月編程語言排行榜TOP20為什么有這么多語言計算機的應(yīng)用領(lǐng)域豐富多彩不同領(lǐng)域、不同具體應(yīng)用對于合適的語言有不同要求一種語言無法最好地滿足所有應(yīng)用的需要語言設(shè)計的許多方面有很多選擇不同的設(shè)計選擇通常是各有各的優(yōu)點和缺點常常是“魚和熊掌不可兼得”新應(yīng)用領(lǐng)域和應(yīng)用需求不斷出現(xiàn)不同領(lǐng)域(任務(wù))有特殊的功能或描述方式的要求為滿足新需要,人們常常設(shè)計出新的語言如網(wǎng)絡(luò)、實時應(yīng)用、圖形用戶界面,業(yè)務(wù)處理等為什么有這么多語言硬件發(fā)展,例如速度、容量、并行機、RISC等有些過去認(rèn)為“奢侈”的特征,由于有助于軟件系統(tǒng)的開發(fā)者,慢慢變成必備的特征(如GC)例:近來多核多處理器系統(tǒng)正在快速發(fā)展,要求新的編程方式和技術(shù),將推動語言里支持并行程序設(shè)計的特征的大發(fā)展安迪-比爾定律程序技術(shù)發(fā)展,如結(jié)構(gòu)化程序設(shè)計(結(jié)構(gòu)化程序設(shè)計語言)面向?qū)ο蟮某绦蛟O(shè)計(面向?qū)ο蟮恼Z言)腳本技術(shù),等應(yīng)用的驅(qū)動和牽引程序設(shè)計語言的發(fā)展計算模型和語言范型語言:標(biāo)準(zhǔn)和實現(xiàn)語言的開發(fā)和標(biāo)準(zhǔn)化新趨勢計算模型和語言范型形成許多程序設(shè)計語言的另一重要原因:對計算過程可以有多種不同看法,由此產(chǎn)生了不同的計算模型(范型,Paradigms)基于不同計算范型產(chǎn)生了不同的語言類(語言范型)。主要范型有:過程式范型(Procedural,或稱命令式,Imperative):把計算看成一系列操作的執(zhí)行,基本計算元素是一組基本操作。計算在一個環(huán)境里進行,操作的效果就是改變環(huán)境的狀態(tài):語言提供一組基本操作和一組描述組合操作的手段,提供的抽象手段是定義新操作(定義過程)。過程實現(xiàn)大步的狀態(tài)變換寫程序就是描述操作執(zhí)行的順序過程,描述狀態(tài)和狀態(tài)的變化常規(guī)語言,如C,Pascal,F(xiàn)ortran等,都是命令式語言計算模型和語言范型函數(shù)式范型(Functional):把計算看成對數(shù)據(jù)的函數(shù)變換,一個計算就是一系列函數(shù)變換基本計算元素是一組基本函數(shù),語言提供各種函數(shù)組合機制(復(fù)合、函數(shù)選擇),抽象手段是定義新函數(shù)(允許遞歸定義)最早的函數(shù)式語言是JohnMcCarthy開發(fā)的Lisp。目前最重要的函數(shù)式語言包括CommonLisp,Scheme,ML和Haskell等。Scheme例子Scheme語言是LISP語言的一個方言(或說成變種),它誕生于1975年的MIT??梢圆捎肎uile(GNU‘sextensionlanguage)。Guile是GNU工程的一個項目,它是GNU擴展語言庫,它也是Scheme語言的一個具體實現(xiàn)。變量定義(definea100)(set!a“xyz")Lambda關(guān)鍵字來定義過程(defineadd5(lambda(x)(+x5)))(add51)=>5(definesquare(lambda(x)(*xx)))過程的嵌套定義(definefix(lambda(xyz)(defineadd(lambda(ab)(+ab)))(-x(addyz))))(display(fix1002030))Scheme代碼的結(jié)構(gòu)順序結(jié)構(gòu)if結(jié)構(gòu)Case結(jié)構(gòu)遞歸(begin(display"Helloworld!");輸出"Helloworld!"(newline));換行(if(=x0)(display"iszero")(display"notzero"))(case(*23)((2357)'prime)((14689)'composite))參考Lisp和Scheme相關(guān)語言教程,結(jié)論:語法簡潔、效率高(definefactoral(lambda(x)(if(<=x1)1(*x(factoral(-x1))))))語言范型面向?qū)ο蟮姆缎停∣bject-Oriented)把計算看成是一批獨立對象相互作用的效果。OO語言提供描述(定義)對象及其行為的機制以及描述對象之間相互作用的機制比較純的OO語言Smalltalk,Java等基于類的語言,程序中定義類,對象是類的實例JavaScript,是基于對象的語言,通過原型概念定義新的類似對象其他支持OO概念和編程方法的語言包括C++,Ada95等語言范型說明式語言(Declarative),包括邏輯式語言(Logical)關(guān)系式語言(Relational)基于限制的語言(Constraint)基本想法是只描述需要做什么,不描述怎樣做例如:可能是只描述被計算對象之間的邏輯關(guān)系;或者描述問題的解應(yīng)該滿足的條件約束語言的實現(xiàn)通過很復(fù)雜機制提供一種通用的計算過程,它能根據(jù)具體“程序”的說明性描述產(chǎn)生出所需的結(jié)果例:邏輯式語言Prolog;數(shù)據(jù)庫查詢語言Datalog近年很受重視的ConstraintLanguage和ConstraintProgrammingProlog例子Prolog(ProgramminginLogic的縮寫)是一種邏輯編程語言。它建立在邏輯學(xué)的理論基礎(chǔ)之上,最初被運用于自然語言等研究領(lǐng)域。例:father(a,b).a是b的父親father(c,d).c是d的父親brother(a,c).a和c是兄弟關(guān)系uncle(X,Y):-brother(X,Z),father(Z,Y).?-uncle(a,U).問題:a是誰的叔叔?(U=?)求解過程第一步,uncle(a,U)與事實逐個匹配,不成功第二步,與規(guī)則頭部匹配,有{a/X,U/Y}轉(zhuǎn)換成兩個子問題brother(a,Z),father(Z,U)brother(a,Z)與事實匹配,得到{c/Z}代入第二個子問題,有father(c,U),與事實匹配,得到{d/U},即U=d,解是:a是d的叔叔father(a,b).a是b的父親father(c,d).c是d的父親brother(a,c).a和c是兄弟關(guān)系uncle(X,Y):-brother(X,Z),father(Z,Y).語言范型腳本語言(ScriptingLanguage),從操作系統(tǒng)命令語言和文本處理語言發(fā)展起來的一類語言。通常:提供一批高級數(shù)據(jù)結(jié)構(gòu),提供靈活的變量、函數(shù)、對象等機制采用解釋方式實現(xiàn),使用靈活方便許多腳本語言提供了高級的文本處理功能代表性的Shell,Bash,Python,Perl,Tcl/Tk等。其他語言:文本描述語言Postscript,也是一種完整的程序設(shè)計語言儀器控制語言Forth,是一種完整的基于棧的程序設(shè)計語言硬件描述語言
Verilog和VHDL……程序設(shè)計語言的發(fā)展計算模型和語言范型語言:標(biāo)準(zhǔn)和實現(xiàn)語言的開發(fā)和標(biāo)準(zhǔn)化新趨勢語言:標(biāo)準(zhǔn)和實現(xiàn)要弄清某個語言寫的程序的意義,我們應(yīng)該怎么做?問題:什么定義了一個程序設(shè)計語言?將程序輸入計算機,編譯后試運行,看結(jié)果參考語言的標(biāo)準(zhǔn)文本(或稱語言規(guī)范),它定義了語言的語法形式(合法程序的形式)形式合法的程序結(jié)構(gòu)的語義明確說明“規(guī)范”對某些東西未予定義參考廣泛使用的實現(xiàn),作為幫助理解的輔助工具同一語言可能有若干標(biāo)準(zhǔn)文本。如:C++1998,2010語言:標(biāo)準(zhǔn)和實現(xiàn)一個語言的規(guī)范文本常常沒有把該語言的一切問題都定義清楚,而是留下一些不加定義的事項。為什么出現(xiàn)這種情況?例:C語言未規(guī)定函數(shù)參數(shù)的求值順序,二元運算符運算對象的求值順序。除可能是語言設(shè)計者的失誤外,許多不完全是有意的,目的是:使語言處理程序(例如編譯器)的開發(fā)者有更大的工作空間,使之能選擇最適合實際運行環(huán)境的實現(xiàn)方式為使定義的程序設(shè)計語言具有更好的普遍適應(yīng)性,能適應(yīng)不同計算機體系結(jié)構(gòu),容易在不同計算機上實現(xiàn)為目標(biāo)程序的優(yōu)化提供更多可能性規(guī)范的不完全性,有可能導(dǎo)致同一個程序在不同實現(xiàn)上(如gcc/VC/…)的行為不同。影響用該語言寫出的程序的可移植性(提示:應(yīng)盡可能寫不依賴于具體實現(xiàn)特征的程序,或?qū)⒖赡苡幸蕾囆缘拇a局部化)增加了學(xué)習(xí)和掌握語言的負(fù)擔(dān)語言:標(biāo)準(zhǔn)和實現(xiàn)例外:Java語言規(guī)范幾乎把所有的東西都規(guī)定清楚。例如各種數(shù)據(jù)的二進制表示方式、表達式求值順序的各個方面,等等這樣做的優(yōu)點和缺點:提高了程序的可移植性(一次書寫處處使用)提高了程序的安全性限制了新實現(xiàn)方式和新實現(xiàn)技術(shù)的應(yīng)用限制了目標(biāo)代碼優(yōu)化的可能性一些機器可能不適合Java語言的具體需求,因此難以高效實現(xiàn)Java影響用Java寫出的程序的效率語言:標(biāo)準(zhǔn)和實現(xiàn)語言的實現(xiàn)根據(jù)某語言的標(biāo)準(zhǔn)文本開發(fā)的語言處理系統(tǒng),稱為該語言的一個實現(xiàn)早期的一個語言實現(xiàn)只是一個語言處理程序(例如編譯器)今天,語言的實現(xiàn)已經(jīng)發(fā)展為一類規(guī)模巨大的軟件系統(tǒng),通常包括:語言的處理器。使用該語言寫出的程序可以在計算機上執(zhí)行程序開發(fā)工具。如編輯器、調(diào)試器、代碼瀏覽工具、代碼檢查工具、代碼優(yōu)化工具、模擬運行工具等等標(biāo)準(zhǔn)庫和豐富的增強庫C++的一個實現(xiàn),就是根據(jù)C++標(biāo)準(zhǔn)做的一個處理C++程序的軟件系統(tǒng),例如:BorlandC++系統(tǒng),GCC系統(tǒng),VisualC系統(tǒng)等;同一個實現(xiàn)還可能有許多不同版本(例如VisualC6.0-VisualStudio2016)《Borland傳奇》語言:標(biāo)準(zhǔn)和實現(xiàn)語言的實現(xiàn)可能與標(biāo)準(zhǔn)不同:語言規(guī)范中所有未明確定義的東西,實現(xiàn)時都必須確定(可任意選擇)可能對語言規(guī)范做一些擴充(擴充語法、語義、庫等)可能沒有實現(xiàn)語言規(guī)范的一些特征可能對某些特征的實現(xiàn)是錯誤的一個語言可能有一些不同的實現(xiàn),每個實現(xiàn)可能有多個不同版本不同實現(xiàn)可以都符合語言標(biāo)準(zhǔn),但相互之間又存在許多差異(不兼容)不同實現(xiàn)可能采用不同的技術(shù),尤其是可能采用不同程度的優(yōu)化。因此在程序加工速度和程序執(zhí)行效率方面都可能有很大差異具體語言實現(xiàn)需要考慮:盡可能地利用硬件和平臺軟件的功能和特點為所在平臺上的應(yīng)用系統(tǒng)開發(fā)提供方便提綱程序設(shè)計語言的發(fā)展計算模型和語言范型語言:標(biāo)準(zhǔn)和實現(xiàn)語言的開發(fā)和標(biāo)準(zhǔn)化新趨勢語言的開發(fā)和標(biāo)準(zhǔn)化語言開發(fā)的初始階段:一個人或一個設(shè)計組,根據(jù)對實際程序設(shè)計所需的一批基本要素的考慮,提出有關(guān)語言的基本構(gòu)想,定義該語言的語法形式和語義實現(xiàn)一個語言處理系統(tǒng),使這個語言能實際用于程序設(shè)計通過一些人的使用和反饋,修改完善語言的設(shè)計少數(shù)比較成功的語言可能進入下面階段:將語言的處理系統(tǒng)提供給更大范圍的用戶,并得到更多反饋除語言設(shè)計者(擁有者)外的其他人參與該語言實現(xiàn)的研究和開發(fā),并引起軟件產(chǎn)業(yè)界的注意,形成語言實現(xiàn)的產(chǎn)品和用戶社區(qū)受到標(biāo)準(zhǔn)化組織的注意,成立相應(yīng)標(biāo)準(zhǔn)化小組(公司語言版權(quán)問題)經(jīng)過認(rèn)真的標(biāo)準(zhǔn)化工作,產(chǎn)生語言的標(biāo)準(zhǔn)化文本參考:《C++語言的設(shè)計和演化》,中譯本:機械工業(yè)2002語言的開發(fā)和標(biāo)準(zhǔn)化語言標(biāo)準(zhǔn)化的主要工作:嚴(yán)格檢查語言中的各種結(jié)構(gòu),嚴(yán)格定義它們的形式和意義根據(jù)客觀情況的需要,考慮加入新特征并給出嚴(yán)格定義處理語言中各方面的一致性問題考慮并確定語言中過時的舊特征,明確說明這些特征將逐步被淘汰標(biāo)準(zhǔn)化通常是一個很困難的過程,其中一個困難是遺產(chǎn)問題:與標(biāo)準(zhǔn)化前的版本或者前一個標(biāo)準(zhǔn)化版本的向后兼容問題大的改變,可能使許多已有程序變得不再合法,招致老用戶的反對不改變,語言就可能由于逐漸過時而被淘汰Fortran的幾次標(biāo)準(zhǔn)化(尤其是Fortran90),Ada95的標(biāo)準(zhǔn)化,都特別明顯地反應(yīng)了這些問題。C++也做了兩次標(biāo)準(zhǔn)化(1998,2010)語言的實現(xiàn):抽象機器一部計算機就是連接起來的一組硬件器件其作用是實現(xiàn)機器語言程序描述的計算過程使用者可以不關(guān)心其內(nèi)部實現(xiàn),只關(guān)心其機器語言(指令形式和意義)即使具體的硬件變了,只要它們提供的機器語言不變,使用方式?jīng)]變,以前的程序都仍然可以用因此:機器語言可以看作計算機硬件的“抽象”。一種機器語言對應(yīng)一類計算機,或說對應(yīng)于一種“抽象計算機”。如X86機器語言一種高級語言也可以看作是一種抽象“計算機”的機器語言例:C語言,可以看作能直接執(zhí)行C程序的高級“計算機”的“機器語言”該“計算機”提供了C語言的各種基本的和高級的數(shù)據(jù)結(jié)構(gòu)能執(zhí)行C語言的各種基本計算,基本操作和控制結(jié)構(gòu)計算機的抽象層次問題與軟硬件等效性語言的實現(xiàn)語言的實現(xiàn)牽涉到兩種抽象機器(兩種語言):需要實現(xiàn)的程序語言定義了一臺抽象機某種現(xiàn)存的準(zhǔn)備用于運行程序的計算機也定義了一臺抽象機實現(xiàn)一種語言,就是在一臺抽象機上做出另一臺抽象機,用一臺已有的抽象機去模擬另一需要實現(xiàn)的抽象機的行為(扮演另一不同的抽象機)通用圖靈機的存在性以及圖靈論題說明:在抽象機A上實現(xiàn)抽象機B,就是希望基于A執(zhí)行用B的語言寫的程序如何在抽象機A上實現(xiàn)抽象機B?存在哪些可能的技術(shù)路線?實現(xiàn):方式常見的說法是(高級)語言的實現(xiàn)有兩種方式,編譯和解釋。編譯:把源程序編譯為機器語言目標(biāo)程序后執(zhí)行解釋:在目標(biāo)機器上實現(xiàn)一個源語言的解釋器,由這個解釋器直接解釋執(zhí)行源語言程序(它實際上實現(xiàn)了另一部抽象機)實現(xiàn):方式語言實現(xiàn)方式多種多樣,純粹的編譯或純粹的解釋只是兩個極端C語言的常見實現(xiàn)方式可以認(rèn)為是比較純粹的編譯方式腳本語言(JavaScript、VBScript、Perl、Python、Ruby、MATLAB、BASIC)實現(xiàn),采用的基本上是純粹的解釋方式實現(xiàn):LispLisp的基本實現(xiàn)方式:先把源程序翻譯成一種內(nèi)部形式(類似于語法樹的數(shù)據(jù)結(jié)構(gòu))由解釋器解釋這種內(nèi)部形式(遍歷數(shù)據(jù)結(jié)構(gòu),實現(xiàn)程序所描述的行為)許多Lisp系統(tǒng)的翻譯器比較簡單(翻譯較淺)這只是一種常見的基本實現(xiàn)方式目前也有許多Lisp系統(tǒng)采用更復(fù)雜的實現(xiàn)方式,例如采用即時編譯(Just-In-TimeCompilation)即動態(tài)編譯(DynamicCompilation)技術(shù)實現(xiàn):JavaJava的基本實現(xiàn)方式與Lisp類似,但所用的中間表示(字節(jié)碼,bytecode)更接近計算機(翻譯較深),而且有外部存儲形式(獨立存在)由于Java已成為軟件開發(fā)的一種主流語言,Java程序的執(zhí)行效率受到特別重視,人們用了許多技術(shù)來提高執(zhí)行效率(這些技術(shù)都是早在函數(shù)式語言領(lǐng)域開發(fā)的)即時編譯(JIT):在裝載字節(jié)碼程序時,即時地將程序編譯為運行所在的機器的本地代碼程序,而后直接執(zhí)行(由硬件直接解釋)Hotspot和動態(tài)編譯:為避免即時編譯帶來大的開銷,開始時直接解釋執(zhí)行并監(jiān)視執(zhí)行情況,如果發(fā)現(xiàn)熱點(如頻繁執(zhí)行的循環(huán)、頻繁調(diào)用的函數(shù)),就動態(tài)編譯這部分代碼,生成本地代碼實現(xiàn):C++第一個C++實現(xiàn)(B.Stroustrup)用一個編譯器把C++源程序編譯為標(biāo)準(zhǔn)C語言程序,而后就可以用任何C編譯器實現(xiàn)這個C++編譯器做完全的語法和靜態(tài)語義檢查,如果完成第一個編譯,得到的C程序是沒有錯誤的現(xiàn)在許多試驗性語言和實現(xiàn)采用把C語言作為編譯器目標(biāo)的技術(shù)B.Stroustrup在《C++語言的設(shè)計和演化》里仔細(xì)討論了這種實現(xiàn)許多計算機(特別是一些CISC機器)采用微程序結(jié)構(gòu)硬件提供一套微指令,對外提供的機器指令集通過一組微程序?qū)崿F(xiàn),由一個硬件的微程序解釋器解釋執(zhí)行在這種機器上,編譯器生成的結(jié)果并不是硬件可直接執(zhí)行的微代碼,而是CPU的硬件解釋器實現(xiàn)的外部代碼,由硬件解釋器解釋執(zhí)行,也可能用編譯器直接實現(xiàn)微代碼實現(xiàn)程序功能的實現(xiàn)通常可以分為兩個階段:靜態(tài)處理階段(static),在程序本身開始執(zhí)行前的處理。通常包括:翻譯階段(編譯):對源程序做各種檢查(語法檢查,類型檢查等)和變換,將其轉(zhuǎn)變?yōu)槟撤N適宜動態(tài)執(zhí)行的形式連接階段(可能):構(gòu)造出可動態(tài)運行的程序形式裝載階段(可能):把可運行程序裝入運行環(huán)境,必要的處理動態(tài)執(zhí)行階段(run-time),指程序的實際運行期間例:若變量x的(絕對或相對)位置可靜態(tài)確定,運行中就可以直接訪問。若不能靜態(tài)確定,運行中每次訪問都要查表,效率就比較低語言的“編譯實現(xiàn)”:在靜態(tài)階段完成盡可能多的處理工作,對源程序做深入的分析和變換,生成的目標(biāo)形式通常與源程序差異巨大實現(xiàn)編譯實現(xiàn):源程序只處理一次,可任意次執(zhí)行;運行效率高,可通過深度優(yōu)化而盡量利用運行平臺的特點;目標(biāo)程序運行時不需要復(fù)雜的運行系統(tǒng)支持編譯耗時;源程序的許多信息在編譯時舍棄;靈活性差(編譯時把許多變量固定);對程序開發(fā)的支持比較復(fù)雜解釋實現(xiàn):可以提供更大的靈活性(例如程序可以動態(tài)變化);源程序的信息可用;比較容易實現(xiàn)功能強大的程序開發(fā)系統(tǒng)可能要反復(fù)檢查分析程序的信息,導(dǎo)致較低執(zhí)行效率;難做程序優(yōu)化有些語言或語言特征難以編譯實現(xiàn)常規(guī)語言(如C/Fortran)的主要設(shè)計目標(biāo)之一就是有效的編譯實現(xiàn)一些程序開發(fā)環(huán)境結(jié)合了這兩方面,在開發(fā)時解釋執(zhí)行,發(fā)布前編譯語法、語義和語用:簡述語法:規(guī)定合法程序的形式,常用某種形式化描述,如范式等語法描述方式清晰定義語言中各種結(jié)構(gòu)的形式。(編譯原理課程的內(nèi)容)上下文關(guān)系通常用自然語言說明,例如:變量要先定義后使用,表達式里的變量應(yīng)該與運算符的類型匹配。這類規(guī)定也被稱為靜態(tài)語義,編譯器可以檢查有關(guān)規(guī)則。這方面最重要的是“類型檢查”語義:規(guī)定合法的程序(各種程序結(jié)構(gòu))的意義,即程序執(zhí)行時所產(chǎn)生的效果。語言手冊中用盡可能嚴(yán)格的自然語言敘述。形式語義學(xué):研究如何用嚴(yán)格的形式化的方式,定義程序設(shè)計語言的語義,進而也就定義了所有程序的語義。(計算機系的研究生課)語用:程序設(shè)計技術(shù),具體語言的使用技術(shù)和慣用法等。這些不是語言規(guī)范規(guī)定的,但語言的設(shè)計中隱含了對這些方面的許多考慮。(程序設(shè)計技術(shù),程序設(shè)計方法學(xué),設(shè)計模式等等)可參考陳意云老師的編譯原理和程序設(shè)計語言理論課程/~yiyun/語言的設(shè)計目標(biāo)及其演化早期語言設(shè)計中最主要的考慮是易用性(與機器和匯編語言比較)和高效實現(xiàn),特別關(guān)注程序能翻譯成高效執(zhí)行的代碼,因為這樣才可能被接受(如Fortran等)。隨著計算機變得越來越快,效率問題雖然還是很重要,但重要性已大大下降。易用性方面的考慮仍非常明顯:提高程序設(shè)計工作的效率幫助人們提高程序(軟件)的質(zhì)量,可靠性設(shè)法支持某些高級的軟件設(shè)計技術(shù)語言的最主要作用是用于描述所需要的計算過程。為此需要:清晰簡潔的形式(例子:C,Pascal)清晰簡單的語義(易理解,易驗證)可讀性(人容易閱讀理解,計算機也容易處理)語言設(shè)計:目標(biāo)演化隨著程序設(shè)計語言的發(fā)展,語言的設(shè)計目標(biāo)也發(fā)生了很大變化語言的初始設(shè)計目標(biāo)就是更方便地為計算機寫程序后來人們認(rèn)識到,程序設(shè)計語言也是人的工具,用于描述算法、交流算法,用于服務(wù)于交流、教學(xué)和科研的需要隨著計算機應(yīng)用發(fā)展,程序變得越來越復(fù)雜,開發(fā)程序變成代價高昂的工作。為支持復(fù)雜程序開發(fā),提高開發(fā)工作的效率,語言設(shè)計有了許多新目標(biāo):1,支持對基本語言的擴充,提供各種擴充定義和抽象機制過程、函數(shù)定義機制,擴充語言的基本操作數(shù)據(jù)類型定義機制(及OO機制),擴充數(shù)據(jù)描述方式和功能例:C++在語言機制擴充方面有許多考慮(如運算符重載)可擴充語言(ExtendableLanguages),允許程序形式的改變(Lisp)語言設(shè)計:目標(biāo)演化2,提供支持復(fù)雜程序所需的高級組織的機制,支持大型程序開發(fā)模塊機制(信息隔離和屏蔽)支持分別編譯的機制,支持程序的物理組織3,支持軟件重用,包括軟件中的部分的重用支持通用的基本程序庫。Pascal失敗之處之一就是忽略了庫的開發(fā)。C,C++和Java的設(shè)計都特別考慮了對庫的支持。許多新語言定義了功能非常豐富的標(biāo)準(zhǔn)程序庫支持庫開發(fā):庫是最基本的重用方式。是否支持庫開發(fā),決定了語言能否大范圍使用。支持用戶和第三方供應(yīng)商開發(fā)各種擴充的和專用的庫語言設(shè)計:通用和專用常規(guī)程序語言是通用的(generalpurposelanguages),設(shè)計目標(biāo)是支持所有可能的程序的開發(fā)工作隨著應(yīng)用的發(fā)展,程序變得越來越復(fù)雜,程序的規(guī)模越來越大。直接在基本語言機制的基礎(chǔ)上描述特殊的功能也變得越來越困難在常規(guī)語言的基礎(chǔ)上支持專門用途的可能方式:擴充常規(guī)語言,增加特殊的服務(wù)于專門用途的機制。這方面的例子:
數(shù)據(jù)庫查詢,圖形用戶界面,異常處理等等利用常規(guī)語言的擴充機制,開發(fā)支持特殊使用領(lǐng)域的程序庫,實例:
擴充的標(biāo)準(zhǔn)庫(如Java和許多腳本語言),支持平臺開發(fā)的擴充庫,各種第三方軟件商提供的庫在常規(guī)語言里支持專門應(yīng)用,受到基本語言的描述方式的限制。處理復(fù)雜問題的一種途徑是使用專門的描述方式,設(shè)計提供特殊的專門用途語言。復(fù)習(xí)-編碼常見的編碼形式摩爾斯碼(編碼表示-二叉樹)盲文碼(64種碼文)二進制編碼(二、八、十、十六進制轉(zhuǎn)換)條形碼(解碼過程)量子編碼DNA編碼如何設(shè)計一個簡單的編碼和解碼系統(tǒng)?二進制:高低、強弱、深淺、多進制:音樂、圖畫程序設(shè)計語言程序設(shè)計語言的發(fā)展機器語言->匯編語言->高級語言計算模型和語言范型過程式: C函數(shù)式: Scheme(語法例子)面向?qū)ο? Java邏輯式: Prolog(例子)程序設(shè)計語言語言:標(biāo)準(zhǔn)和實現(xiàn)翻譯和解釋純編譯C純解釋腳本語言編譯+解釋Java-Lisp即時編譯和動態(tài)編譯優(yōu)化微程序優(yōu)化語言設(shè)計:實例不同設(shè)計目標(biāo)導(dǎo)致了不同的語言設(shè)計:Fortran:高效的大規(guī)模數(shù)值計算Lisp:靈活的符號表達式處理,數(shù)據(jù)與程序的統(tǒng)一Pascal:結(jié)構(gòu)化程序設(shè)計,教學(xué),清晰的基本程序設(shè)計概念C:系統(tǒng)程序設(shè)計,低級操作與高級語言結(jié)構(gòu)的結(jié)合Smalltalk:概念的統(tǒng)一性和最小化,面向?qū)ο驝++:復(fù)雜的系統(tǒng)程序設(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 木工包清工合同
- 高層建筑裝修安全合同范例
- 2025年度包裝咨詢行業(yè)集體勞動合同(含員工培訓(xùn))
- 二零二五年度辦公室智能化改造勞動合同模板
- 房屋買賣委托代理合同年
- 電子支付領(lǐng)域的風(fēng)險控制與安全管理
- 農(nóng)業(yè)產(chǎn)業(yè)鏈智能化改造與升級指南
- 合同轉(zhuǎn)包協(xié)議書
- 商品房買賣合同發(fā)布
- 勞務(wù)承包合同書樣本
- 2016-2023年婁底職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 貴陽市2024年高三年級適應(yīng)性考試(一)一模英語試卷(含答案)
- 地理標(biāo)志專題通用課件
- 魚類和淡水生態(tài)系統(tǒng)
- 全國大學(xué)高考百科匯編之《哈爾濱工業(yè)大學(xué)》簡介
- 《小英雄雨來》讀書分享會
- 學(xué)校安全教育教你如何遠(yuǎn)離危險
- 【人教版】九年級化學(xué)上冊全冊單元測試卷【1-7單元合集】
- 中國傳統(tǒng)文化課件6八卦五行
- 口腔科導(dǎo)診分診技巧(PPT課件)
- 圓筒混料機-設(shè)計說明書
評論
0/150
提交評論