工程師基礎知識打地基篇-什麼是編譯器與直譯器?

文、意如

地基打得穩,才有辦法走更遠的路。我們先認識一個詞Compile,指的是編譯,

常常聽到比較資深的工程師會說Compile一下 ,這是什麼意思呢?

簡單的來說編譯就是”翻譯一下程式碼”,為什麼程式碼要翻譯呢?
這個就是今天要介紹的主題。

現在訪間各式各樣程式編輯器已經做得太好、太方便,只要寫好程式碼,按執行鍵▶ , 

即可馬上執行程式碼,導致很多工程師已經忘了最基礎的怎麼編譯(Compile)程式,

或者根本不知道Compile到底是什麼,所以本篇文章想跟大家聊聊什麼是編譯(Compile)。

什麼是低階語言(機器語言)、高階語言?

電腦不認識字、只認得數字0、1,所以電腦讀的語言叫做機器語言,也叫低階語言。

下面這張圖一組一組的就是指令:

 

例如:0101 ,代表一種功能,0110又代表另一種功能,每一組都代表各自的功能,

光是4個數字就可以有多種變化,例如0000、0001、0010、0101、1011等……

而我們寫的程式語言,就是人類才看得懂的叫做(高階語言),例如java、php、python等等。

 

所以我們寫好的程式碼,需要透過電腦來執行,但是電腦只認得0,1 ,

所以我們會需要一個溝通的橋樑,一個翻譯官,把高階語言翻譯成電腦讀得懂的低階語言,

好讓電腦執行我們的程式,這個就是編譯,所以不管是什麼程式語言都會需要編譯完後,才能執行。

 

編譯器跟直譯器又有什麼差別?

這兩者都是翻譯官,但它們的差別在於編譯器是寫完程式碼後,最後全部一起翻譯,翻譯完後才能執行。

而直譯器是一行一行直接翻譯執行。每翻譯一行程式敘述就立刻執行,然後再翻譯下一行,再執行,所以直譯器可即時翻譯、執行。

 

什麼程式語言是用編譯器?

像是C、C++、C#、Java 等….這些都是屬於編譯器,寫完程式需要先編譯,

編譯好後會多一個類似.class的檔案,這個就是機器語言,最後才能去執行程式。

所以以java來講寫好程式後最少會有兩個檔案(你寫的程式碼.java檔、跟編譯過的.class檔)。

 

什麼程式語言是用直譯器?

像是最多人一定會寫的JavaScript、還有PHP、Ruby、Python這些都是使用直譯器,

我們在執行程式時,你馬上就看到執行結果,並不沒有編譯,而是直譯器本身是即時翻譯,所以你不需要再特別的去編譯它。

 

編譯器比較快還是直譯器比較快?

編譯器它是整篇一起翻譯後再執行、而直譯器是邊翻譯邊執行所以會比編譯器來的慢。

編譯程式碼,是工程師最基礎的功夫,這邊也建議剛開始學程式語言的初學者一定要學會編譯程式後,

再去挑選比較好的編輯器,地基打得穩,才有辦法走更遠的路。

 

Yiru@Studio - 關於我 - 意如