自從有了計算機,就有了計算機語言。計算機語言又稱為程序設(shè)計語言,它是人和計算機進行交流的工具,人們利用它寫出能被計算機識別并執(zhí)行的符號代碼,指揮計算機工作。
迄今為止,計算機語言經(jīng)歷了機器語言、匯編語言和高級語言(如C語言)3個階段。
1.1 計算機指令和機器語言
計算機指令是指揮計算機進行工作的命令。由于計算機內(nèi)部采用二進制,只能識別0和1兩個數(shù)字,因此,計算機指令也必須是二進制的,以便被計算機識別并執(zhí)行。
早期的計算機字長是16位的,即一條指令的長度是16位。所以人們用16位二進制數(shù)作為一條指令來告訴(命令)計算機進行某種操作。例如,用01000001 00001101來命令它進行加法操作,用01000001 00001110來命令它進行減法操作……這些能被計算機直接識別并執(zhí)行的二進制序列,就是計算機指令。很顯然,對計算機所能做的每一種操作,都必須用唯一的一個二進制序列來表示,即需要對計算機能進行的所有操作都一一進行指令編碼。
有了指令,人們便可以直接用計算機指令來編寫程序了,即用機器語言編寫程序。
1.2 機器語言的優(yōu)缺點
1.2.1 機器語言可以被計算機直接識別、執(zhí)行,所以用機器語言寫的程序效率最高。
1.2.2 機器語言是用指令編程,而成千上萬條指令很難記住,且一旦出錯很難找出錯誤。如下圖所示,用機器語言編寫的程序,可以想像,在若干頁的0和1中找出其中一個錯誤是多么不易。
1.2.3 不同型號的計算機,指令編碼并不相同,因此,針對某一型計算機寫的程序移植到另外一種計算機上后,運行結(jié)果未必正確,甚至有可能根本不能運行。
2.1 匯編語言及其處理過程
為了解決機器語言難記、難改的問題,人們發(fā)明了匯編語言,也稱為符號語言。匯編語言是用一些助記符來代替指令進行編程,比如,用ADD表示加法,用SUB表示減法,用MOV表示移動等。
匯編語言雖然避免了機器語言難記、難改的缺點,但是卻帶來了新的問題,這就是:計算機只能識別0和1,識別不了助記符,怎么辦?
人們想出了一個辦法:編寫一個程序,負責(zé)把用匯編語言編寫的源程序翻譯成二進制的計算機指令,然后再讓計算機去執(zhí)行。這個負責(zé)翻譯的程序稱為匯編程序,翻譯的過程稱為“匯編”,即用匯編程序把匯編語言寫的源程序匯編成機器代碼。
2.2 匯編語言的優(yōu)缺點
2.2.1 匯編語言解決了機器語言難記、難改的缺點。
2.2.2 匯編語言可移植性仍然很差。
2.2.3 匯編語言的執(zhí)行效率比機器語言低。
并非每一條匯編語言的語句都有一條機器指令與之對應(yīng)。一條匯編語言的語句翻譯成機器語言可能會產(chǎn)生好幾條指令。一個程序,如果直接用機器語言編寫,也許只需要100條指令,但如果用匯編語言編寫,然后再翻譯成機器語言,可能會多出十幾或幾十條指令。
3.1 高級語言及其執(zhí)行方式
由于機器語言和匯編語言的可移植性差,人們發(fā)明了高級語言。1957年推出的FORTRAN語言是世界上第一門高級語言。其后,陸續(xù)出現(xiàn)了成百上千種高級語言。FORTRAN、BASIC、PASCAL、COBOL、C/C 等都是深受程序員喜愛的高級語言。
之所以稱為高級語言,一是因為它們的可移植性好,即在一種計算機上所編的程序移植到另一種計算機上,不用修改或略作修改即可運行;二是因為這些編程語言都接近于人類的自然語言,易懂易學(xué)。
同匯編語言一樣,用高級語言編寫的源程序也不能被計算機直接識別,也需要經(jīng)過翻譯,由此產(chǎn)生了高級語言的兩種執(zhí)行方式。
3.1.1 解釋方式
所謂解釋方式,就是從源程序的第一條語句開始,對每條語句都先解釋(即翻譯,由解釋程序翻譯成計算機指令),然后馬上去執(zhí)行剛解釋出的這些指令,再對下一條語句做同樣的處理,直到所有語句都處理完。
解釋方式有一種特點,就是翻譯出來的計算機指令并不存盤(不生成目標(biāo)代碼),執(zhí)行完這些二進制指令就丟失了。因此,若程序還想執(zhí)行第二次,只能從頭開始重新翻譯并執(zhí)行,故程序的執(zhí)行效率較低。
3.1.2 編譯方式
所謂編譯方式,首先通過編譯程序把整個源程序中的所有語句都翻譯成匯編語言源程序,然后再通過匯率程序(匯編器)把匯編語言源程序翻譯成機器語言的機器指令,形成.exe文件(可執(zhí)行文件),.exe文件是可以直接運行的文件,并且可反復(fù)運行若干次。
C語言就是這種編譯方式的高級語言。
假設(shè)有C語言源程序abc.c,經(jīng)過編譯后形成磁盤文件abc.obj,再經(jīng)過連接后形成磁盤文件abc.exe。以后需要運行abc程序時,只需要abc.exe就可以了。
上述翻譯源程序的工作,是由“編譯程序”來完成的,其翻譯的過程稱為“編譯”。
3.2 高級語言的優(yōu)缺點
3.2.1 高級語言具有易懂、易記、易改和可移植性好等優(yōu)點。
3.2.2 高級語言要經(jīng)過解釋或編譯才能被計算機識別、執(zhí)行,其效率比匯編語言還低。
在所有高級語言中,C語言效率最高。
匯編程序(匯編器)、解釋程序(解釋器)、編譯程(編譯器)序都是廠商提供的、事先編寫好的程序。
聯(lián)系客服