源代碼對於計算機來說,都是讀不懂的,計算機只認識二進制指令。所以,想讓程序被執行,那麼自然要先把源代碼轉化為二進制指令,也就是機器碼。
那麼,在什麼時候進行轉換呢?
有的語言要求必須提前把代碼一次性轉換完畢,這種就是編譯型語言,用的轉換工具就叫編譯器,比如C語言、C++。有的語言則可以一邊執行一邊轉化,用到哪裡了就轉哪裡,這種就是解釋性語言,用的轉化工具叫解釋器,比如python、javascript。
編譯器
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器語言)的翻譯過程。
解釋器
將相對高級的程序代碼解釋成電腦可以直接運行的機器碼。
Python解釋器[1]
當python包安裝在機器上後,它會生成一些組件:至少包括一個解釋器和一套支持庫。編寫的python代碼必須在解釋器中運行。
Python解釋器由一個編譯器(compiler)和一個虛擬機構成,編譯器負責將源代碼轉換成字節碼文件,而虛擬機負責執行字節碼。所以,解釋型語言其實也有隱式的編譯過程,只不過該編譯過程並非直接生成目標代碼,而是生成中間代碼 (字節碼),然後再通過虛擬機來逐行解釋執行字節碼。
編寫一個打印“Hello”字符串的python程序:
print(‘Hello’)
回車運行:
上面的代碼運行實際上經過了兩步操作[1]:
1. 將源代碼編譯成為“字節碼”,將源代碼文件xx.py編譯成字節碼文件xx.pyc。
2.將“字節碼”轉發給“虛擬機”,“虛擬機”執行“字節碼”轉換成二進制語言在計算機硬件上運行。
執行過程[2]:
[1]: https://www.jb51.net/article/250335.htm
[2]: 【Python】淺談 字節碼 + 虛擬機 (Python 解釋器)_何處聞韶的博客-CSDN博客