由解釋性語言與編譯性語言的區別,來說明java虛擬機和php內核有異曲同工之妙.
解釋性語言與編譯性語言的區別在於,解釋性語言是把用戶的邏輯語言翻譯成機器語言來執行,有人說,這和編譯性語言有什麼差別?有的,之間多了一步“翻譯”,例如PHP的詞法解析與語法解析就是一種翻譯。
兩種類型的語言同樣是告訴機器如何操作,只是方法不一樣而已。看下例子:
如果,我要寫一個加法運算程序,用兩種不同語言會是怎樣的呢,看下面:
例如編譯性語言C/C++
#<iostream>
using namespace std;
int main(void){
int a,b;
cin>>a>>b;
cout<<a+b;
return 0;
}
解釋性語言PHP
<?php
$a=$_GET[“a”];
$b=$_GET[“b”];
echo $a+$b;
?>
仔細一看,好像並沒有什麼差別,其實,邏輯上來說,的確沒有什麼差別,那麼爲什麼還要有解釋性語言的誕生呢?有編譯性語言就好了嘛。原則上是這樣的,可是,人們太懶啊,編譯語言如果有了問題,每次都要重新編譯(有這個時間,還不如去找女朋友),而解釋性語言是如何俘虜人們的歡心呢?方便,快速。。。。說回上面的程序吧:
第一個,簡簡單單,編譯器編譯,生成可執行程序(如exe),over
第二個,把代碼統統發給一個可執行程序(如jvm,php內核),可執行文件會自動處理該代碼邏輯,翻譯,再執行,不需要編譯
Java虛擬機和PHP內核其實是在做着同樣的事情,而且底層都是使用C來實現的,刨除語法之類的,確實有着異曲同工之妙。