編譯器 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

我們來看一下「運行速度」這一行。

使用編譯器的語言在運行速度上會比使用直譯器的來的更快,這是因為編譯語言已經事先編譯過了。而直譯語言則要花時間一行一行編譯再執行。

總結

這章我們又快速且開心的學到了一個新的觀念啦!

一個花五分鐘就搞懂的概念,以後看到編譯器直譯器的時候就知道他們的差別啦!

那這章就到這裡啦~

如果有學到東西的話可以留個五星評價喔!