參考:c語言中文網——python程式設計基礎
對於編譯型語言,開發完成以後需要將所有的源**都轉換成可執行程式,比如 windows 下的.exe檔案,可執行程式裡面包含的就是機器碼。只要我們擁有可執行程式,就可以隨時執行,不用再重新編譯了,也就是「一次編譯,無限次執行」。
在執行的時候,我們只需要編譯生成的可執行程式,不再需要源**和編譯器了,所以說編譯型語言可以脫離開發環境執行。
編譯型語言一般是不能跨平台的,也就是不能在不同的作業系統之間隨意切換。
對於解釋型語言,每次執行程式都需要一邊轉換一邊執行,用到哪些源**就將哪些源**轉換成機器碼,用不到的不進行任何處理。每次執行程式時可能使用不同的功能,這個時候需要轉換的源**也不一樣。
因為每次執行程式都需要重新轉換源**,所以解釋型語言的執行效率天生就低於編譯型語言,甚至存在數量級的差距。計算機的一些底層功能,或者關鍵演算法,一般都使用 c/c++ 實現,只有在應用層面(比如**開發、批處理、小工具等)才會使用解釋型語言。
在執行解釋型語言的時候,我們始終都需要源**和直譯器,所以說它無法脫離開發環境。
我們所說的跨平台,是指源**跨平台,而不是直譯器跨平台。直譯器用來將源**轉換成機器碼,它就是乙個可執行程式,是絕對不能跨平台的。
解釋型語言之所以能夠跨平台,是因為有了直譯器這個中間層。在不同的平台下,直譯器會將相同的源**轉換成不同的機器碼,直譯器幫助我們遮蔽了不同平台之間的差異。只要你在不同的平台安裝了不同的直譯器,你的**就可以隨時執行,不用擔心任何相容性問題,真正的「一次編寫,到處執行」。
型別原理
優點缺點
編譯型語言
通過專門的編譯器,將所有源**一次性轉換成特定平台(windows、linux 等)執行的機器碼(以可執行檔案的形式存在)。
編譯一次後,脫離了編譯器也可以執行,並且執行效率高。
可移植性差,不夠靈活。
解釋型語言
由專門的直譯器,根據需要將部分源**臨時轉換成特定平台的機器碼。
跨平台性好,通過不同的直譯器,將相同的源**解釋成不同平台下的機器碼。
一邊執行一邊轉換,效率很低。
編譯型語言和解釋型語言
計算機只能識別二進位制編碼,所以任何語言在交由計算機執行時必須要先轉換為機器碼。也就是像print hello 必須要轉換為型別01010這樣的機器碼。根據轉換時機的不同,語言分成了兩大類 編譯型語言 例如c語言,會在 執行前將 編譯為機器碼,然後將機器碼交由計算機執行。就型別於 a 原始碼 編譯 ...
編譯型語言和解釋型語言的區別
我們編寫的源 是人類語言,我們自己能夠輕鬆理解 但是對於計算機硬體 cpu 源 就是天書,根本無法執行,計算機只能識別某些特定的二進位制指令,在程式真正執行之前必須將源 轉換成二進位制指令。所謂的二進位制指令,也就是機器碼,是 cpu 能夠識別的硬體層面的 簡陋的硬體 比如古老的微控制器 只能使用幾...
編譯型語言和解釋性語言
1.計算機不能識別高階語言,計算機能夠直接識別並執行的語言,從目前看來只有機器語言。我們寫的高階語言要先翻譯成低階語言,才能被計算機執行,翻譯的方式有兩種 編譯和解釋,二者的目的是相同的,但是翻譯的時間不同。2.解釋型語言 直到執行的時候才翻譯,並且每執行一次翻譯一次 而編譯型語言執行和翻譯是分開的...