導航:首頁 > 源碼編譯 > 編譯和解釋型程序及其常見實例

編譯和解釋型程序及其常見實例

發布時間:2024-09-30 20:19:53

『壹』 解釋型語言和編譯型語言的區別是什麼

一、編譯型

編譯型語言:編譯型語言在執行之前要先經過編譯過程,編譯成為一個可執行的機器語言的文件,比如exe。因為翻譯只做一遍,以後都不需要翻譯,所以執行效率高。

編譯型語言的典型代表:C語言,C++。

編譯型語言的優缺點:執行效率高,缺點是跨平台能力弱,不便調試。

二、解釋型

解釋型語言:解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。執行時才翻譯執行。程序每執行一次就要翻譯一遍。

代表語言:pythonjavaScript。

優缺點:跨平台能力強,易於調,執行速度慢。

編譯型與解釋型,兩者各有利弊

前者由於程序執行速度快,同等條件下對系統要求較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言。

而一些網頁腳本、伺服器腳本及輔助開發介面這樣的對速度要求不高、對不同系統平台間的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB等等。

『貳』 急!!!!!!!!解釋程序與編譯程序有什麼區別,各舉例!!!!!!

編譯程序和解釋程序2006年10月16日
星期一
14:26如果一個程序能夠把某一種語言程序(稱為源語言程序)改造成為另一種語言程序(稱為目標語言程序),則這親戚的程序稱為「翻譯程序」。如果源語言是「高級語言」(諸如FORTRAN、PASCAL等等),而目標語言是「低級語言」(如匯編語言或機器語言),則這樣的翻譯程序稱為「編譯程序」。
現在的計算機尚不能直接執行高級語言程序。執行一個高級語言程序大體上要分兩步:第一步,把高級語言的源程序編譯成低級語言的目標程序;第二步,運行這個目標程序。編譯程序的典型工作過程是:輸入源程序,對它進行加工處理,輸出目標程序。加工處理是非常復雜的過程,它又可劃分成以下幾個階段:源程序→詞法分析→語法分析→產生中間代碼→優化→目標代碼生成→目標程序。
第一階段是詞法分析。承擔詞法分析任務的程序稱為「掃描器」。詞法分析的任務是:對構成源程序的字元串進行掃描和分解。第二階段是語法分析。承擔語法分析任務的程序稱為「分析器」。語法分析的任務是:根據語法規則,把描掃器所提供的結果分析成各類語法范疇。第三階段是產生中間代碼。承擔產生中間代碼任務的程序稱為「中間代碼產生器」。其任務是:按照語法分析器所識別出的語法范疇,產生相應的中間指令。第四階段是優化,即代碼優化。優化的任務是對前階段產生的中間代碼進行加工變換,以便使生成的目標程序,能運行得更快更省(省內存)。第五階段是目標代碼生成。這一階段的任務是:按照優化後的中間代碼和其它有關信息生成目標程序。這種目標程序可以在計算機上直接執行。執行這個目標程序,就可得到一個高級語言程序的結果。
我們知道,所謂翻譯程序是這樣一種程序,它能夠把用甲語言寫的程序翻譯成與之等價的用乙語言寫的程序。這里的甲語言是該翻譯程序的源語言,而乙語言則為該翻譯程序的目標語言。對於編譯程序而言,源程序是被加工的對象,而目標程序是加工後的結果。
在計算機上執行用某種高級語言寫的源程序,通常有兩種方式:一是編譯執行方式,二是解釋執行方式。
採用編譯執行方式執行源程序時要分兩大步:編譯和運行。編譯中的加工處理過程又可分為五個階段。
解釋執行方式與編譯執行方式是不同的,其根本區別在於:編譯方式把源程序的執行過程嚴格地分成兩大步:編譯和運行。即先把源程序全部翻譯成目標代碼,然後再運行此目標代碼,獲執行結果。解釋方式則不然。它是按照源程序中語句的動態順序,直接地逐句進行分析解釋,並立即執行。所以,解釋程序是這樣一種程序,它能夠按照源程序中語句的動態順序,逐句地分析解釋並執行,直至源程序結束。
與編譯程序一樣,解釋程序也與源語言及計算機有關。同一台計算機上不同語言的解釋程序是不同的;同一種語言在不同的計算機上的解釋程序也可能不同。同一種高級語言的源程序,它可以採用解釋執行方式,也可以採用編譯執行方式。例如,BASIC語言有解釋BASIC和編譯BASIC之分。前者執行速度慢;後者執行速度快。編譯程序和解釋程序都屬於系統程序。

『叄』 編譯型語言和解釋型語言的區別

編譯型語言和解釋型語言的區別是:執行效率不同、跨平台能力不同。

我們編寫的源代碼是人類語言,我們自己能夠輕松理解;但是對於計算機硬體(CPU),源代碼就是天書,根本無法執行,計算機只能識別某些特定的二進制指令,在程序真正運行之前必須將源代碼轉換成二進制指令。

所謂的二進制指令,也就是機器碼,是CPU能夠識別的硬體層面的「代碼」,簡陋的硬體(比如古老的單片機)只能使用幾十個指令,強大的硬體(PC和智能手機)能使用成百上千個指令。

然而,究竟在什麼時候將源代碼轉換成二進制指令呢?不同的編程語言有不同的規定:

有的編程語言要求必須提前將所有源代碼一次性轉換成二進制指令,也就是生成一個可執行程序(Windows下的.exe),比如C語言、C++、Golang、Pascal(Delphi)、匯編等,這種編程語言稱為編譯型語言,使用的轉換工具稱為編譯器。

有的編程語言可以一邊執行一邊轉換,需要哪些源代碼就轉換哪些源代碼,不會生成可執行程序,比如Python、JavaScript、PHP、Shell、MATLAB等,這種編程語言稱為解釋型語言,使用的轉換工具稱為解釋器。

簡單理解,編譯器就是一個「翻譯工具」,類似於將中文翻譯成英文、將英文翻譯成俄文。但是,翻譯源代碼是一個復雜的過程,大致包括詞法分析、語法分析、語義分析、性能優化、生成可執行文件等五個步驟,期間涉及到復雜的演算法和硬體架構。

Java和C#是一種比較奇葩的存在,它們是半編譯半解釋型的語言,源代碼需要先轉換成一種中間文件(位元組碼文件),然後再將中間文件拿到虛擬機中執行。Java引領了這種風潮,它的初衷是在跨平台的同時兼顧執行效率;C#是後來的跟隨者,但是C#一直止步於Windows平台,在其它平台鮮有作為。

解釋型語言

對於解釋型語言,每次執行程序都需要一邊轉換一邊執行,用到哪些源代碼就將哪些源代碼轉換成機器碼,用不到的不進行任何處理。每次執行程序時可能使用不同的功能,這個時候需要轉換的源代碼也不一樣。

因為每次執行程序都需要重新轉換源代碼,所以解釋型語言的執行效率天生就低於編譯型語言,甚至存在數量級的差距。計算機的一些底層功能,或者關鍵演算法,一般都使用C/C++實現,只有在應用層面(比如網站開發、批處理、小工具等)才會使用解釋型語言。

在運行解釋型語言的時候,我們始終都需要源代碼和解釋器,所以說它無法脫離開發環境。

當我們說「下載一個程序(軟體)」時,不同類型的語言有不同的含義:

對於編譯型語言,我們下載到的是可執行文件,源代碼被作者保留,所以編譯型語言的程序一般是閉源的。

對於解釋型語言,我們下載到的是所有的源代碼,因為作者不給源代碼就沒法運行,所以解釋型語言的程序一般是開源的。

相比於編譯型語言,解釋型語言幾乎都能跨平台,「一次編寫,到處運行」是真是存在的,而且比比皆是。那麼,為什麼解釋型語言就能快平台呢?

這一切都要歸功於解釋器!

我們所說的跨平台,是指源代碼跨平台,而不是解釋器跨平台。解釋器用來將源代碼轉換成機器碼,它就是一個可執行程序,是絕對不能跨平台的。

官方需要針對不同的平台開發不同的解釋器,這些解釋器必須要能夠遵守同樣的語法,識別同樣的函數,完成同樣的功能,只有這樣,同樣的代碼在不同平台的執行結果才是相同的。

你看,解釋型語言之所以能夠跨平台,是因為有了解釋器這個中間層。在不同的平台下,解釋器會將相同的源代碼轉換成不同的機器碼,解釋器幫助我們屏蔽了不同平台之間的差異。
關於Python
Python屬於典型的解釋型語言,所以運行Python程序需要解釋器的支持,只要你在不同的平台安裝了不同的解釋器,你的代碼就可以隨時運行,不用擔心任何兼容性問題,真正的「一次編寫,到處運行」。

Python幾乎支持所有常見的平台,比如linux、Windows、Mac OS、Android、FreeBSD、Solaris、PocketPC等,你所寫的Python代碼無需修改就能在這些平台上正確運行。也就是說,Python的可移植性是很強的。

總結

我們將編譯型語言和解釋型語言的差異總結為下表:

類型原理優點缺點編譯型語言通過專門的編譯器,將所有源代碼一次性轉換成特定平台(Windows、Linux等)執行的機器碼(以可執行文件的形式存在)。編譯一次後,脫離了編譯器也可以運行,並且運行效率高。可移植性差,不夠靈活。

解釋型語言由專門的解釋器,根據需要將部分源代碼臨時轉換成特定平台的機器碼。跨平台性好,通過不同的解釋器,將相同的源代碼解釋成不同平台下的機器碼。一邊執行一邊轉換,效率很低。

『肆』 解釋型語言的編譯型語言和解釋型語言的區別

解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。 編譯性語言例如c語言:用c語言開發了程序後,需要通過編譯器把程序編譯成機器語言(即計算機識別的二進制文件,因為不同的操作系統計算機識別的二進制文件是不同的),所以c語言程序進行移植後,要重新編譯。(如windows編譯成ext文件,linux編譯成erp文件)。
解釋性語言,例如java語言,java程序首先通過編譯器編譯成class文件,如果在windows平台上運行,則通過windows平台上的java虛擬機(VM)進行解釋。如果運行在linux平台上,則通過linux平台上的java虛擬機進行解釋執行。所以說能跨平台,前提是平台上必須要有相匹配的java虛擬機。如果沒有java虛擬機,則不能進行跨平台。

『伍』 編譯型語言和解釋型語言的區別是什麼

編譯型語言和解釋型語言的區別是翻譯的時間點不同。

編譯型語言:編譯型語言在執行之前要先經過編譯過程,編譯成為一個可執行的機器語言的文件,比如exe。

因為翻譯只做一遍,以後都不需要翻譯,所以執行效率高。

解釋型語言:解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。

執行時才翻譯執行程序每執行一次就要翻譯一遍。

編譯型語言和解釋型語言的詳細介紹:

對於編譯型語言,開發完成以後需要將所有的源代碼都轉換成可執行程序,比如Windows下的.exe文件,可執行程序裡麵包含的就是機器碼。只要我們擁有可執行程序,就可以隨時運行,不用再重新編譯了,也就是「一次編譯,無限次運行」。

在運行的時候,我們只需要編譯生成的可執行程序,不再需要源代碼和編譯器了,所以說編譯型語言可以脫離開發環境運行。

編譯型語言一般是不能跨平台的,也就是不能在不同的操作系統之間隨意切換。

對於解釋型語言,每次執行程序都需要一邊轉換一邊執行,用到哪些源代碼就將哪些源代碼轉換成機器碼,用不到的不進行任何處理。

每次執行程序時可能使用不同的功能,這個時候需要轉換的源代碼也不一樣。

因為每次執行程序都需要重新轉換源代碼,所以解釋型語言的執行效率天生就低於編譯型語言,甚至存在數量級的差距。

計算機的一些底層功能,或者關鍵演算法,一般都使用C/C++實現,只有在應用層面(比如網站開發、批處理、小工具等)才會使用解釋型語言。

『陸』 編譯性語言,解釋性語言和腳本語言的區別

一、翻譯和解釋的不同 翻譯的方式有兩種,一個是編譯,一個是解釋。 兩種方式只是翻譯的時間不同。編譯型語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。 解釋則不同,解釋性語言的程序不需要編譯,省了道工序,解釋性語言在運行程序的時候才翻譯,比如解釋性basic語言,專門有一個解釋器能夠直接執行basic程序,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就要翻譯一次,效率比較低。
二、腳本語言 ①腳本語言(JavaScript,VBscript等)介於HTML和C,C++,Java,C#等編程語言之間 HTML通常用於格式化和鏈結文本。而編程語言通常用於向機器發出一系列復雜的指令。 ②腳本語言與編程語言也有很多相似地方,其函數與編程語言比較相象一些,其也涉及到變數。與編程語言之間最大的區別是編程語言的語法和規則更為嚴格和復雜一些。 ③與程序代碼的關系:腳本也是一種語言,其同樣由程序代碼組成 註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。 ④腳本語言是一種解釋性的語言 例如vbscript,javascript,installshield script等等,它不象c/c++等可以編譯成二進制代碼,以可執行文件的形式存在。腳本語言不需要編譯,可以直接用,由解釋器來負責解釋,不過每次都需要翻譯,執行速度慢。 ⑤腳本語言一般都是以文本形式存在,類似於一種命令 舉個例子說,如果你建立了一個程序,叫aaa.exe,可以打開.js為擴展名的文件。
你為.js文件的編寫指定了一套規則(語法),當別人編寫了.js文件後,你的程序用這種規則來理解編寫人的意圖,並作出回應.那麼,這一套規則就是腳本語言。

閱讀全文

與編譯和解釋型程序及其常見實例相關的資料

熱點內容
美國加密的qe 瀏覽:613
掃描版pdf6寸 瀏覽:912
能實現事務回滾的命令詞是 瀏覽:921
python判斷類型str 瀏覽:630
個稅app怎麼自動專項扣除跨年 瀏覽:389
linux伺服器加固 瀏覽:508
加密狗重復輸入口令 瀏覽:13
和目下載的視頻在那個文件夾 瀏覽:883
資金量抓股指標源碼 瀏覽:657
有什麼app能賺錢 瀏覽:488
安卓手機側屏怎麼搞 瀏覽:847
安卓機怎麼製作60幀視頻 瀏覽:936
qq設置郵箱接收伺服器地址 瀏覽:172
定時關機的dos命令 瀏覽:960
如何把rar解壓成wav 瀏覽:538
什麼是命令控制伺服器 瀏覽:365
我的世界命令方塊為什麼不好使用 瀏覽:962
數據結構中的加密演算法 瀏覽:988
百錢百雞c語言演算法 瀏覽:854
怎麼查看代理伺服器日誌 瀏覽:572