在維基百科上的通俗解釋是,一般使用文本保存,不需要'編譯'的語言的,直接由解釋器的語言。腳本語言
也就是說腳本語言其實是為了方便的使用,運行簡單的一門語言。就像js一樣,在去掉BOM,DOM,還有NodeJS之后,只剩下動態的變量聲明,基本的邏輯語句if/else/elseif,和循環語句while-do,for,還有數組,對象{},函數function。非常的簡單,入門輕松。
怎樣用java來編寫腳本、似乎就這樣講完了腳本語言是什么,等等,其實我們還沒有講到本質和關鍵。
上面我們說到了解釋器,在編譯原理里面相對應的還有編譯器。這樣我們好像聯想到了編譯型的語言,比如我們剛剛入門可能會學到的c語言,需要通過編譯器編譯成機器語言然后由引導裝載程序讀取復制到內存中執行。
編譯器
java寫腳本方便嗎,編譯器能夠將我們用某種語言編寫的程序代碼轉化成另一種語言的程序。通常來說,它會將源程序編譯成機器語言。
解釋器
解釋器根據程序中的算法邏輯執行,是一種執行程序的軟件。
腳本語言和編程語言。機器語言
有些語言編寫的程序無需借助軟件執行,也就是說不需要語言處理器,這種語言就成為機器語言。這種語言可以直接通過硬件執行。
但是需要注意的是,我們編寫的機器語言程序,需要通過軟件從硬盤上讀取復制到內存中才能執行。
由上面的解釋可以看出來,js是一門解釋型的語言。是一邊執行代碼邏輯,一邊逐行解釋,不會有一開始的編譯成機器語言的過程。這樣一看,js還是需要編譯,只是是在執行的過程中進行編譯,在js的解釋器中,還是有編譯器這個東西,比如,我們會說js在預編譯過程中,會提升變量聲明,這就是編譯器在執行預編譯。
在現代的語言處理器中,編譯器和解釋器很多時候是你中有我,我中有你,有時候會難分彼此。比如java語言,java語言先將源文件編譯成java二進制文件,然后通過java虛擬機的解釋器來進行執行,但是有些虛擬機為了速度,在執行過程中,會用編譯器將一部分java二進制代碼直接轉化成機器語言使用,在執行過程中進行的機器語言轉化稱為動態編譯或JIT(just-in-timecompile)。
經過上面的學習,我們就會有疑問,我們為什么不把所有的語言都編譯機器語言,這樣速度快,還不用每次都解釋執行。
因為我們的高級程序語言應該能夠使跨平臺的,我們的虛擬機是一個隔離的虛擬運行環境,只要有這個虛擬機在,我們寫的程序就可以跑起來,不管在哪個平臺。虛擬機的作用就是,把我們的源程序編碼成能在當前平臺運行的機器語言,或者說是cpu指令。
鏈接:
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态