1. 程式人生 > >剛開始學python,對指令碼語言的一些理解

剛開始學python,對指令碼語言的一些理解

指令碼語言和程式語言的區別:

        簡單來說,程式語言需要編譯再執行,指令碼語言不需要編譯,會直接執行。所以說,指令碼語言,即使錯了,也可以執行,因為一行一行執行,直到錯的那一行才開始報錯。但是程式語言如果錯了的話,編譯階段會顯示錯誤,沒辦法執行。

        編譯的話,簡單來說就是把源程式翻譯成01這種二進位制碼,執行速度會更快,但是換一臺機器,可能就沒有辦法執行了,因為編譯器對機器的依賴性很高。而指令碼語言是通過直譯器,一行一行讀程式碼,一行一行執行的。

        那麼指令碼語言的的直譯器是怎麼工作的呢?難道就不需要翻譯成01這種二進位制碼嗎?對於不同的指令碼語言,直譯器工作的原理是不一樣的,具體如下圖所示:


        那麼對於python這種指令碼語言,它的直譯器是怎麼工作的呢?具體如下圖所示:


        它的直譯器可以由不同的語言來書寫,但是一般是由c++來寫的。

        所以,其實我們說指令碼語言是不需要編譯的,嚴格上來說是不準確的。因為直譯器有可能實現原理也是編譯,只不過編譯結果可能是除了01之外的其他位元組碼。

        指令碼語言的優越性,主要是指它的靈活性“不是那麼嚴謹“。不管輸入的是啥,它可以根據需要來改變輸入的型別。就比如說exec和eval兩個函式,就是根據需要將輸入的字串型別,改變成其他型別,不管輸入的是啥都能當語句執行。相對來說:程式語言就會很嚴格,沒有那麼靈活了,輸入的字串兒可能就沒有辦法識別了。