iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 2
0
Software Development

C++ 30天屠龍記系列 第 2

第1天:一文搞懂直譯與編譯語言的差異

要學C++之前,也必須先要了解一下C++的運行特性,程式語言發展至今種類繁多,除了語言本身語法的不同之外,程式語言本身的特性也會有所不同,今日將簡單的整理編譯語言以及直譯語言之間的差異。

https://ithelp.ithome.com.tw/upload/images/20190928/20120557nOC9uhRfys.png

編譯語言

C++ 便是經典的編譯語言,編譯語言在程序執行時先會透過編譯器將你的程序編譯成電腦看得懂的機器碼,他的文件就是你們在Windows裏叫的.exe檔或者Unix中的可執行檔。編譯語言多數是靜態語言。他們會事先定義變數類別和做類別檢查等等。

其他的編譯語言有 C、Rust、Go、Visual Basic、Swift、Obj-C等等

直譯語言

直譯語言的運行器會將一行一行的程式碼先後編譯成機器碼,讓程序的類別檢測更靈活,或者說“符合人性”,本身的彈性更大。但是緩慢的運行速度是直譯語言最大的壞處。很多直譯語言的模塊甚至都以編譯語言所寫成以加快速度。他們也被認為是Scripting Language。

最經典的直譯語言有 - Javascript 、Python、Shellscript

差異

編譯語言的運行速度比直譯語言快得多,因為直譯語言在運行時才會將程序一行行的轉換成機器碼。但是編譯語言的壞處是除錯是比較緩慢的,不能像直譯語言一樣,開發完一段小程序便立刻運行。也由於直譯語言彈性比較大,開發速度便非常的快。

編譯語言的可執行檔是可以獨立運行的,但直譯語言則需要有一個適合的執行環境/或者說是一個VM,才可以執行,例如Python3程式碼便需要有在有安裝Python3的電腦中才可以運行,也就是說python3 程序已經不可以在舊Unix電腦中運行了。反之C++17雖然也只能在新電腦中編譯,但他的可執行檔甚至連不支援C++的電腦,都可以運行。

但是,編譯語言在使用Library/Modules的時候,除了下載下來,還需要用一個建構系統去連結不同的函式庫和你的不同程式檔。在C++當中有CMake ,在Rust中有Cargo等等。

明天會講為什麼採用C++的原因!


上一篇
C++ 30天屠龍記(第0天): 前言
下一篇
第2天: 為什麼選擇C++
系列文
C++ 30天屠龍記30

尚未有邦友留言

立即登入留言