程序編譯和運行
『壹』 編譯和運行有何區別>>>>>>>>>>>>>
編譯:
包括編譯和鏈接兩個過程。
編譯部分,是把源文件(代碼)轉換成機器可以識別的二進制語言,這個過程是針對每一個源文件的。
鏈接,是把編譯生成的二進制文件,組合成為一個系統可以執行的可執行文件。
這兩部分整體也叫編譯。也就是說,廣義的編譯,就是把代碼,轉換成可執行文件。
運行:
把編譯出來的可執行文件,在系統中運行的過程,稱為程序的運行。
打個比方,編譯就是做飯的過程,而運行,就是吃飯。二者是完全不同的概念,是計算機軟體開發的兩個步驟。
『貳』 簡要說明程序「編譯執行」與「解釋執行」的區別。
編譯執行 是把源程序編譯成 目標碼後 再執行目標碼。例如,c語言程序,必須給出完整程序,編譯器,通過幾次掃描,翻譯,編排,鏈接,變成 exe 文件 執行。編譯執行,程序執行時間短,效率高。
解釋執行,並不把整個程序 變成目標碼,而是按順序,讀一句,解釋一句,執行一句,所以,沒給完整程序,它就可以執行了。例如,瀏覽器處理網頁,網頁程序,每下來一句,就可以解釋執行一句,不用等整個網頁下來後再處理。
『叄』 java與C++程序在編譯和運行上有什麼區別
在語法層面上,C++與Java十分相似,Java語言的設計與C++有著很密切的聯系。
但卻有著許多的不同,最大的不同,可以說是編譯和運行了。
高級語言寫出來的代碼,最終都會變為機器碼,計算機才能識別。
匯編與機器碼最接近,C++與Java都會直接或間接編程匯編以後,再運行。
C++經編譯器(Unix下CC命令,Windows下CL命令)把源碼直接編譯成計算機可以認識的機器碼,如exe,dll等文件。
Java源文件都需要用javac命令將源碼編譯為class文件,但是這個class文件無法被計算機直接識別,但可以被JVM即Java虛擬機識別。
運行Java程序時,先啟動一個虛擬機,虛擬機載入class文件,方可執行。
這樣,同樣的代碼被編譯為同樣的class文件,也稱作位元組碼,在不同的平台上,運行同樣的位元組碼,這樣,Java跨平台的特性就顯示出來了!而C++則辦不到。
『肆』 代碼的編譯運行和解釋運行的區別
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
編譯程序、解釋程序、匯編程序是3種語言處理程序。其區別主要為:匯編程序(為低級服務)是將匯編語言書寫的源程序翻譯成由機器指令和其他信息組成的目標程序。解釋程序(為高級服務)直接執行源程序或源程序的內部形式,一般是讀一句源程序,翻譯一句,執行一句,不產生目標代碼,如BASIC解釋程序。編譯程序(為高級服務)是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標程序。編譯程序與解釋程序最大的區別之一在於前者生成目標代碼,而後者不生成;此外,前者產生的目標代碼的執行速度比解釋程序的執行速度要快;後者人機交互好,適於初學者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執行速度一般都是編譯執行。
解釋:程序運行時,取一條指令,將其換化為機器指令, 再執行這條機器指令。
編譯:程序運行時之前,將程序的把有代碼編譯為機器代碼,再運行這個程序。
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。
編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序,然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。
解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
簡單的說,編譯就是全文翻譯,全部翻譯完才執行。解釋就相當於同聲翻譯,邊翻譯邊執行。
解釋語言, 比如以前的Basic, 源程序是文本的, 運行時有一個解釋程序, 它把源程序讀入, 一條一條地現翻譯現執行. 這當然慢了, 因為它要現場解釋嘛. 現在網頁中的VBScript, JavaScript等也是如此.
編譯語言, 比如C或C++, 你編一段程序, 由Turbo C, VC, 或其它什麼編譯器編譯, 變成了一個可執行的程序文件 (在DOS或Windows下, 擴展名為 .EXE的), 以後運行這個編譯好的文件就成了. 因為已經翻譯好了, 所以運行時就沒有現場解釋這一步, 當然快得多了. DOS或Windows下的 EXE 文件, 都是編譯或匯編出來的.
另外注意, 是否是編譯或解釋, 與語言種類其實無關. 過去一般說Basic是解釋的, 其實它也有編譯的; 而C, Pascal一般都說是編譯的, 但我確實見到過以解釋方式執行的C和Pascal.
『伍』 怎麼編譯和運行java程序
開始-》運行-》輸入cmd回車
編譯:文件所在的文件夾目錄下執行javac XXX.java(XXX.java為源文件名)
運行:java XXX
『陸』 求教JAVA編譯與運行的區別。
編譯只是編譯成了位元組碼,就是可執行的.class文件
運行時識別,主要是java的RTTI(運行時類型識別)機制和反射機制,而兩者之間的區別在於:
」對RTTI來說,編譯器在編譯期打開和檢查.class文件。(換句話說,我們可以用「普通」的方式調用一個對象的所有方法。),而對於反射機制來說,.class文件在編譯期是不可獲取的,所以是在運行期打開和檢查.class文件。「
但是同樣的,反射也需要載入這個類的Class對象,所以那個類的class對象對於jvm必須是可取的的,比如在本地機器上,或者通過網路取得,比如取得一串位元組串。
具體的內容可以參考《Thinking in java》的」類型識別「那一章,講的比較詳細的
『柒』 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼
Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制
『捌』 計算機上程序編譯運行分別是什麼符號
意思和區別如下:
1、編譯:依賴於編譯器,英文是compile, vc中這一過程是將源代碼轉換成目標文件,如.obj文件,.rc文件等。
2、生成:指的是鏈接的過程,英文是build.依賴於鏈接器. vc中在這一階段將所有的目標文件和所有需要用到的組件組合成一個整體,例如需要生成的是windows系統下的PE可執行文件,鏈接器會依照特定格式將目標文件組合,最後生成PE格式的.exe或.dll文件。
3、調試:是所有或部分代碼編寫完成後,讓程序在調試器中運行,用這種手段對程序進行分析,找出並修正潛在問題。
4、運行:就是讓程序在系統中運行。
『玖』 如何編譯並運行C語言程序
1、創建一個文件名為main.c,然後用任意一個款你熟悉的文本編輯軟體,比如說記事本,在裡面輸入下面的代碼,記住,要用文本文件編輯軟體,不能用word的。
(9)程序編譯和運行擴展閱讀:
c語言小游戲實現原理
1、二維數組實現棋盤
二維數組,用兩個for 循環,隨便輸出一個固定符號做棋盤,如 *
2、判定玩家
設計一個計步變數step, 每走一步 step++, 則玩家=step%2+1;
3、判定輸贏(重點)
設計方向數組 dircX[4] ,dircY[4],因為如果要判斷是否練成五子,只有1豎著2橫著3斜下4斜上
豎著的話就是 x-1,y不變
橫著的話就是x不變,y+1; 斜下: x+1,y+1; 斜上 x-1;y+1
這樣你就可以賦值dircX={-1,0,1,-1} dercY={0,1,1,1}
每當玩家落下一子,就全局判斷每個子的四個方向有沒有第二子,如果有,循環判斷有沒有第三子(利用 x+=dircX[1]),直到五子完成,結束。
『拾』 簡述JAVA程序的編輯編譯和運行過程
第一步(編譯): 創建完源文件之後,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然後引用,否則直接引用,這個有點象make。
如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報「cant find symbol」的錯誤。
第二步(運行):java類運行的過程大概可分為兩個過程:1、類的載入 2、類的執行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去載入該類。也就是說,JVM並不是在一開始就把一個程序就所有的類都載入到內存中,而是到不得不用的時候才把它載入進來,而且只載入一次。
特別說明:java類中所有public和protected的實例方法都採用動態綁定機制,所有私有方法、靜態方法、構造器及初始化方法<clinit>都是採用靜態綁定機制。而使用動態綁定機制的時候會用到方法表,靜態綁定時並不會用到。
(10)程序編譯和運行擴展閱讀:
Java整個編譯以及運行的過程相當繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。
Java代碼編譯:是由Java源碼編譯器來完成;
Java位元組碼的執行:是由JVM執行引擎來完成
Java程序從源文件創建到程序運行要經過兩大步驟:
1、源文件由編譯器編譯成位元組碼(ByteCode)
2、位元組碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。