2015-05-09 99 views
2

是否解釋所有腳本語言?我還沒有遇到過編譯+腳本語言。以下語言都是解釋型和腳本語言。解釋型語言和腳本語言之間有什麼聯繫。是否解釋所有腳本語言?

e.g的JavaScript,Python和Perl的

怎麼樣的反向?

回答

2

根據定義,什麼使得腳本語言是沒有單獨的編譯階段。腳本語言總是需要一個解釋器的副本才能運行,而編譯語言不需要編譯器來執行生成的二進制文件。例如在C中,我們首先編譯爲本機可執行文件,然後運行該可執行文件。在腳本語言中,我們將腳本作爲文本文件輸入,並立即執行。

這是如何實現的另一個問題。大多數腳本語言都是以純粹的解釋實現開始的。不可避免地,有用的都會獲得一個利用Just In Time(JIT)編譯速度的實現。不同的是,這個JIT是在腳本運行期間完成的,並且從不產生單獨的輸出。腳本仍然是人類可讀的文本文件,需要一些解釋器才能運行。

有一些有趣的「在邊界上」的例子。 Haskell通常編譯爲一個獨立的二進制文件,但也可以作爲腳本運行(至少GHC實現可以這樣做).Java編譯爲二進制文件,但不是獨立的可執行文件。必須存在Java運行時才能運行Java文件。