相信大家平時沒少用過python編譯器,但是要是讓你解釋一下Python編譯器,你能說出個大概嗎?今天我們就來追根溯源一下!
首先給大家介紹一下計算機編程語言
計算機編程語言主要分為三類:機器語言、匯編語言、高級語言。
其中機器語言和匯編語言屬於低級語言
高級語言有編譯型語言和解釋型語言。兩種語言對應着兩種不同的翻譯方式,一種是編譯翻譯,一種是解釋翻譯。
一、低級語言:
優點是執行速度快,但代碼編寫難度較大,可讀性較差。另外,低級語言編寫的程序只能在一種計算機上運行,想要運行在不同的機器上,必須重寫。低級語言是早期的一種計算機編程語言,現在只在很少的特殊場景中使用了,低級語言分為以下兩種:
1.機器語言:是一種計算機可以直接識別並執行的二進制指令集,無需經過翻譯,每一操作碼在計算機內部都有相應的電路來完成它。機器語言使用絕對地址和絕對操作碼。不同的計算機都有各自的機器語言,即指令系統。從使用的角度看,機器語言是計算機最低級的,最原始的語言。
2.匯編語言:想我們寫代碼的時候是操作一串串的01序列,難度得有多大。為了克服機器語言的缺點為了克服機器語言的缺點,人們就用一些助記符來代替機器碼。如ADD、SUB、MOV等,這就有了很大的進步,可以方便的編寫,但是它仍然是對機器進行操作的,匯編語言是任何一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。在不同的設備中,匯編語言對應着不同的機器語言指令集,通過匯編過程轉換成機器指令。特定的匯編語言和特定的機器語言指令集是一一對應的,不同平台之間不可直接移植。
二、高級語言:
我們現在大多數人使用的語言,如C、C++、Python、Java、Matlab、LabVIEW等等,都屬於高級語言,相對於低級語言,它更接近於我們平時正常的人思維,其最大的特點是編寫容易,代碼可讀性好。實現同樣的功能,使用高級語言耗時更少,程序代碼量更短,更容易閱讀。其次,高級語言是可移植的,也就是說,僅需稍作修改甚至不用修改,就可將一段代碼運行在不同類型的計算機上。其缺點也很明顯,使用高級語言編寫的程序運行時,需要先將其翻譯成低紙語言計算機才能運行它,在翻譯過程中可能程會產生一些多余的部分,運行效率低些。另外,對硬件的可控性相對於低級語言弱些,目標代碼量較大。高級語言有編譯型語言和解釋型語言。兩種語言對應着兩種不同的翻譯方式,一種是編譯翻譯,一種是解釋翻譯。
1.編譯型語言:典型的如C、C++、Pascal等語言,都屬於編譯型語言。它是編譯的時候直接編譯成機器可以執行或調用的程序,如exe、dll或ocx等類型。如將C語言可直接編譯成exe程序,運行時直接運行exe程序就可以了,無需重新編譯,所以程序執行效率較高。其執行過程如下所示:

相對於解釋型語言,其優點是運行速度快,代碼效率高,編譯后程序不可以修改,且看不到源碼,保密性較好。
缺點是代碼需要經過編譯方可運行,可移植性差,只能在兼容的操作系統上運行。
由於其執行速度較快,同等條件下對系統的要求較低,因此常用於開發操作系統、大型應用程序、圖像處理、數據庫開發等場合。
編譯:
1、利用編譯程序(也稱為編譯器)從源語言編寫的源程序產生目標程序的過程。 2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
2、解釋型語言:典型的如Java、Python、Matlab等語言,都屬於解釋型語言。這類程序不需要編譯,運行時使用一個專門的解釋器去翻譯,每一條語句都是執行的時候才翻譯,所以這類程序每執行一次就要翻譯一次,運行效率較稱低。其執行過程如下所示:

相對於編譯性語言,其優點是可移植性好,只要有解釋器環境,程序就可以在不同的操作系統上運行。
缺點是代碼需要有專門的解釋器,在程序運行時,除要給用戶程序本身分配內存空間外,解釋器也占用系統資源,所以其運行速度較慢。另外,也很難達到像C、C++那樣操作系統底層操作的目的。
解釋型語言常用於,一是對運行速度要求不高(如一些網頁腳本、服務器腳本、接口輔助開發等)的場合,二是對跨平台(操作系統的兼容性)有要求的場合。
綜上可以總結出:
運行速度 可移植性(跨平台) 更新 安全
編譯型語言 快(二進制文件) 差(CPU指令系統變則執行出錯) 重新編譯 好(無需提供源碼)
解釋型語言 慢(邊解釋邊執行) 好(隨身帶着解釋器) 僅解釋更新的內容 差(連同源碼一起交付)
想必大家已經了解了Python解釋器
解釋器其實也包括編譯過程,只不過該解釋器是把Python語言一行一行直接轉譯運行。解釋器不會一次把整個程序轉譯出來,且不生成目標代碼。Python解釋器由編譯器和虛擬機構成,編譯器將源代碼轉換成字節碼,然后再通過Python虛擬機來逐行執行這些字節碼。
python程序執行過程:
1、執行 .py 文件,就會啟動python解釋器
2、編譯器將源文件解釋成字節碼
3、虛擬機將字節碼轉化成機器語言,與操作系統交互
4、程序運行結束后,將字節碼存到pyc文件,便於后續直接執行