編譯器與解釋器的簡化解釋
代碼種類
- 機器碼:是能夠直接讓cpu執行的
- 字節碼:一般指的是已經通過編譯,須要解釋器翻譯後才能成爲機器碼的中間代碼. 如Java字節碼
- 源代碼:是高級語言編寫的代碼(對人是可讀的)
編譯工做流程
- 編譯階段:從源代碼編譯成機器碼,而後直接運行輸出
- 運行階段:不須要編譯器了。只須要直接運行生成的機器碼。
特色:高效,可是不能跨平臺。由於,機器碼是與操做系統平臺對應的。不能通用。通常,須要在不一樣的平臺上(或者指定平臺編譯),進行,編譯。所用的編譯器,也是由於平臺而有所差別。表明語言:C、C++、go……php
解釋工做流程
- 編譯階段:無
- 運行階段:須要解釋器,一邊把源碼翻譯成機器碼,一邊進行機器碼的運行。
特色:低效,跨平臺。由於,給每一個平臺定製編譯器就能夠了。而後,一份代碼能夠,在多個平臺運行。表明語言:python、ruby、php……java
半編譯型半解釋型語言
表明語言:javapython
- 編譯階段:java源代碼先編譯成字節碼.class文件
- 運行階段:而後在不一樣平臺上,經過jvm虛擬機運行代碼
特色:高效,跨平臺。ruby
![未命名文件.jpg](http://static.javashuo.com/static/loading.gif)