直譯語言 Interperted language
直接編譯的語言。
直譯式語言必須先一條一條將程式碼讀取出來並透過直譯器
轉換成機器碼
才能夠被運作,所以通常來講直譯式語言的錯誤訊息都是直接呈現於開發環境上,舉例來講 JavaScript 就是直接呈現在瀏覽器的 console Tools 中。
直譯語言列表:
- BASIC
- LISP
- Perl
- Python
- Ruby
- JavaScript
- PHP
- R
編譯式語言 Compiled language
是以編譯器,先將程式碼編譯為機器碼,再加以執行。由於已經在預先編譯,當遇到問題時就可以預先除錯,這就是編譯式語言的好處,通常來講效能也會比較好。
編譯語言列表:
- C++
- Objective-C
- C#
JavaScript 運作過程
前面提到 JS 是屬於直譯式語言,需透過直譯器轉譯
成機器碼才能夠執行,而這個轉換過程分成以下三個階段:
Esprima 這是用來了解語法基本單元化以及抽象結構樹的小工具
- 語法基本單元化: 透過逐行逐字的分析程式碼,
尚未定義完成
- 抽象結構樹: 將原始碼定義完成,
尚未運行
- 代碼生成: 生成機器碼,
運行程式碼
參考資料
六角學院 - JavaScript 核心篇
JavaScript 核心觀念(1)-執行環境與作用域-JavaScript 運作方式