日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
談一談編程語言的進(jìn)化史

編寫計(jì)算機(jī)程序所用的語言是人與計(jì)算機(jī)之間交換的工具,按語言對機(jī)器的依賴程度分為機(jī)器語言、匯編語言和高級語言。

機(jī)器語言(Machine Language)

機(jī)器語言是面向機(jī)器的語言,每一個(gè)由機(jī)器語言所編寫的程序只適用于某種特定類型的計(jì)算機(jī),即指令代碼通常隨CPU型號的不同而不同。它可以被計(jì)算機(jī)硬件直接識別,不需要翻譯。一句機(jī)器語言實(shí)際上就是一條機(jī)器指令,它由操作碼和地址碼組成。機(jī)器指令的形式是用0、1組成的二進(jìn)制代碼串。

匯編語言(Assemble Language)

匯編語言是一種面向機(jī)器的程序設(shè)計(jì)語言,它是為特定的計(jì)算機(jī)或計(jì)算機(jī)系列設(shè)計(jì)的。匯編語言采用一定的助記符號表示機(jī)器語言中指令和數(shù)據(jù),即用助記符號代替了二進(jìn)制形式的機(jī)器指令。這種替代使得機(jī)器語言“符號化”,所以匯編語言也是符號語言。每條匯編語言的指令就對應(yīng)了一條機(jī)器語言的代碼,不同型號的計(jì)算機(jī)系統(tǒng)一般有不同的匯編語言。

計(jì)算機(jī)硬件只能識別機(jī)器指令,執(zhí)行機(jī)器指令,對于用助記符表示的匯編指令是不能執(zhí)行的。匯編語言編寫的程序要執(zhí)行的話,必須用一個(gè)程序?qū)R編語言翻譯成機(jī)器語言程序,用于翻譯的程序稱為匯編程序(匯編系統(tǒng))。

匯編程序是將用符號表示的匯編指令碼翻譯成為與之對應(yīng)的機(jī)器語言指令碼。用匯編語言編寫的程序稱為源程序,變換后得到的機(jī)器語言程序稱為目標(biāo)程序。

高級語言

機(jī)器語言與匯編語言受機(jī)器限制費(fèi)工費(fèi)時(shí),并且缺乏通用性,為解決此問題,人們努力創(chuàng)造一種獨(dú)立于計(jì)算機(jī)的語言。從20世紀(jì)50年代中期開始到20世紀(jì)70年代陸續(xù)產(chǎn)生了許多高級算法語言。這些算法語言中的數(shù)據(jù)用十進(jìn)制來表示,語句用較為接近自然語言的英文字來表示。它們比較接近于人們習(xí)慣用的自然語言和數(shù)學(xué)表達(dá)式,因此稱為高級語言。高級語言具有較大的通用性,尤其是有些標(biāo)準(zhǔn)版本的高級算法語言,在國際上都是通用的。用高級語言編寫的程序能使用在不同的計(jì)算機(jī)系統(tǒng)上。 但是,對于高級語言編寫的程序計(jì)算機(jī)是不能識別和執(zhí)行的。要執(zhí)行高級語言編寫的程序,首先要將高級語言編寫的程序翻譯成計(jì)算機(jī)能識別和執(zhí)行的二進(jìn)制機(jī)器指令,然后供計(jì)算機(jī)執(zhí)行。

一般將用高級語言編寫的程序稱為“源程序”,而把由源程序翻譯成的機(jī)器語言程序或匯編語言程序稱為“目標(biāo)程序”。把用來編寫源程序的高級語言或匯編語言稱為源語言,而把和目標(biāo)程序相對應(yīng)的語言(匯編語言或機(jī)器語言)稱為目標(biāo)語言。

計(jì)算機(jī)將源程序翻譯成機(jī)器指令時(shí),通常分兩種翻譯方式:一種為“編譯”方式,另一種為“解釋”方式。所謂編譯方式是把源程序翻譯成等價(jià)的目標(biāo)程序,然后再執(zhí)行此目標(biāo)程序。而解釋方式是把源程序逐句翻譯,翻譯一句執(zhí)行一句,邊翻譯邊執(zhí)行。解釋程序不產(chǎn)生將被執(zhí)行的目標(biāo)程序,而是借助于解釋程序直接執(zhí)行源程序本身。一般將高級語言程序翻譯成匯編語言或機(jī)器語言的程序稱為編譯程序。

一般來講高級語言和低級語言有一下特點(diǎn)

高級語言:實(shí)現(xiàn)效率高,執(zhí)行效率低,對硬件的可控性弱,目標(biāo)代碼大,可維護(hù)性好,可移植性好

低級語言:實(shí)現(xiàn)效率低,執(zhí)行效率高,對硬件的可控性強(qiáng),目標(biāo)代碼小,可維護(hù)性差,可移植性差

我們都知道CPU運(yùn)行的是二進(jìn)制指令,所有的語言編寫的程序最終都要翻譯成二進(jìn)制代碼,但是為什么實(shí)現(xiàn)會有以上眾多差異呢?下面以C語言為高級語言代表,匯編語言為低級語言代表來解釋一下。越低級的語言,形式上越接近機(jī)器指令,匯編語言就是與機(jī)器指令一一對應(yīng)的。而越高級的語言,一條語句對應(yīng)的指令數(shù)越多,其中原因就是高級語言對底層操作進(jìn)行了抽象和封裝,使編寫程序的過程更符合人類的思維習(xí)慣,并且極大了簡化了人力勞動(dòng)。也就是說你用高級語言寫一句,會被轉(zhuǎn)換成許多底層操作,大部分的工作交給了負(fù)責(zé)轉(zhuǎn)換的機(jī)器(即編譯器),從而人力得到了解放。因?yàn)闄C(jī)器就是用來為人類提供便利的,所以說高級語言的出現(xiàn)是計(jì)算機(jī)發(fā)展的必然結(jié)果。下面重點(diǎn)解釋為何低級語言的執(zhí)行效率更高:

低級語言可以通過控制硬件訪問來優(yōu)化效率

越低級的語言月接近底層,即控制硬件訪問的能力越強(qiáng),對硬件資源的利用效率越高。比如說匯編語言能夠訪問寄存器,而C語言就做不到。通過對寄存器等硬件的訪問,我們可以將程序的運(yùn)行效率優(yōu)化到最大,而像C這樣的高級語言用的最多的是堆棧這樣的內(nèi)存結(jié)構(gòu),訪問速度自然不如寄存器了。

高級語言程序存在工作冗余,有效率損失

各種語言需要通過編譯器翻譯成機(jī)器碼,不管編譯多么智能和強(qiáng)大,都是會產(chǎn)生冗余。這里的冗余不是指指令的多少,而是有沒有做沒有必要的事情。 產(chǎn)生冗余的多少關(guān)鍵要看語言跟機(jī)器指令之間的耦合度。耦合度越大,編譯器翻譯過程越簡單,產(chǎn)生的冗余越少。對應(yīng)匯編來書,由于與機(jī)器碼一一對應(yīng),所以翻譯后基本沒有冗余。而高級語言由于進(jìn)行了抽象和封裝,所以與機(jī)器指令間的耦合度較低,因此整個(gè)翻譯過程較復(fù)雜,因此在高級語言在具體化的過程中不可避免會產(chǎn)生較多的冗余。據(jù)說C語言有10%的效率損失。

效率高不高,還取決于程序員水平

一個(gè)差的程序員用匯編寫程序,可能存在很多沒有用的操作,而程序高手用c語言寫,可以將程序優(yōu)化到最大。最終的結(jié)果可能是匯編的程序跑不過C語言程序。

總之,完成一項(xiàng)工作的工作量是不變的,機(jī)器做的 多了,人就做的就少了,同時(shí)人對程序的很多細(xì)節(jié)的控制性也減弱了。各種語言都是在這個(gè)平衡點(diǎn)附近糾結(jié)。從C/C++的注重機(jī)器運(yùn)算效率的優(yōu)化,到C#/JAVA注重開發(fā)效率的優(yōu)化。人操作起來更加方便了,更高效了,代價(jià)就是,機(jī)器要處理的東西更多,運(yùn)算效率被進(jìn)一步壓縮。但是這個(gè)壓縮在許可范圍內(nèi),那么這也是一種進(jìn)步。


網(wǎng)站欄目:談一談編程語言的進(jìn)化史
本文地址:http://www.5511xx.com/article/cojjjdo.html