編譯器 Compiler 與 直譯器 Interpreter 到底差在哪?
在討論什麼是 Global Interpreter Lock 的那篇文章中,我們提到了直譯器 Interpreter,但是我們沒有進一步說明那是什麼東西。
在這篇文章中,我們要來看看到底什麼是直譯器,以及這個東西和編譯器究竟有什麼差別!
編譯器 Compiler
我們在 什麼是編譯器、連接器、程式庫? 那篇文章中仔細介紹過了什麼是編譯器,以及它的功能是什麼。
這邊我們就來大致複習一下。
我們平常在寫的程式碼,是人類看得懂的程式語言,包括 C++、Python、Java 等等。
但是電腦看不懂這些語言,電腦看得懂的語言叫做機器語言 Machine Language。
這樣怎麼辦呢?
因此,中間必須要有一個負責將程式語言翻譯成機器語言的東西,而這個東西就叫做編譯器。
編譯器會將我們寫的程式碼,一次性的全部翻譯成機器語言。翻譯後的檔案叫做執行檔,常見的有 .o 或 .exe 結尾。
當需要執行程式時,我們只要執行這個執行檔就好了!
直譯器 Interpreter
其實,直譯器 Interpreter 也是用於將人類的程式語言翻譯成機器語言的另一種工具。
那和編譯器有什麼差別呢?
前面說到,編譯器一次性將程式語言打包並翻譯成機器語言。
直譯器則是一行一行對我們寫的程式碼進行翻譯並執行。
這樣的方式其實對於軟體開發來說會更加方便且快速,這是因為編寫好的程式碼可以馬上執行並除錯。
編譯器 v.s. 直譯器
理解了最重要的差異後,我們來看看這個比較表格。
編譯器 Compiler | 直譯器 Interpreter | |
---|---|---|
編譯方式 | 一次性編譯 | 逐行編譯 |
運行速度 | 快 | 慢 |
輸出檔案 | .exe 檔案 | 無 |
支持語言 | C、C++ | Python、Ruby、MATLAB |
我們來看一下「運行速度」這一行。
使用編譯器的語言在運行速度上會比使用直譯器的來的更快,這是因為編譯語言已經事先編譯過了。而直譯語言則要花時間一行一行編譯再執行。
總結
這章我們又快速且開心的學到了一個新的觀念啦!
一個花五分鐘就搞懂的概念,以後看到編譯器直譯器的時候就知道他們的差別啦!
那這章就到這裡啦~
如果有學到東西的話可以留個五星評價喔!