儿子和女儿——解释器和编译器的区别与联系
https://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html
?
菜鳥經(jīng)常將編譯器和解釋器弄混淆,無奈之下,于是向高手請教。
高手說:
“解釋器是一條一條的解釋執(zhí)行源語言。比如php,postscritp,javascript就是典型的解釋性語言。
編譯器是把源代碼整個編譯成目標(biāo)代碼,執(zhí)行時不在需要編譯器,直接在支持目標(biāo)代碼的平臺上運(yùn)行,這樣執(zhí)行效率比解釋執(zhí)行快很多。比如C語言代碼被編譯成二進(jìn)制代碼(exe程序),在windows平臺上執(zhí)行。
”
?
菜鳥說:“我還是不明白,能給個形象的比喻么?”
高手說:“給你講個故事。”
母親打電話給兒子說:“你爸最近身體不好,家里人少不熱鬧”。
????? 兒子想,對啊,爸年紀(jì)大了,身體不好,買點(diǎn)牦牛骨髓壯骨粉不錯,于是兒子就去超市買了牦牛骨髓壯骨粉。
兒子又想啊,最近黃金搭檔很火,買點(diǎn)給爸試試。于是兒子又去買了黃金搭檔。
從超市回來后,兒子又尋思母親說的“家里不熱鬧”,嗯,家里的小皇帝自從上寄宿學(xué)校后就比較少回來,估計是老人家想孫子了。兒子于是給上高中的兒子打了個電話,讓他周末回來看看。
母親打電話給女兒說:“你爸最近身體不好,家里人少不熱鬧”。
女兒就想,應(yīng)該給爸做點(diǎn)什么呢?于是她拿出張紙開始羅列條目,先寫上了壯骨粉和黃金搭檔。然后,想著讓老人家看看外孫應(yīng)該不錯,于是就在紙上加上了一句,一家人回爸媽那里看望看望。最后紙上就寫著:
1.壯骨粉和黃金搭檔
2.一家人去看望爸媽
????? 女兒見到女婿后,就將這張紙上的信息編成短信發(fā)給了工作的女婿。
女婿一看就明白了,下班后先去超市買了補(bǔ)品,然后開車回家?guī)е迌壕腿タ赐栏冈滥噶恕?/p>
?
????? 想到什么了嗎?
菜鳥說:
我這樣說不知道對不對:兒子就像是解釋器,是想到一點(diǎn)做一點(diǎn)。女兒就像編譯器,女婿就像平臺,女兒聽完后,在紙上羅列出所有要做的事情,女婿就按著指示辦事了。
高手說:
就是這樣的。兒子對于母親的話是一條一條執(zhí)行,女兒是將母親的話整個翻譯成平臺能理解的目標(biāo)語言--短信,整個由女婿直接執(zhí)行。后者的執(zhí)行效率會更高。
?
從功能上看,解釋器和編譯器確實(shí)不一樣。
然而,從流程和結(jié)構(gòu)上看,二者卻非常相似。
兒子和女兒聽到母親的話以后,都是從兩個方面來思考:老人的身體和老人對小輩的思念。以此為據(jù),兒子和女兒都做出了自己的決定。只不過一個直接去做了,另一個卻將所要做的事情翻譯成另一種載體--短信--給存儲起來。
????? 解釋器和編譯器也是如此,讀入源語言后,解釋器和編譯器都要進(jìn)行詞法分析、語法分析和語義分析,之后,二者開始有所分別。解釋器在語義分析后選擇了直接執(zhí)行語句;編譯器在語義分析后選擇將將語義存儲成某一種中間語言,之后通過不同的后端翻譯成不同的機(jī)器語言(可執(zhí)行程序)。如下圖所示:
?
總之,解析器和編譯器它們在功能上是不一樣的,然而從結(jié)構(gòu)上看卻有諸多相同,而且在開發(fā)時也并沒有本質(zhì)上的差別,這也是很多人將二者混淆的原因之一。究竟是開發(fā)解析器還是編譯器?只需要依據(jù)功能上的實(shí)際需要來做出決定就ok了。
轉(zhuǎn)載于:https://www.cnblogs.com/maidongdong/p/11231538.html
總結(jié)
以上是生活随笔為你收集整理的儿子和女儿——解释器和编译器的区别与联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EPS是什么格式
- 下一篇: 线段树——HDU - 1698