本篇文章給大家介紹一分鐘解讀PHP是解釋型還是編譯型的?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。
編譯型語(yǔ)言
- 使用專(zhuān)門(mén)的編譯器(類(lèi)似于Windows下的Visual Studio)、針對(duì)特定平臺(tái)(操作系統(tǒng))將某種高級(jí)語(yǔ)言源代碼一次性“翻譯”成該平臺(tái)硬件執(zhí)行的機(jī)器碼(包括機(jī)器指令和操作數(shù)),并包裝成該平臺(tái)所能識(shí)別的可執(zhí)行性程序(.exe)的格式,這個(gè)轉(zhuǎn)換過(guò)程稱(chēng)為編譯(Compile)。編譯生成的可執(zhí)行程序可以以脫離開(kāi)發(fā)環(huán)境,在特定的平臺(tái)上獨(dú)立運(yùn)行。有些程序在編譯結(jié)束之后,還可能需要對(duì)其他編譯好的目標(biāo)代碼進(jìn)行鏈接,即組裝兩個(gè)以上的目標(biāo)代碼模塊生成最終的可執(zhí)行程序,通過(guò)這種方式實(shí)現(xiàn)低層次的代碼復(fù)用。
- 編譯型語(yǔ)言的代碼是一次編譯,循環(huán)使用。換句話說(shuō)就是前人種樹(shù),后人乘涼。
- C、C++、Objective -C 等都屬于編譯型語(yǔ)言
解釋型語(yǔ)言
- 在程序運(yùn)行前將源程序預(yù)編譯成中間語(yǔ)言,然后再由解釋器執(zhí)行中間語(yǔ)言
- 每次執(zhí)行解釋型語(yǔ)言的程序都需要進(jìn)行一次編譯,因此解釋型語(yǔ)言的程序運(yùn)行效率通常較低,而且它不能脫離解釋器獨(dú)立運(yùn)行。
- C#、PHP、Python、Java等都是解釋型語(yǔ)言。
OK,通過(guò)上面概念的簡(jiǎn)單了解,你可能對(duì)解釋型、編譯型語(yǔ)言有了一個(gè)大概的了解。既然兩者平分天下,下面我們就來(lái)看一下兩者各有什么優(yōu)勢(shì)吧。
編譯型語(yǔ)言
優(yōu)勢(shì)
- 編譯型語(yǔ)言最大的優(yōu)勢(shì)之一就是其執(zhí)行速度。用C/C++編寫(xiě)的程序運(yùn)行速度要比用Java編寫(xiě)的相同程序快30%-70%。
- 編譯型程序比解釋型程序消耗的內(nèi)存更少。
劣勢(shì)
- 不利的一面——編譯器比解釋器要難寫(xiě)得多
- 編譯器在調(diào)試程序時(shí)提供不了多少幫助——有多少次在你的C語(yǔ)言代碼中遇到一個(gè)“空指針異?!睍r(shí),需要花費(fèi)好幾個(gè)小時(shí)來(lái)明確錯(cuò)誤到底在代碼中的什么位置。
- 可執(zhí)行的編譯型代碼要比相同的解釋型代碼大許多。例如,C/C++的.exe文件要比同樣功能的Java的.class文件大很多。
- 編譯型程序是面向特定平臺(tái)的因而是平臺(tái)依賴(lài)的。
- 編譯型程序不支持代碼中實(shí)現(xiàn)安全性——例如,一個(gè)編譯型的程序可以訪問(wèn)內(nèi)存的任何區(qū)域,并且可以對(duì)你的PC做它想做的任何事情(大部分病毒是使用編譯型語(yǔ)言編寫(xiě)的)
- 由于松散的安全性和平臺(tái)依賴(lài)性,編譯型語(yǔ)言不太適合開(kāi)發(fā)因特網(wǎng)或者基于Web的應(yīng)用。
解釋型語(yǔ)言
優(yōu)勢(shì)
- 極佳的調(diào)試支持。一名PHP程序員只需要幾分鐘就可以定位并修復(fù)一個(gè)“空指針異常”,因?yàn)镻HP運(yùn)行環(huán)境不僅指明了異常的性質(zhì),而且給出了異常發(fā)生位置具體的行號(hào)和函數(shù)調(diào)用順序(著名的堆棧跟蹤信息)。這樣的便利是編譯型語(yǔ)言所無(wú)法提供的。
- 解釋器比編譯器容易實(shí)現(xiàn)
- 極佳的平臺(tái)獨(dú)立性
- 高度的安全性——這是互聯(lián)網(wǎng)應(yīng)用迫切需要的
- 中間語(yǔ)言代碼的大小比編譯型可執(zhí)行代碼小很多
劣勢(shì)
- 占用