解释型语言与编译型的必须知识点
生活随笔
收集整理的這篇文章主要介紹了
解释型语言与编译型的必须知识点
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
解釋型語言與編譯型的必須知識點
概念:
- 計算機不能理解直接理解高級語言,只能理解機器語言,所以必須把高級語言翻譯成機器語言,計算機才能執(zhí)行高級語言編寫的程序.
- 翻譯的方式有兩種:
- 編譯
- 解釋
兩種翻譯的方式只是時間不一樣…
特點:
- 解釋型語言是指它常用的執(zhí)行機制是使用一個解釋器來執(zhí)行,解釋器對于程序是一句一句翻譯成機器語言來一句一句執(zhí)行,例如shell的腳本語言.
- 編譯型語言是指它是使用一個編譯器來編譯成機器語言,然后就可以直接運行這個編譯成的可執(zhí)行文件.例如C語言你也可以為解釋性語言(如shell腳本語言)寫個編譯器來編譯,這樣它就成了“編譯語言”.
區(qū)別:
不管是解釋型語言還是編譯型語言都可以編譯和解釋,前提是有這樣的解釋器和編譯器.所謂的“解釋性”和“編譯”指的是執(zhí)行機制上的不同。
兩種類型的有缺點:
編譯型語言:
- 編譯型語言最大的優(yōu)勢之一就是其執(zhí)行速度。用C/C++編寫的程序運行速度要比用Java編寫的相同程序快30%-70%
- 編譯型程序比解釋型程序消耗的內(nèi)存更少。
- 不利的一面——編譯器比解釋器要難寫得多。
- 編譯器在調(diào)試程序時提供不了多少幫助——有多少次在你的C語言代碼中遇到一個“空指針異?!睍r,需要花費好幾個小時來明確錯誤到底在代碼中的什么位置。
- 可執(zhí)行的編譯型代碼要比相同的解釋型代碼大許多。例如,C/C++的.exe文件要比同樣功能的Java的.class文件大很多。
- 編譯型程序是面向特定平臺的因而是平臺依賴的。
解釋型語言:
- 解釋型語言提供了極佳的調(diào)試支持。一名Java程序員只需要幾分鐘就可以定位并修復一個“空指針異?!?#xff0c;因為Java運行環(huán)境不僅指明了異常的性質(zhì),而且給出了異常發(fā)生位置具體的行號和函數(shù)調(diào)用順序(著名的堆棧跟蹤信息)。這樣的便利是編譯型語言所無法提供的。
- 另一個優(yōu)勢是解釋器比編譯器容易實現(xiàn)
- 解釋型語言最大的優(yōu)勢之一是其平臺獨立性
- 解釋型語言也可以保證高度的安全性——這是互聯(lián)網(wǎng)應(yīng)用迫切需要的
- 中間語言代碼的大小比編譯型可執(zhí)行代碼小很多
- 平臺獨立性,以及嚴密的安全性是使解釋型語言成為適合互聯(lián)網(wǎng)和Web應(yīng)用的理想語言的2個最重要的因素。
- 解釋型語言存在一些嚴重的缺點。解釋型應(yīng)用占用更多的內(nèi)存和CPU資源。這是由于,為了運行解釋型語言編寫的程序,相關(guān)的解釋器必須首先運行。解釋器是復雜的,智能的,大量消耗資源的程序并且它們會占用很多CPU周期和內(nèi)存。
- 由于解釋型應(yīng)用的decode-fetch-execute(解碼-抓取-執(zhí)行)的周期,它們比編譯型程序慢很多。
總結(jié)
以上是生活随笔為你收集整理的解释型语言与编译型的必须知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云服务器部署项目
- 下一篇: django正反向查询