Just My Life & My Work

[圖解] 編譯 vs 直譯

公司有Web和App產品,每次帶新人都會提到這兩者,怎麼讓新人幾句話就能聽懂,這考驗我的功力!🤠

一直覺得自己說得不夠精確,兩者之間的差異為何?看來還是得複習一下,甚至用圖解來比較編譯和直譯

果真一張圖勝過千言萬語!

接著來用文字描述兩者定義與差異吧!

什麼是編譯?

編譯是透過「編譯器」在程式執行前將高階語言編譯成機器語言。

程式經過編譯後產生的目的碼,可以透過「連結器」連結與程式相關的檔案,以產生可執行檔(像.exe)。當要執行程式時,只要透過系統的「載入器」將可執行檔載入記憶體就可以直接執行,不需重新翻譯。

編譯式語言多半以「靜態語言」為主,它們會事先定義型別,能夠在程式執行前(編譯時期)檢查中型別錯誤。優點是有高效能的執行速度,不過缺點是程式語法繁瑣、彈性不足,也只能檢查出執行前的簡單錯誤。

編譯語言有C、C++、Objective-C、Swift等。

什麼是編譯?

直譯是經過「直譯器」將程式一行一行的翻譯成機器語言,並立即執行的翻譯方式。

直譯式語言多半以「動態語言」為主,具有靈活的型別處理,動態生成與程式彈性。在執行時確認與檢查型別,優點為語法簡潔且有較高的彈性,而缺點則是型別錯誤要到執行時期才會呈現出來,效能較不理想。

直譯式語言有JavaScript、Python、PHP及Ruby等。

編譯與直譯的差異

  • 編譯式語言只需翻譯一次,而直譯式語言則是每次執行時都需再翻譯。
  • 執行期的執行速度,編譯式語言較快,因為已經預先編譯,只需叫出執行檔來執行,而直譯式語言則需要一行一行翻譯並執行。
  • 直譯式語言的程式開發與除錯速度比較快,因為馬上執行便能立即除錯,於是也較適合新手。

以上說明和圖解是不是很容易懂呢?🤓

曾經我想要Web和App都專精,不過礙於一個人的時間有限,反而什麼都學什麼都不精,於是我才以開發App為主!

若是App開發速度快如Web,那麼我就能同時駕馭iOS和Android,然而實際上開發App,編譯速度時間長,編譯次數也多,使得要同時掌控兩個平台,相當有難度呢!

總結,選一個真正想要做的方向吧!😜

參考:

Comments on: "[圖解] 編譯 vs 直譯" (1)

  1. […] 我還跟他講述為何公司要開發三平台(Web、iOS、Android),他以為開發一個平台不就好了?我還特地為他找資料寫文章,請參考:編譯與直譯。 […]

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: