公司有Web和App產品,每次帶新人都會提到這兩者,怎麼讓新人幾句話就能聽懂,這考驗我的功力!🤠
一直覺得自己說得不夠精確,兩者之間的差異為何?看來還是得複習一下,甚至用圖解來比較編譯和直譯。
果真一張圖勝過千言萬語!
接著來用文字描述兩者定義與差異吧!
什麼是編譯?
編譯是透過「編譯器」在程式執行前將高階語言編譯成機器語言。
程式經過編譯後產生的目的碼,可以透過「連結器」連結與程式相關的檔案,以產生可執行檔(像.exe)。當要執行程式時,只要透過系統的「載入器」將可執行檔載入記憶體就可以直接執行,不需重新翻譯。
編譯式語言多半以「靜態語言」為主,它們會事先定義型別,能夠在程式執行前(編譯時期)檢查中型別錯誤。優點是有高效能的執行速度,不過缺點是程式語法繁瑣、彈性不足,也只能檢查出執行前的簡單錯誤。
編譯語言有C、C++、Objective-C、Swift等。
什麼是編譯?
直譯是經過「直譯器」將程式一行一行的翻譯成機器語言,並立即執行的翻譯方式。
直譯式語言多半以「動態語言」為主,具有靈活的型別處理,動態生成與程式彈性。在執行時確認與檢查型別,優點為語法簡潔且有較高的彈性,而缺點則是型別錯誤要到執行時期才會呈現出來,效能較不理想。
直譯式語言有JavaScript、Python、PHP及Ruby等。
編譯與直譯的差異
- 編譯式語言只需翻譯一次,而直譯式語言則是每次執行時都需再翻譯。
- 在執行期的執行速度,編譯式語言較快,因為已經預先編譯,只需叫出執行檔來執行,而直譯式語言則需要一行一行翻譯並執行。
- 直譯式語言的程式開發與除錯速度比較快,因為馬上執行便能立即除錯,於是也較適合新手。

以上說明和圖解是不是很容易懂呢?🤓
曾經我想要Web和App都專精,不過礙於一個人的時間有限,反而什麼都學什麼都不精,於是我才以開發App為主!
若是App開發速度快如Web,那麼我就能同時駕馭iOS和Android,然而實際上開發App,編譯速度時間長,編譯次數也多,使得要同時掌控兩個平台,相當有難度呢!
總結,選一個真正想要做的方向吧!😜
參考:
Comments on: "[圖解] 編譯 vs 直譯" (1)
[…] 我還跟他講述為何公司要開發三平台(Web、iOS、Android),他以為開發一個平台不就好了?我還特地為他找資料寫文章,請參考:編譯與直譯。 […]
讚讚