對(duì)于想要學(xué)習(xí)編程語(yǔ)言的人來(lái)說(shuō),可能對(duì)于Python和java的區(qū)別不是很了解,尤其是看到Python的標(biāo)準(zhǔn)實(shí)現(xiàn)方式是將源代碼的語(yǔ)句編譯為字節(jié)碼的形式,之后再將字節(jié)碼解釋出來(lái)。這種方式和java的實(shí)現(xiàn)方式類似啊,java也是先將源代碼編譯成平臺(tái)無(wú)關(guān)的字節(jié)碼,然后由虛擬機(jī)解釋執(zhí)行。那為什么稱java為編譯型語(yǔ)言,而稱python為腳本語(yǔ)言呢?其實(shí)我們可以從以下幾點(diǎn)來(lái)解釋一下。
其實(shí)java,c#啥的算不上嚴(yán)格的傳統(tǒng)編譯型語(yǔ)言,又要編譯又要?jiǎng)討B(tài)執(zhí)行,支持一些動(dòng)態(tài)特性又沒(méi)純動(dòng)態(tài)語(yǔ)言徹底.python的字節(jié)碼編譯也不需要強(qiáng)制執(zhí)行。python的字節(jié)碼編譯也不需要強(qiáng)制執(zhí)行.這句話什么意思?python的源代碼可以不需要編譯就執(zhí)行?Java的發(fā)布方式是編譯后的.class,Python的發(fā)布方式是.py源代碼。運(yùn)行python的人看到的是 python的源代碼可以直接運(yùn)行,編譯過(guò)程由pvm自動(dòng)執(zhí)行。對(duì)他而言,這就是腳本。所以叫腳本語(yǔ)言。而運(yùn)行java程序的人看到的是一些編譯過(guò)的.class文件。所以叫編譯語(yǔ)言。腳本語(yǔ)言是一個(gè)不需要顯示編譯的編程語(yǔ)言,在現(xiàn)代硬件和現(xiàn)代編譯技術(shù)下,編譯已經(jīng)變得越來(lái)越快導(dǎo)致腳本語(yǔ)言和傳統(tǒng)的編程語(yǔ)言之間的界限不在那么明顯。例如,V8作為Google Chrome瀏覽器的引擎,并且在瀏覽器之外使用了很多,實(shí)際上將JavaScript代碼編譯成機(jī)器代碼,而不是去解釋他們。事實(shí)上V8是一個(gè)優(yōu)化了的兩個(gè)階段的編譯器。一個(gè)語(yǔ)言是不是”腳本”我們不應(yīng)該只是從語(yǔ)言角度去看待,還應(yīng)該要在存運(yùn)行所在的環(huán)境去區(qū)別,你完全可以寫(xiě)一個(gè)C語(yǔ)言的解釋器,并且將它作為腳本語(yǔ)言來(lái)運(yùn)行。同樣也可以將JavaScript編譯成機(jī)器代碼。
以上便是合肥網(wǎng)站優(yōu)化淺析腳本語(yǔ)言python 與JAVA的不同的內(nèi)容介紹了,希望能夠?qū)δ銈冇兴鶐椭丁?/p>
責(zé)編:LEX
轉(zhuǎn)載請(qǐng)注明出處?合肥網(wǎng)絡(luò)公司佳達(dá)科技專注于網(wǎng)站推廣?www.taokedg.com