什麼是 Python interpreter?
大家應該都有聽過電腦的底下其實都是一堆的 0 跟 1 組成的,這個有一個專有名詞叫做Binary(二進位),也就是以2為基數代表系統是二進位制的,在這樣的系統中,就是使用兩個不同的數字 0 和 1 來表示。

一般我們聽到的程式語言,例如Python、C、C++、Java等…,都稱之為高階語言(High-level language),那我們今天撰寫高階語言時,幾乎都是以英文為基底,若我們要將這些英文轉成電腦看得懂的樣子,我們我們必須先把英文轉換成 0 跟 1 ,電腦才能看得懂。

在 Python 內,將 Python code 轉換成 0 跟 1 這個動作,我們就稱他為interpret(直譯),那能幫助我們完成這件事情的角色我們就叫他interpreter(直譯器),也可以看作是我們的英文和 01 之間的翻譯官,所以我們要找出這位專家,請他協助我們把 Python code 轉成 0跟1。

# C、C++、Java 轉換成 0 跟 1 的動作,我們會稱他為 compile ,那他的專家就是 compiler。

那Interpreter 與 Compiler 有什麼差異呢?
Interpreter 是逐行翻譯執行,Compiler 則是一次性將整個 code 翻譯後在執行,所以 Python 的優點是可以在寫 code 或測試時更靈活,但缺點就會是因為他一行一行翻譯執行,所以每次執行都得重新翻譯就會花費較多時間;反之 Compiler 一次轉換後再執行,不需要重新翻譯,反而可以節省較多時間。

 

Compiler 要從 code 轉換成電腦看的懂二進位文件,其實是需要經過好幾段的處理階段才能完成的,那我們來簡單看一下究竟會經過哪些處理呢
Compiler 主要工作流程
原始碼(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 組譯程式(assembler)→ 目的碼(object code)→ 連結器(linker)→ 執行檔(executables)
最後處理完的檔案,才是電腦能看懂的檔案,然後才能夠執行我們想做的事情。

原始碼(Source Code):我們平常所撰寫的高階語言(如 C/C++、Java 等)的程式碼
預處理器(Preprocessor):預處理器會對原始碼進行初步處理,例如展開巨集(macros)、處理 #include 指令插入標頭文件,以及條件編譯等操作。
編譯器(Compiler):編譯器將簡化和處理過的代碼進一步轉換為中間語言或組語,最後轉換成更接近機器碼的中間代碼。
組譯程式(Assembler): 將中間代碼轉換為二進制的目的碼(Object Code)。
目的碼(Object Code): 透過前面的轉換獲得的二進制文件,雖然已經是二進位的文件了,但可能仍缺少某些外部函式或其他程式片段。
連結器(Linker):最終將各個目的碼與缺少的函式或片段等等做連結,將所有的資源組合成一個完整的可執行檔案。
執行檔(Executables):最終生成的執行檔就可供電腦直接執行,並且完成我們所寫出來的功能。

Close Menu