導航:首頁 > 源碼編譯 > 編譯式語言每次運行都需要編譯嗎

編譯式語言每次運行都需要編譯嗎

發布時間:2022-02-06 01:11:07

編譯型語言和解釋型語言各自的優缺點是什麼

一、編譯型語言

優點:運行速度快,代碼效率高,編譯後的程序不可修改,保密性較好。

缺點:代碼需要經過編譯方可運行,可移植性差,只能在兼容的操作系統上運行 。

二、解釋型語言

優點:可移植性較好,只要有解釋環境,可在不同的操作系統上運行。

缺點:運行需要解釋環境,運行起來比編譯的要慢,佔用資源也要多一些,代碼效率低,代碼修改後就可運行,不需要編譯過程。

(1)編譯式語言每次運行都需要編譯嗎擴展閱讀:

編譯型語言:程序在執行之前需要一個專門的編譯過程,把程序編譯成 為機器語言的文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等。而相對的,解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。在發布程序時,看起來省了道編譯工序。但是在運行程序的時候,解釋性語言必須先解釋再運行。

② 編譯型語言和解釋型語言的區別

編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言就不用再進行翻譯了。

解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對於編C/C++ 等都是編譯型語言,而java,C#等都是解釋型語言。

雖然Java程序在運行之前也有一個編譯過程,但是並不是將程序編譯成機器語言,而是將它編譯成位元組碼(可以理解為一個中間語言)。
在運行的時候,由JVM將位元組碼再翻譯成機器語言。
註:腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,php,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。

編譯型語言:

python代碼運行需要編譯嗎

有人在討論 Python 代碼是編譯執行還是解釋執行?這個問題還可以換一種說法: Python 是編譯型語言還是解釋型語言?回答這個問題

前,我們先弄清楚什麼是編譯型語言,什麼是解釋型語言。

所謂編譯執行就是源代碼經過編譯器編譯處理,生成目標機器碼,就是機器能直接運行的二進制代碼,下次運行時無需重新編譯。不過它

是針對特定CPU體系的,這些目標代碼只能在特定平台執行,如果這個程序需要在另外一種 CPU 上面運行,這個代碼就必須重新編譯。

它不具備可移植性,但是執行速度快,C、C++這類語言屬於編譯型語言。

而解釋型語言是在代碼運行期間逐行翻譯成目標機器碼,下次執行時,還是需要逐行解釋,我們可以簡單認為 Java、Python 都是解釋型

語言。

編譯型相當於廚師直接做好一桌子菜,顧客來了直接開吃,而解釋型就像吃火鍋,廚師把菜洗好,顧客需要自己動手邊煮邊吃,效率上來

說解釋型語言自然比不過編譯型語言,當然也不是絕對了,像 JIT 的效率就很高

以上是對編譯型語言和解釋型語言的一個簡單粗暴的區分,但是 Python(這里主要是指CPython)並不是嚴格的解釋型語言,因為

Python 代碼在運行前,會先編譯(翻譯)成中間代碼,每個 .py 文件將被換轉成 .pyc 文件,.pyc 就是一種位元組碼文件,它是與平台無

關的中間代碼,不管你放在 Windows 還是 Linux 平台都可以執行,運行時將由虛擬機逐行把位元組碼翻譯成目標代碼。

我們安裝Python 時候,會有一個 Python.exe 文件,它就是 Python 解釋器,你寫的每一行 Python 代碼都是由它負責執行,解釋器由

一個編譯器和一個虛擬機構成,編譯器負責將源代碼轉換成位元組碼文件,而虛擬機負責執行位元組碼,所以,解釋型語言其實也有編譯過

程,只不過這個編譯過程並不是直接生成目標代碼,而是中間代碼(位元組碼),然後再通過虛擬機來逐行解釋執行位元組碼。

總結

Python代碼首先會編程一個位元組碼文件,再由虛擬機逐行解釋,把每一行位元組碼代碼翻譯成目標指令給CPU執行。

推薦學習《Python教程》。

④ 哪些屬於編譯型語言

屬於編譯型語言的是: C

屬於解釋型語言的是: php asp jsp

java具有編譯與解釋兩種特性:既可以將其源代碼當作腳本執行,也可以進行編譯成.class代碼(位元組碼)載入運行。

區別在於:

編譯型語言,通常都會對源代碼進行編譯,生成可以執行的二進制代碼,執行的是編譯後的結果。

解釋型語言,通常不用對源代碼進行編譯,一般是通過解釋器載入腳本後運行。由於每個語句都是執行的時候才進行解釋翻譯,這樣解釋性語言每次執行就要翻譯一次,效率相對要低。

至於難度,個人感覺 java 相對要更復雜些。

⑤ c語言為何需要編譯和連接才能運行

的文件(也稱為源代碼)而已,需要經過1定的處理才能轉換成機器上可運行的可履行文件。
我們將對C語言的這類處理進程稱為編譯與鏈接。

⑥ 編譯型語言和解釋語言的區別是什麼

1.編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以後執行這個程序的時候,就不用再進行翻譯了。
2.解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對於編譯型語言要慢。
3.C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。
4.雖然Java程序在運行之前也有一個編譯過程,但是並不是將程序編譯成機器語言,而是將它編譯成位元組碼(可以理解為一個中間語言)。
在運行的時候,由JVM將位元組碼再翻譯成機器語言。
5.腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。

⑦ 突然想知道,為什麼有的語言需要編譯之後運行,而有的語言則不需要呢 C, ruby 請分析謝謝!

我們用的大部分程序設計語言都是高級語言,高級語言要執行,必須要先變成計算機能識別的匯編語言.將高級語言變成匯編語言的過程叫做翻譯,目前有兩種形式的翻譯方法,一種是編譯,一種是解釋.C就屬於編譯方式,執行前一定先編譯一次.而B語言就是解釋方式,解釋一條執行一條,所以執行先不需要編譯一下.

⑧ 解釋型語言與編譯型語言有什麼區別

前者給人看思路或者流程的,後者寫給編譯器看的。

⑨ 高級語言中的解釋方式和編譯方式的區別

兩者的區別如下:
解釋方式:程序運行時,取一條指令,將其轉化為機器指令,再執行這條機器指令。這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如QB,不過現在很少再用這種低效的方式的設計語言了。
編譯方式:程序運行時之前,將程序的所有代碼編譯為機器代碼,再運行這個程序。然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net 採用的也是這種方式。

⑩ 任何語言都需要編譯嗎

可以說是;
有種情況就是特殊的,那就是機器語言,因為計算機唯一能識別的語言就是機器語言。但是現在不會有人「聰明」到用機器語言編程的吧,所以可以不用考慮這種情況。
所以可以說任何語言都需要編譯,轉化成機器語言後電腦才能識別。只有這樣編程才有實際意義,否則任何語言都不過就是一些單詞^_^

閱讀全文

與編譯式語言每次運行都需要編譯嗎相關的資料

熱點內容
加密錢包如何交易 瀏覽:340
校長辦公室壓縮包下載 瀏覽:181
換裝app怎麼下載 瀏覽:54
京東眾包蘋果app怎麼下載 瀏覽:829
這就是手機app怎麼說韓語 瀏覽:152
python27安裝 瀏覽:505
遼寧用什麼app查詢社保 瀏覽:634
一對一付費聊天交友源碼 瀏覽:59
無所不能pdf 瀏覽:914
java從指定字元串截取 瀏覽:843
地鐵逃生伺服器已滿什麼意思 瀏覽:819
androidstudio工程名 瀏覽:432
下載高清圖片用什麼app 瀏覽:936
什麼app可以買裙子 瀏覽:591
大商創源碼210 瀏覽:291
phpwhile跳出循環 瀏覽:245
怎麼壓歲文件夾 瀏覽:889
幫人解壓的說說 瀏覽:740
登記本解壓預約流程 瀏覽:508
springboot載入配置文件源碼 瀏覽:124