-
1 # 一劍凌雲
-
2 # flappyer
編譯型語言比如C,C++,他們需要經過幾個步驟才能生成最後的可執行檔案,具體四個步驟,預處理,生成.i檔案,編譯,生成.s檔案,彙編,生成.o檔案,連結,生成最後的可執行檔案。解釋型語言,比如Python,PHP等,他們不需要這個過程
-
3 # 科學謎航
1、對於解釋性語言而言,程式執行時需要有直譯器程式,且直譯器內建好各種指令的功能程式碼,對於編譯器而言,執行時所有的程式程式碼都在使用者程式裡,它依賴cpu指令執行。
2、解釋型語言執行速度會慢於編譯語言
因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++,Pascal等都是編譯型語言。
3、一般的解釋型語言透過直譯器來跨平臺
而編譯型語言,例如C語言,用C語言開發程式後,需要透過編譯器把程式編譯成計算機可以識別的二進位制檔案,因為不同的作業系統識別的二進位制檔案是不同的,所以C語言程式在不同的系統需要用不同的工具鏈來編譯。
-
4 # 葉飄零32306987
好比你學英語,編譯型語言就是先把英語全部翻譯成中文,儲存成檔案,你任何時候用,直接呼叫翻譯好的中文就可以了。解釋型語言就是你在看英文,讓翻譯給你一句一句的即時翻譯。
-
5 # TonyDeng
簡單地說,是對機器碼的處理是預先還是臨時的區別。由於計算機程式最終都是執行機器碼指令的,而我們編寫程式不是直接編寫機器碼,那麼就要有一種手段把人類容易理解的文字指令翻譯為機器碼,那個東西叫編譯器,這個處理過程可以有預先處理和臨時處理兩種方式。
預先處理,是先把程式文字翻譯為機器碼,然後部署這個處理好的程式碼到機器上,讓計算機執行,這就是編譯型語言。
臨時處理,是直接部署和執行以文字編寫的程式,但計算機中有一個叫直譯器的程式在輔助處理,它負責把執行的每一行文字程式臨時編譯為機器碼,計算機執行的實際上是處理後的機器碼。
在早期的原理上,解釋型語言的執行效率比編譯型低,因為它多一個臨時編譯的步驟,但到現在,這種差別已經基本可以忽略了,因為絕大多數的指令實際上是呼叫早已部署在裝置上的各種功能元件,那些元件已編譯和最佳化過,不管什麼語言執行,都是這些元件自己的效率,解釋型語言無非是發個呼叫指令,編譯型語言也一樣,差不到哪去。
解釋型語言和編譯型語言各有優缺點,沒有誰是絕對優勢的,其實在我看來,解釋型語言更好用。對學程式設計的,建議至掌握這兩類語言分別至少一種。
-
6 # OpenstackOne
首先什麼是編譯型語言和解釋型語言?
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式有兩種:
1.編譯
2.解釋
由此高階語言也分為編譯型語言和解釋型語言。
主要區別在於,前者源程式編譯後即可在該平臺執行,後者是在執行期間才編譯。所以前者執行速度快,後者跨平臺性好。
編譯型語言使用專門的編譯器,針對特定的平臺,將高階語言原始碼一次性的編譯成可被該平臺硬體執行的機器碼,幷包裝成該平臺所能識別的可執行性程式的格式。
特點在編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把原始碼編譯成機器語言的檔案,如exe格式的檔案,以後要再執行時,直接使用編譯結果即可,如直接執行exe檔案。因為只需編譯一次,以後執行時不需要編譯,所以編譯型語言執行效率高。
總結1.一次性的編譯成平臺相關的機器語言檔案,執行時脫離開發環境,執行效率高;
2.與特定平臺相關,一般無法移植到其他平臺;
3.現有的C、C++、Objective等都屬於編譯型語言。
解釋型語言使用專門的直譯器對源程式逐行解釋成特定平臺的機器碼並立即執行。是程式碼在執行時才被直譯器一行行動態翻譯和執行,而不是在執行之前就完成翻譯。
特點解釋型語言不需要事先編譯,其直接將原始碼解釋成機器碼並立即執行,所以只要某一平臺提供了相應的直譯器即可執行該程式。
總結1.解釋型語言每次執行都需要將原始碼解釋稱機器碼並執行,效率較低;
2.只要平臺提供相應的直譯器,就可以執行原始碼,所以可以方便源程式移植;
3.Python等屬於解釋型語言。
編譯型與解釋型,兩者各有利弊前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁尾本、伺服器指令碼及輔助開發介面這樣的對速度要求不高、對不同系統平臺間的相容性有一定要求的程式則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。
關於javaJava和其他的語言不太一樣。因為java針對不同的平臺有不同的JVM,實現了跨平臺。所以Java語言有一次編譯到處執行的說法。
1.你可以說它是編譯型的:因為所有的Java程式碼都是要編譯的,.java不經過編譯就什麼用都沒有。
2.你可以說它是解釋型的:因為java程式碼編譯後不能直接執行,它是解釋執行在JVM上的,所以它是解釋執行的,那也就算是解釋的了。
3.但是,現在的JVM為了效率,都有一些JIT最佳化。它又會把.class的二進位制程式碼編譯為本地的程式碼直接執行,所以,又是編譯的。
個人認為,java是解釋型的語言,因為雖然java也需要編譯,編譯成.class檔案,但是並不是機器可以識別的語言,而是位元組碼,最終還是需要 jvm的解釋,才能在各個平臺執行,這同時也是java跨平臺的原因。所以可是說java即是編譯型的,也是解釋型,但是假如非要歸類的話,從概念上的定義,恐怕java應該歸到解釋型的語言中。
編譯型的語言包括:C、C++、Delphi、Pascal、Fortran
解釋型的語言包括:Java、Basic、javascript、python
-
7 # 發財哥哥教技術
簡單理解 解釋型語言 就是
a 講個笑話給c c 能聽懂
編譯型語言就是
a講個笑話給c聽 c。聽不懂
必須要b翻譯給c聽
解釋型語言
比如php語言 透過php 直譯器就可以展現給客戶端
編譯型語言
比如路由器韌體
你必須要原始碼透過系統編譯,生成韌體 才能刷到路由器上,不是直接原始碼拿來就可以用
-
8 # 物業之道
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。
這裡寫圖片描述
計算機是不能理解高階語言的,更不能直接執行高階語言,它只能直接理解機器語言,所以使用任何高階語言編寫的程式若想被計算機執行,都必須將其轉換成計算機語言,也就是機器碼。而這種轉換的方式有兩種:
編譯
解釋
由此高階語言也分為編譯型語言和解釋型語言。
編譯型語言
使用專門的編譯器,針對特定的平臺,將高階語言原始碼一次性的編譯成可被該平臺硬體執行的機器碼,幷包裝成該平臺所能識別的可執行性程式的格式。
特點
在編譯型語言寫的程式執行之前,需要一個專門的編譯過程,把原始碼編譯成機器語言的檔案,如exe格式的檔案,以後要再執行時,直接使用編譯結果即可,如直接執行exe檔案。因為只需編譯一次,以後執行時不需要編譯,所以編譯型語言執行效率高。
總結
一次性的編譯成平臺相關的機器語言檔案,執行時脫離開發環境,執行效率高;
與特定平臺相關,一般無法移植到其他平臺;
現有的C、C++、Objective等都屬於編譯型語言。
這裡寫圖片描述
解釋型語言
使用專門的直譯器對源程式逐行解釋成特定平臺的機器碼並立即執行。
特點
解釋型語言不需要事先編譯,其直接將原始碼解釋成機器碼並立即執行,所以只要某一平臺提供了相應的直譯器即可執行該程式。
總結
解釋型語言每次執行都需要將原始碼解釋稱機器碼並執行,效率較低;
只要平臺提供相應的直譯器,就可以執行原始碼,所以可以方便源程式移植;
Python等屬於解釋型語言。
回覆列表
編譯型語言:程式在執行之前需要一個專門的編譯過程,把程式編譯成 為機器語言的檔案,執行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等。
而相對的,解釋性語言編寫的程式不進行預先編譯,以文字方式儲存程式程式碼。在釋出程式時,看起來省了道編譯工序。但是,在執行程式的時候,解釋性語言必須先解釋再執行。如JAVA。