編譯語言、解釋語言與指令碼語言之間的區別

Candy_GL發表於2018-12-24

轉自:https://blog.csdn.net/wm_1991/article/details/51853900

資料一:

1、解釋型語言與編譯型語言的區別翻譯時間的不同。。

編譯型語言在程式執行之前,有一個單獨的編譯過程,將程式翻譯成機器語言,以後執行這個程式的時候,就不用再進行翻譯了。

解釋型語言,是在執行的時候將程式翻譯成機器語言,所以執行速度相對於編譯型語言要慢。

C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。

雖然Java程式在執行之前也有一個編譯過程,但是並不是將程式編譯成機器語言,而是將它編譯成位元組碼(可以理解為一箇中間語言)。
在執行的時候,由JVM將位元組碼再翻譯成機器語言。
注:指令碼語言一般都有相應的指令碼引擎來解釋執行。 他們一般需要直譯器才能執行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是指令碼語言。C/C++編譯、連結後,可形成獨立執行的exe檔案。

2.指令碼語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進位制程式碼,以可執行檔案的形式存在.

指令碼語言不需要編譯,可以直接用,由直譯器來負責解釋。 

3.指令碼語言一般都是以文字形式存在,類似於一種命令. 

 

資料二:

(1)什麼是指令碼語言?
(2)為什麼叫做指令碼語言,而不叫做其它的名字?請您介紹一下“指令碼語言”這個名字的來歷?具有什麼特徵的語言被稱為指令碼語言?

在網上查了查,沒查著。指令碼語言英文應該是script language吧。script在金山詞霸中的解釋有:A copy of a text used by a director or performer.也就是按照script進行導演或演出。用在計算機上可能就變成了:可以執行的文字。因為我知道的所有指令碼檔案都是文字檔案格式的,而且可以執行,從這個意義上與script的含義很接近。更關鍵的是指令碼語言是從英文翻譯過來的,因為外國人這麼叫,所以我們也這麼翻譯的吧。歷史我不知道。
我個人認為:源程式是文字格式,可以被解釋執行的語言可以算作指令碼語言。如:python,perl,php,shell,awk等等,許多。不過,有一些指令碼語言已經發生了變化,如python,perl已經可以編譯成中間程式碼然後執行,這樣的指令碼語言已經可以被稱為編譯型指令碼語言。

BTW:指令碼語言與解釋語言我認為還是有區別的。解釋語言是說解釋執行的語言,但執行的程式碼並不一定是文字格式的。指令碼語言的程式是文字檔案,並且是解釋執行的。但這兩種區別也有些模糊。反正有點區別,不過你認為差不多也行,好象現在並不太細分指令碼語言與解釋語言。

 

資料三:

 指令碼與解釋有時是很模糊,其實沒有必要搞得這麼清楚了,當然如果你有興趣去搞。在這裡我們可以乾脆將指令碼與解釋混為一談。解釋是第一位的,至於是不是文字格式,是否會編譯成位元組碼倒是次要的。不這,我所接觸的指令碼語言(我認為是)只需要有文字格式就可以執行。象Python有中間程式碼,不過這一過程完全是自動的,你不用去管它。因此從最基本的執行條件來說,我認為指令碼語言似乎檔案格式要求是文字的。象java,其實是有一個虛擬機器在執行,它也是解釋執行的,那它算不算指令碼語言呢,我想應該不算吧。因為,它的執行是先編譯成位元組碼,再去執行。如果編譯過程全自動了,算嗎?這許就可以算了吧。

不過,我們完全可以不去關心這些個案,只考慮通常的情況就行了。因此,我個人認為:指令碼語言:一、解釋執行 二、執行檔案為文字即可

 

資料四:

抽象的級別:這是最重要也是最明顯示的不同。指令碼語言對程式設計師提供了更高階的抽象。這一點明顯表現在:在這種語言自身中,存在有高階的資料結構,如列表和字典結構,和對這種結構簡單方便的巢狀和操作。這樣可以建立非常成功的程式。    
    
    型別定義:系統語言通常是強型別和靜態型別定義。這就意味著所有變數的型別要在程式中指定,在編譯時檢查。相反地,指令碼語言是最鬆散的型別定義,完全沒有型別宣告,並且在執行時進行動態型別檢查。    
    
    執行:系統語言的特點是編譯的。程式被編譯成可執行的二進位制。另一方面,指令碼語言的特點是解釋,也就是,指令被立即執行,不存在一個編譯的中間狀態。這就意味著指令碼語言是互動式的(你可以在提示符下敲入命令,並且看到結果),這是另一個巨大的勝利。這樣完全將編譯過程從編輯-編譯-執行迴圈中去掉了。    
    
    速度:以上三點是指令碼語言一方面在速度與效率,   一方面在易用性與表示式的強大性之間進行折衷的典型例子。這就使得指令碼語言的執行速度比系統語言慢一個數量級。這就是對指令碼語言誹謗最多的方面。效能的降低不是真正的問題,因為思想是用指令碼語言來組合元件,這些元件是用象C   這樣的快速系統語言來編寫的。所以所有需要執行快速的東西將因為是用快速的語言實現的而執行得快速。指令碼語言只用於將東西綁在一起,並且這些通常不是效能的瓶頸(   或如果是,你需要重新檢查你的設計)。

相關文章