一、解釋器html
解釋器是一種計算機程序,它將每一個高級程序語句轉換成機器代碼。前端
二、編譯器c++
把高級語言編寫的程序轉換成機器碼,將人可讀的代碼轉換成計算機可讀的代碼(0和1)。程序員
三、機器語言編程
一個機器語言程序是由一系列二進制模式組成的(例 110110) 它表示應該由計算機執行的簡單操做。機器語言程序是可執行的,因此它們能夠直接運行c#
二者都是將高級語言轉換成機器碼,解釋器在程序運行時將代碼轉換成機器碼,編譯器在程序運行以前將代碼轉換成機器碼後端
Interpreter(解釋器) | compare(編譯器) | |
程序步驟 | 一、建立代碼 二、沒有文件連接或機器代碼生成 三、源語句在執行過程當中逐行執行 |
一、建立代碼 二、Compile將解析或分析全部語言語句的正確性。若是不正確,則拋出錯誤 三、若是沒有錯誤,編譯器將把源代碼轉換爲機器碼 四、它將不一樣的代碼文件連接到一個可運行的程序(稱爲exe) 五、運行程序 |
Input(輸入) | 每次讀取一行 | 整個程序 |
Output(輸出) | 不產生任何的中間代碼 | 生成中間目標代碼 |
工做機制 | 編譯和執行同時進行 | 編譯在執行以前完成 |
存儲 | 不保存任何機器代碼 | 存儲編譯後的機器代碼在機器上 |
執行 | 程序執行是解釋過程的一部分,所以是逐行執行的 | 程序執行與編譯是分開的,它只在整個輸出程序編譯後執行 |
生成程序 | 不生成輸出程序,因此他們在每次執行過程當中都要評估源程序 | 生成能夠獨立於原始程序運行的輸出程序(以exe的形式) |
修改 | 直接修改就可運行 | 若是須要修改代碼,則須要修改源代碼,從新編譯 |
運行速度 | 慢 | 快 |
內存 | 它須要較少的內存,由於它不建立中間對象代碼 | 內存需求更多的是因爲目標代碼的建立 |
錯誤 | 解釋器讀取一條語句並顯示錯誤(若是有的話)。你必須糾正錯誤才能解釋下一行 | 編譯器在編譯時顯示全部錯誤和警告。所以,不修正錯誤就不能運行程序 |
錯誤監測 | 容易 | 難 |
編程語言 | PHP, Perl, Python, Ruby | C, C++, C#, Scala, Java |