日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别

發(fā)布時間:2024/10/6 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

?

我們學(xué)了這么久的編程,做了那么多的項(xiàng)目,但總有那么一些概念即模糊又清晰,比如我們今天要細(xì)談的解釋型語言和編譯型語言。

何謂解釋?何謂編譯?

這一切要從我們學(xué)習(xí)C語言的時候開始。

所有學(xué)過C語言的同學(xué)都清楚,C語言在執(zhí)行前一定要先編譯一下,如果發(fā)現(xiàn)語法錯誤,就會發(fā)出編譯不通過的提示。而C語言就是一種編譯型的編程語言,那什么又是解釋型的語言呢?

這又要從我們學(xué)習(xí)MATLAB說起,話說呀,我們寫完MATLAB代碼之后是不是直接點(diǎn)執(zhí)行就等待結(jié)果了,如果有那一句代碼發(fā)生錯誤的話,程序就執(zhí)行到那一句才會停下來報錯,所以MATLAB是一種一邊執(zhí)行一邊解釋的語言,解釋是一句一句的翻譯。,從而不需要預(yù)先進(jìn)行編譯,所以稱之為解釋型語言。

說以上兩個例子,只是給大家一個很好的概念去快速理解什么是編譯以及解釋。但是我們還有一個話題就是:

為什么會有這兩種類型的編程語言?

人們搞這兩個東西有什么好處呢?

我想最主要的因素就是:編譯性語言不如解釋性語言跨平臺性好,也就是說不同平臺的兼容性有區(qū)別,所以才有了兩種語言。

編譯性語言例如c語言:用c語言開發(fā)了程序后,需要通過編譯器把程序編譯成機(jī)器語言(即計算機(jī)識別的二進(jìn)制文件,因?yàn)椴煌牟僮飨到y(tǒng)計算機(jī)識別的二進(jìn)制文件是不同的),所以c語言程序進(jìn)行移植后,要重新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。

解釋性語言例如java語言,java程序首先通過編譯器編譯成class文件,如果在windows平臺上運(yùn)行,則通過windows平臺上的java虛擬機(jī)(VM)進(jìn)行解釋。如果運(yùn)行在linux平臺上,則通過linux平臺上的java虛擬機(jī)進(jìn)行解釋執(zhí)行。所以說能跨平臺,前提是平臺上必須要有相匹配的java虛擬機(jī)。如果沒有java虛擬機(jī),則不能進(jìn)行跨平臺。

這個原因說明白了之后,我們來看看兩種語言有哪些代表呢?

編譯型語言代表有:C語言和C++。

解釋型語言代表有:js,php,MATLAB,java和javascript。

編譯型與解釋型的共同點(diǎn)(文章來源:湘西寧哥編程)

他們都要弄成二進(jìn)制代碼才能執(zhí)行,兩類編程語言的源代碼都是英文,但是我們的計算機(jī)并不認(rèn)識英文,所以都要轉(zhuǎn)化成二進(jìn)制才能執(zhí)行。區(qū)別就在于“轉(zhuǎn)化的方式”不一樣,請見下文分析。

編譯型與解釋型的不同點(diǎn)

1.從運(yùn)行效果上來看。編譯型語言要等全部寫完后通過編譯器去生成一個類似*.exe的二進(jìn)制文件,然后雙擊這個文件才可以看到效果。

而解釋型語言并沒生成*.exe文件,而是直接生成效果,這就是我之前提到的的那個C語言和MATLAB的例子。

2.運(yùn)行的時候是否需要編譯器的伴隨。編譯型語言運(yùn)行的是最終生成的二進(jìn)制代碼,所以不需要編譯器伴隨。

而解釋型語言則一邊解釋一邊運(yùn)行,所以運(yùn)行的時候很可能還有部分代碼沒有解釋好,所以需要編譯器伴隨(解釋型語言把該工具叫做解釋器)。

有人會問編譯器(解釋器)在哪里呢?

舉個例子,網(wǎng)頁的解釋器就在瀏覽器中,所以要看HTML的效果必須用瀏覽器或者有編譯工具在內(nèi)的其他工具打開,比如:模擬瀏覽器的工具。

3.執(zhí)行的速度對比。編譯型語言運(yùn)行的已經(jīng)是完全的二進(jìn)制內(nèi)容,運(yùn)行起來十分干凈利落,所以速度很快。

而解釋型語言運(yùn)行的不一定是完全的二進(jìn)制內(nèi)容,因?yàn)樗且贿吔忉尦啥M(jìn)制一邊運(yùn)行。

所以當(dāng)它執(zhí)行看出效果的時,程序后半部分還不一定解釋成二進(jìn)制,它就像一個“三心二意”的男人。所以像那種三心二意的男人說話有時吞吞吐吐的,速度沒有前者快,但是CPU的運(yùn)行速度如果很快,可能看不出來,只是偶爾會看到“有點(diǎn)卡”的效果。

原因就是它一邊解釋一邊運(yùn)行,你看到效果的后面可能還有一少半的代碼沒解釋成二進(jìn)制,所以看到的效果會是殘缺的。這就是為什么有時候查看網(wǎng)頁,先是出現(xiàn)一堆沒有布局的文字,然后才出現(xiàn)那種布局好的效果。

4.可移植性對比。編譯型語言是運(yùn)行二進(jìn)制內(nèi)容,所以一旦CPU指令系統(tǒng)改變,那么之前的二進(jìn)制文件可能運(yùn)行不了。比如,如果到其他硬件平臺上運(yùn)行,就可能出現(xiàn)錯誤,就需要根據(jù)該平臺重新編譯出新的二進(jìn)制文件。所以可移植性、平臺兼容性比價差。

而解釋型語言則沒有弄成什么二進(jìn)制內(nèi)容,而是在需要的時候才開始編譯、運(yùn)行。所以它自然具有可移植性,即在任何平臺都可以馬上運(yùn)行起來。

要注意的是它的解釋工具如:瀏覽器,本身就是編譯型語言解釋出來的二進(jìn)制代碼,所以瀏覽器本身不具備可移植性,是需要針對不同的平臺弄出對應(yīng)的瀏覽器最終二進(jìn)制文件的,這里可別混淆。

5.升級上對比。編譯型語言弄出來的二進(jìn)制文件若要升級,自然要重新下載一個新的二進(jìn)制文件。所以重新下載、安裝、覆蓋是最大的特點(diǎn)。比如微信的升級,就是要重新下載、重新安裝、重新覆蓋,等個半天而且很耗費(fèi)CPU資源,體驗(yàn)性就不大好。

而解釋型的語言只要重新寫好源代碼即可,用戶想要最新的效果,只要刷新一下即可,所以體驗(yàn)性好。比如:某網(wǎng)站平臺升級了,用戶只要重新刷新一下。

6.應(yīng)用領(lǐng)域,編譯型語言應(yīng)用領(lǐng)域通常是那些安裝軟件,例如桌面上的安裝軟件。解釋型的語言的應(yīng)用領(lǐng)域通常是互聯(lián)網(wǎng)、網(wǎng)站等那種刷新了一下就可以看到最新效果的領(lǐng)域。

結(jié)論

兩類編程語言都各有優(yōu)勢和劣勢,無絕對的正確和錯誤之分,大家仁者見仁智者見智。

總結(jié)

以上是生活随笔為你收集整理的foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。