一、編譯型語言
編譯型語言是指使用專門的編譯器,針對特定平台(操作系統)將某種高級語言源代碼一次性“翻譯”成可被該平台硬件執行的機器碼(包括機器指令和操作數),並包裝成該平台所能識別的可執行性程序的格式,這個轉換過程稱為“編譯”。編譯生成的可執行性程序可以脫離開發環境,在特定的平台上獨立運行。
因為編譯型語言是一次性低編譯成機器碼,所以可以脫離開發環境獨立運行,而且通過運行效率較高;但因為編譯型語言的程序被編譯成特定平台上的機器碼,因為編譯生成的可執行性程序通常無法移植到其他平台上運行;如果需要移植,則必須將源代碼復制到特定平台上,針對特定平台進行修改,至少也需要采用特定平台上的編譯器重新編譯。
二、解釋型語言
解釋性語言是指使用專門的解釋器對源程序逐行解釋成特定平台的機器碼並立即執行的語言。解釋性語言通常不會進行整體性的編譯和鏈接處理,解釋型語言相當於把編譯型語言中的編譯和解釋過程混合到一起同時完成。
可以認為:每次執行解釋型語言的程序都需要進行一次編譯,因此解釋型語言的程序運行效率通常較低,而且不能脫離解釋器獨立運行。但解釋型語言有一個優勢:跨平台比較容易,只需提供特定平台的解釋器即可,每個特定平台上的解釋器負責將源程序解釋成特定平台的機器指令即可。解釋型語言可以方便地實現源程序級的移植,但這是以犧牲程序執行效率為代價的。
個人總結:編譯型語言一次性將源碼進行編譯完成並生成可執行性程序(比如.exe程序);解釋型語言逐行進行編譯並且解釋執行(比如解釋JavaScript源碼從上往下逐條解釋執行)。