都需要編譯後在執行
❶ 突然想知道,為什麼有的語言需要編譯之後運行,而有的語言則不需要呢 C, ruby 請分析謝謝!
我們用的大部分程序設計語言都是高級語言,高級語言要執行,必須要先變成計算機能識別的匯編語言.將高級語言變成匯編語言的過程叫做翻譯,目前有兩種形式的翻譯方法,一種是編譯,一種是解釋.C就屬於編譯方式,執行前一定先編譯一次.而B語言就是解釋方式,解釋一條執行一條,所以執行先不需要編譯一下.
❷ 請教什麼是「解釋執行」,什麼是「編譯後執行」:
解釋執行就是把你的程序一句一句的執行。
編譯執行是這個開放環境(也可以說是這個語言)它自帶了一個編譯器。編寫好的代碼首先被編譯程匯編語言或者是機器語言,然後執行。多用在高級語言上。
所以解釋執行一般比編譯執行效率高。
沒有說反。語言越低級,越靠近機器,執行效率就會越高。
❸ php代碼是否能夠進行編譯後再執行呀
php無需編譯,可以邊寫邊運行。調試比較方便。需要安裝web伺服器和php。必須通過訪問自己創建的站點執行。
apache+php可以。不過你如果用的是windows而且已經安裝了IIS的話直接安裝php並做好相關設置就可以了。
❹ 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語言編寫好代碼後,怎麼編譯,最後生成可執行文件
材料/工具:vc6.0
1、打開c語言編輯工具,在工具中寫入程序的源代碼。
❻ c語言中的源程序必須經過編譯連接生成可執行程序才能運行,這句話是對不對
哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而c語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。
❼ C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(7)都需要編譯後在執行擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
❽ c語言為何需要編譯和連接才能運行
的文件(也稱為源代碼)而已,需要經過1定的處理才能轉換成機器上可運行的可履行文件。
我們將對C語言的這類處理進程稱為編譯與鏈接。
❾ 運行java程序時,為什麼要先編譯再運行,編譯運行一起進行不行嗎
java講究的是 一次編譯 處處運行,也就是提高了程序的一致性。java的程序之所在不同的操作系統上的運行結果是一樣的,是因為java虛擬機。
所以要運行java都要裝一個叫jdk的東西,裡面有java的虛擬機。這個虛擬機就是來解釋我們寫的代碼。通過這個虛擬機,就實現了代碼的移植。
我們寫好的程序,通過虛擬機,編譯成class文件,然後在運行。但是我們只需要編譯一次即可。
❿ 執行C語言一定要先編譯么,不可以直接執行么
一般來說編譯過後就成了基本上能執行的2進制代碼。但是這些2進制代碼並不完善,一個程序往往需要調用不止一部分的代碼,所以需要把這些代碼全部整合起來才能執行。
即時你的程序看起來只有一個文件,但是編譯過後,多多少少裡面至少會調用到一些操作系統功能,和其它的一些設置,所以依然需要組建這個過程把這個程序和這些系統默認的代碼組建起來形成一個完成、單一的可執行文件。所以一般組建過程就包含了組建內部和外部代碼,一般來說內部代碼就是我說的系統預留的必要的一些代碼(例如怎麼具體完成把一些字元顯示在屏幕上呀這些功能),而外部代碼就是額外的調用自己寫得或者別人寫得其它程序功能(往往當你的程序調用了非c標准函數的時候)。
所以就算你的代碼可以編譯,但是可能因為組建並不成功(例如需要組建的代碼本身有bug,或者丟失,或者版本不匹配),你的程序依然可能無法正確運行。