腳本語言等同於解釋語言嗎?

解釋語言在沒有調用運行時編譯的功能時,可以跟c一樣作為編譯語言直接編譯成二進制文件運行。但腳本語言不可以,就算做個二進制殼子,它也是以字符串方式存儲和執行的。

c語言執行效率高,但沒有解釋語言在運行時動態改變的能力,所以會嵌入lua腳本語言來獲得這種能力。

解釋語言需要在運行時加載一個巨大的運行時編譯庫,就算你打個hello world,可能都需要10m+內存。編譯語言就完全不需要。腳本語言只需要加載一個很小的解釋器,主要用來分解字符串,小的10k+,大的幾百k,算是小巧玲瓏了。


我低端就改我名


不等同,腳本語言基本全是解釋語言,但解釋語言除了腳本,還包括其它(比如解釋型basic語言),而c#和java這種強類型的編譯語言也含有解釋部分(clr運行庫jvm虛擬機)


紅塵匆匆過客夢


是否是腳本語言你可以看是否有REPL,也就是read-eval-print-loop。要實現這種機制需要2個支持。1是必須是鬆散語言~比如你啟動他們的控制檯然後讓python或者JavaScript打出一個helloworld 我想誰都會,但是你有定義明確的類-對象,明確的函數-返回值,明確的函數入口點main麼?顯然沒有,但是非腳本語言就是必須的,哪怕他的語法看上去再親人再像自然語言。2是要實現這種這種可以即時交互的機制,解釋語言比編譯語言更加合適,為什麼就不說了,去找解釋語言和編譯語言的相關知識。你沒有見過java控制檯手動輸入一行代碼打印helloworld吧。當然 java和c都有類似的模擬~我不想告訴你他們的名字因為這樣會混淆你~而且也不是一種好的用法~但這種模擬改變不了他們的本質


Lycrus


當然不等於≠!

解釋語言是在執行前有一個把文本指令翻譯成機器指令的過程!也就是執行代碼在一個進程中!專門需要一個語言解釋器來負責翻譯過程!而腳本語言是在執行前先查找文本對應的命令,找到之後創建一個進程,在新的進程裡執行對應的命令,執行過程有操作系統環境參與!過程就和手動輸入那個命令一樣!腳本語言就是把應該由人直接輸入的命令放進文本文件裡,按一定邏輯執行的序列!


分享到:


相關文章: