解釋性語言

解釋性語言

解釋型語言,是在運行的時候將程式翻譯成機器語言

解釋型語言的程式不需要在運行前編譯,在運行程式的時候才翻譯,專門的解釋器負責在每個語句執行的時候解釋程式代碼。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。

基本介紹

  • 中文名:解釋型語言
  • 外文名:Interpretive language
  • 性質:計算機
  • 類別:程式語言
  • 最早MATLAB
概念,發展歷程,優缺點,相較區別,

概念

計算機不能直接理解任何除機器語言以外的語言,所以必須要把程式設計師所寫的程式語言翻譯成機器語言,計算機才能執行程式。將其他語言翻譯成機器語言的工具,被稱為編譯器
編譯器翻譯的方式有兩種:一個是編譯,一個是解釋。兩種方式之間的區別在於翻譯時間點的不同。當編譯器以解釋方式運行的時候,也稱之為解釋器
解釋性語言編寫的程式不進行預先編譯,以文本方式存儲程式代碼。在發布程式時,看起來省了道編譯工序。但是,在運行程式的時候,解釋性語言必須先解釋再運行。比如解釋性Basic語言,其專用的解釋器在執行Basic程式時,會逐條讀取解釋每個語句,這個其實就是一個編譯過程,然後再執行。一般來說,現有的解釋性語言都是採用的逐行解釋一句,執行一句這樣的方式來構建的。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。

發展歷程

沒有任何資料能夠說明,哪種程式語言是解釋性語言的鼻祖。但,就仍然在使用的解釋性語言中,追其歷史,最“古老”的無異於MATLAB,它在1984年出生。
在數學建模領域,MATLAB的出現,讓很多數學研究得到大力的推進。而,它的流行,也正得益於它的解釋性。因為,在數學相關研究中,研究者們需要不斷改變計算方法和計算參數值,然後直觀地看到這些改變對“所研究系統”的影響。而,計算方法正是計算機語言必須要寫入程式代碼一個必要因素,計算方法的更改意味著程式的重新構建。這意味著花費時間和等待,所以,80年代,如果希望使用計算機來模擬一個虛擬系統進行研究,那么研究者們的選擇只有:自己實現或者構建一個團隊來實現。MATLAB採用類似C語言的高級語言語法,可以使用簡單的英語語法,容易閱讀,加上它的解釋性可以及時映射計算方法結果,這讓專業領域內的研究者,從煩人的計算機語言中脫離出來,而只需要關心自身的領域的內容。
網際網路時代的到來,也離不開解釋性語言:HTMLXMLJavascript。可以說,HTML開啟網際網路時代,XML和Javascript推動網際網路瘋狂發展。Ajax技術的出現,當然也依賴於解釋性語言的解釋特性。
在HTML流行後,越來越多的解釋性語言被構建出來,大有取代編譯性語言的趨勢,如Python、Ruby等等。

優缺點

編譯型與解釋型,兩者各有利弊。前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、伺服器腳本及輔助開發接口這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程式則通常使用解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但隨著硬體的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,主要體現在一些新興的高級語言上,而解釋型語言的自身特點也使得編譯器廠商願意花費更多成本來最佳化解釋器,解釋型語言性能超過編譯型語言也是必然的。
解釋性語言,如Java,往往會有較慢的運行速度,有時需要C++等語言的3倍。

相較區別

和編譯性語言的區別
計算機不能直接理解高級語言,只能直接理解機器語言,所以必須要把高級語言翻譯成機器語言,計算機才能執行高級語言編寫的程式。
翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把程式編譯成為機器語言的檔案,比如exe檔案,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe檔案),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程式執行效率高,但也不能一概而論,部分解釋型語言的解釋器通過在運行時動態最佳化代碼,甚至能夠使解釋型語言的性能超過編譯型語言。
解釋則不同,解釋性語言的程式不需要編譯,省了道工序,解釋性語言在運行程式的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程式,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。解釋是一句一句的翻譯。
編譯型與解釋型,兩者各有利弊。前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁腳本、伺服器腳本及輔助開發接口這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程式則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
但隨著硬體的升級和設計思想的變革,編譯型和解釋型語言越來越籠統,主要體現在一些新興的高級語言上,而解釋型語言的自身特點也使得編譯器廠商願意花費更多成本來最佳化解釋器,解釋型語言性能超過編譯型語言也是必然的。

相關詞條

熱門詞條

聯絡我們