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