代碼為什麼要編譯
① 編譯程序的作用
編譯程序的作用是:將高級語言源程序翻譯成目標程序。
編譯程序是一種動作,是根據編譯原理技術,由高級程序設計語言編譯器翻譯成機器語言二進制代碼行為。編譯程序是動名詞,特指生成編譯器的軟體程序。編譯程序是把用高級程序設計語言或計算機匯編語言寫的源程序,翻譯成機器語言格式目標程序的翻譯程序。
屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
編譯程序的演算法
編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。
② 用C語言編的程序,要生成可執行文件的時候,要編譯、鏈接,編譯是什麼意思啊鏈接是什麼意思編譯和鏈接
編譯就是把C代碼轉換成CPU可執行的機器指令,每個.c文件生成一個.obj文件。
鏈接就是把生成的(多個) .obj 文件及用到的庫文件(.lib)一起組合生成可執行文件(.exe)。
③ 為什麼程序的代碼只能經過編譯器編譯後才能直接運行在計算機上
因為程序代碼是面對人的,可以讓人理解讓人讀懂,但是當我們交給計算機這個「機器」的時候,就需要把工作翻譯成計算機能讀懂的語言,就是二進制的001000101這樣的信息。這樣計算機才能按照我們的指令去做
④ 求問大神 既然硬碟上儲存程序代碼已經是二進制的,為什麼不能直接執行,還需要再編譯一下呢
我的理解是:計算機能夠執行的是機器指令。程序本身雖然是以二進制文件的形式存儲在磁碟中,但是這里存儲的只是程序中字面量轉換成二進制的形式存儲。所以需要通過程序對應的編譯器將其編譯成對應的機器指令文件。而執行就是執行機器指令文件了。
#就拿java語言來說:
源文件是以**.java的文件形式存儲在磁碟中的。但是這樣的文件相當於只是將其中的文本轉換成了二進制。計算機根本不知道該如何執行。
通過Java的編譯器將其轉換成**.class文件後,class文件雖然也是二進制存儲,但是有自己的結構:魔數,副版本號,主版本號,常量池計數器,常量池,訪問標志位,類索引,父類索引等等。但是這個東西計算機不能直接執行的,需要通過Java虛擬機去執行。而Java虛擬機相當於是模擬計算機,也有個程序計數器啥的。我個人認為應該是將.class文件中的位元組碼通過jvm中的執行引擎轉換成對應的虛擬機指令。然後才能執行。而在真正執行的時候虛擬機中對應的虛擬機指令也是要轉換成對應的機器指令才能執行
⑤ java源代碼為什麼要編譯
你現在電腦里的文件是文檔文件確切的說在計算機里也是0和1的序列 但是他和執行程序不是一
個類型的文件 文件是由類型的比如說mp3 是播放聲音的 MP4是播放視屏的 TXT是文檔文件
就是存儲文檔的 在回到問題
.java文件其實就和TXT文件一樣是文檔文件是用來存儲你寫的代碼的
他是拿來給你人看的
你要想讓他變成其可執行程序的文件你就得通過編譯器編譯它
編譯器是按照你寫的代碼把他們翻譯成可執行文件的編碼方式
然後你就可以運行它了
在計算機看來所有的文件都是0和1的組合 應為文件的類型的不同它會用不同的方式解讀它們
具體的java程序。編譯。運行等等環節怎麼完成怎麼解釋 你得慢慢了解 或者有時間我在給你解釋解釋
寫的比較亂 你湊合著看吧
⑥ 為什麼要對C源程序進行編譯、鏈接
首先要說的是C語言屬於高級語言,不能直接被計算機識別而執行,所以需要一些操作來轉化。。一開始是編譯預處理,對宏,包含指令,編譯指令等進行處理,然後是詞法語法分析,將源代碼翻譯成中間代碼(一般是匯編),接著優化代碼,,然後將中間代碼翻譯成機器語言(目標文件),機器語言是計算機的基層語言,能被計算機直接識別。。接著鏈接目標文件,生成可以執行文件。。。大概就是這樣。。詳細的LZ可看這個總結。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html
⑦ java為什麼要編譯
因為java的跨平台特性,java所謂的一次編譯,到處運行,關鍵就是在於java的虛擬機,也就是jvm,jvm只認識位元組碼,所以你寫好的java代碼就需要編譯成位元組碼才能在jvm上運行。其實不只是java需要編譯,C也需要編譯,機器本身並不能認識你寫的代碼,它們只認識0、1這樣的位元組碼,所以無論是你用什麼樣的語言編寫的代碼,要想最終在物理機器上運行,都要進行編譯。
⑧ 小白求助,編譯是什麼,為什麼需要編譯
人與機器交流(即人讓計算機按照人的意願做事)依賴於語言
語言的層次是:自然語言->高級編程語言->匯編語言->機器碼
人最熟悉的肯定是自然語言(就是你平時說的話)。
而計算機的cpu只認識二進制的機器碼,機器碼指導計算機做什麼操作(如邏輯運算)。
高級編程語言跟自然語言的關系更近些,對人來說相當於自然語言的白痴版,如java中的對象與類的概念可能對應於現實世界的某種事物,如C語言中的函數可能對應了一個功能,比如列印文件,經過簡單的訓練,人也能大概的讀懂。
匯編語言和機器碼更接近些,每個匯編指令一般都會對應一條機器碼,而高級編程語言中的一個語句(如if else什麼的)可能會對應多條匯編指令,匯編指令一般就是算術運算(如add)、邏輯運算(如and)、數據傳送(如mov)、條件判斷、跳轉等,只能用這些簡單功能的匯編指令組合來完成一個復雜的功能。人看懂匯編就很吃力了,更別提用匯編來完成想要的功能,太吃力,這個過程還是交個編譯器比較好。
而機器碼對於一般的程序員來說,就是天書,也基本沒人願意去看。
自然語言最容易表述人們的要求,當用戶用自然語言表述了需要的功能後,從自然語言到高級語言的轉換過程由程序員來完成,而由高級編程語言到匯編、由匯編到機器碼的過程都由編譯器來完成,由編譯器完成的這個過程也就是編譯了。
高級編程語言的代碼經過編譯階段成為匯編代碼,匯編代碼經過匯編階段變成機器碼,機器碼文件經過鏈接階段變成可執行文件(.exe)。一般編譯是指的編譯階段和匯編階段的組合,編譯器的工作一般是編譯和鏈接。
這就是我的理解,希望你幫到你。
⑨ 涓轟粈涔堢▼搴忚佸厛緙栬瘧錛屾墠鑳借繍琛屽晩錛
褰撶紪鍐欏畬涓涓紼嬪簭鍚庯紝闇瑕侀栧厛榪涜岀紪璇戱紝鐒跺悗鍐嶈繍琛屻
濡備笅鍥炬墍紺猴紝紼嬪簭緙栧啓瀹屾瘯鍚庯紝鐐瑰嚮宸ュ叿鏍忎腑鐨凟xecute,閫夋嫨compile(緙栬瘧錛
濡傛灉娌℃湁閿欒錛屽啀閫夋嫨Execute,閫夋嫨run錛堣繍琛)
鎵╁睍璧勬枡
緙栬瘧灝辨槸鎶婇珮綰ц璦鍙樻垚璁$畻鏈哄彲浠ヨ瘑鍒鐨2榪涘埗璇璦錛岃$畻鏈哄彧璁よ瘑1鍜0錛岀紪璇戠▼搴忔妸浜轟滑鐔熸倝鐨勮璦鎹㈡垚2榪涘埗鐨勩緙栬瘧紼嬪簭鎶婁竴涓婧愮▼搴忕炕璇戞垚鐩鏍囩▼搴忕殑宸ヤ綔榪囩▼鍒嗕負浜斾釜闃舵碉細璇嶆硶鍒嗘瀽錛涜娉曞垎鏋愶紱璇涔夋鏌ュ拰涓闂翠唬鐮佺敓鎴愶紱浠g爜浼樺寲錛涚洰鏍囦唬鐮佺敓鎴愩備富瑕佹槸榪涜岃瘝娉曞垎鏋愬拰璇娉曞垎鏋愶紝鍙堢О涓烘簮紼嬪簭鍒嗘瀽錛屽垎鏋愯繃紼嬩腑鍙戠幇鏈夎娉曢敊璇錛岀粰鍑烘彁紺轟俊鎮銆
緙栬瘧璇璦鏄涓縐嶄互緙栬瘧鍣ㄦ潵瀹炵幇鐨勭紪紼嬭璦銆傚畠涓嶅儚鐩磋瘧璇璦涓鏍鳳紝鐢辮В閲婂櫒灝嗕唬鐮佷竴鍙ヤ竴鍙ヨ繍琛岋紝鑰屾槸浠ョ紪璇戝櫒錛屽厛灝嗕唬鐮佺紪璇戜負鏈哄櫒鐮侊紝鍐嶅姞浠ヨ繍琛屻傜悊璁轟笂錛屼換浣曠紪紼嬭璦閮藉彲浠ユ槸緙栬瘧寮忥紝鎴栫洿璇戝紡鐨勩傚畠浠涔嬮棿鐨勫尯鍒錛屼粎涓庣▼搴忕殑搴旂敤鏈夊叧銆
⑩ 為什麼要對源程序進行編譯處理
要不計算祥攔機不知道你寫的是什麼,計算機只認識二進制,而源程序是給編謹褲胡程人員看的。所以你要想讓計算機認識純嫌你寫的是什麼,就必須進行編譯處理。