『壹』 運行java程序時,為什麼要先編譯再運行,編譯運行一起進行不行嗎
java講究的是 一次編譯 處處運行,也就是提高了程序的一致性。java的程序之所在不同的操作系統上的運行結果是一樣的,是因為java虛擬機。
所以要運行java都要裝一個叫jdk的東西,裡面有java的虛擬機。這個虛擬機就是來解釋我們寫的代碼。通過這個虛擬機,就實現了代碼的移植。
我們寫好的程序,通過虛擬機,編譯成class文件,然後在運行。但是我們只需要編譯一次即可。
『貳』 為什麼要編譯
在匯編語言之後,上世紀50年代,科學家有發明了好幾種用人類語言書寫程序的方法,被稱為計算機高級語言。如PASCAL語言、BASIC語言、C語言等。高級語言源程序都可以用記事本(Notepad)打開和編輯。高級語言源程序也要經過翻譯才能被計算機接受。把高級語言翻譯成機器語言的方法大體有兩種,一種被稱作「解釋」,如GWBASIC、BASIC、QBASIC等語言,這種方式下,源程序被翻譯出一個完整的操作步驟,計算機就作出相應反應,執行一步,再翻譯再執行,逐步達到源程序制定目標。另一種方式被稱作「編譯」,如PASCAL語言和C語言等,這種方式下,計算機把源程序全部翻譯成它自身能讀懂的、被稱作目標程序的機器語言程序,然後再一次執行。二者的區別在於編譯程序能產生目標程序而解釋程序則不能產生目標程序。用高級程序設計語言編寫的程序,要轉換成等價的可執行程序,必須經過編譯和連接。同樣一段高級語言程序通過不同的編譯器可能產生不同的可執行程序。計算機不能直接執行符號化的程序,而是通過匯編程序、解釋程序和編譯程序而將符號程序轉換為可執行程序。高級語言需要編譯成目標代碼或通過解釋器解釋後才能被CPU執行。
『叄』 為什麼高級程序語言需要編譯程序
計算機語言是人與計算機之間交流的媒介,其種類非常多,但大體上分為機器語言、匯編語言、高級語言三大類。
計算機不能直接理解高級語言,只能直接理解機器語言,因此必須將高級語言翻譯成機器語言,翻譯的過程分為兩種,一種是解釋,一種是編譯。兩種方式的區別在於翻譯的時間,編譯是在程序運行之前,需要一個專門的過程,將程序編譯成為機器語言的文件,比如EXE文件,以後要運行的話就不用再重新編譯了,直接使用之前的編譯結果就行了,因為只翻譯一次,運行時不需要再翻譯,所以編譯型語言的程序執行效率高。
解釋性語言則不同,解釋性語言不需要編譯,其程序在運行時才翻譯,每個語句都是執行時才翻譯。這樣解釋性語言每執行一次就要翻譯一次,其執行效率則相對較低。
另外,編譯型語言以二進制形式保存,源代碼不可見;解釋性語言以代碼形式保存。
『肆』 c程序寫好要編譯和綜合是啥意思
書寫出來的是源程序,也就是.c和.h文件。 肉眼可讀。
最終運行的是可執行文件,也就是二進制文件。 windows上是.exe文件。
從源文件到可執行文件要經過編譯和鏈接,你說的綜合應該就是鏈接。
編譯是每個.c文件編譯成對應的目標文件(.o, .obj, .tco這類的,不同工具擴展名有所不同)
鏈接是把這些目標文件整合成可執行文件。
『伍』 編寫的程序一定要有編譯器才能運行嗎
不用,編譯器只是有負責將編譯語言翻譯為機器語言的作用,編譯後的程序就是機器語言了。可以直接在計算機上運行
『陸』 為什麼c/c++開源庫使用前需要編譯
這樣可以運行,但有兩個問題:
每個新程序要使用開源庫中的api,都需要重新編譯部分甚至整個開源庫源代碼,這會浪費大量的時間;
如果有多個程序同時使用同一個庫,每個程序都將生成一份這個庫的二進制文件,這會浪費大量的磁碟空間;當這些程序同時運行時,每個程序的內存中都會裝載一份庫的二進制代碼,這會浪費大量的內存空間。
因此,直接將第三方庫的源代碼包含到當前程序的代碼中編譯是效率非常低下的方式,實際中除非極特殊情況,不會考慮使用這種方式,而是將開源庫源代碼編譯成二進制的動態鏈接庫,其他程序要使用其中的API時,只需要指定動態鏈接庫的入口點,程序運行時載入動態鏈接庫 並找到其中的函數入口點就可以調用開源庫API。並且,當有多個程序調用此動態鏈接庫時,只會佔用一份內存空間。
『柒』 為什麼每次運行程序之前,VS都要先編譯的解決方法
這是因為程序運行過快的原因,程序運行結果就會顯示後立即消失。解決方法:加一個輸入函數。
『捌』 想要編程就必須要有編程軟體
一、如其他回答者所言,如果是用腳本語言寫代碼,確實不需要專業的編程軟體,比如:
用Windows8/8.1/10自帶的PowerShell 2.0編寫程序,或用記事本寫好後更改文件名後綴;
用Windows自帶的cmd終端編寫批處理文件(.bat),或用記事本寫好後將文件名後綴.txt改為cmd;
用Windows自帶的記事本編寫Html(即網頁腳本語言),寫好後將文件名後綴.txt改為htm或html,用瀏覽器就能看到代碼執行的結果;
二、即使是編程軟體,也有代碼編輯器和編譯器之分,比如:
上面所講的腳本語言,雖然常被視為編程,但和編程語言不同。編程語言的編程軟體分編輯器與編譯器。編輯器的功能與記事本類似,可以與word文檔類比;編譯器能編譯並執行程序代碼。編輯器有sublime text,notepad++,Visual Studio Code等,一般而言能寫眾多編程語言(功能上:提供代碼關鍵字高亮乃至簡單debug)。
所以,如果你要寫程序並看到代碼被執行的狀況,請安裝帶編譯器的編程軟體(編輯器也能掛編譯器),比如C/C++語言的Dev-C++(自帶GCC編譯器)、Python語言的Python3或Python2,Java語言的eclipse,Visual Basic 的Visual Basic 6.0等。相信大多數初學者需要的就是帶編譯器的編程軟體。
那編輯器用來幹啥?寫代碼但不需要執行。編程有個目標是編譯導出exe、dll等目標文件,這跟如.c、.cpp後綴的代碼源文件不一樣。而編譯器能夠弄出exe這些程序。
有了編譯器,你就能夠根據代碼執行的情況進行修改、調試debug。
三、編譯器是編程軟體的內核,一種編程軟體可以掛多種編譯器,比如可以寫C語言的codeblocks能掛VC++的編譯器、GCC編譯器等等。
『玖』 為什麼要對源程序進行編譯處理
要不計算機不知道你寫的是什麼,計算機只認識二進制,而源程序是給編程人員看的。所以你要想讓計算機認識你寫的是什麼,就必須進行編譯處理。
『拾』 為什麼程序的代碼只能經過編譯器編譯後才能直接運行在計算機上
因為程序代碼是面對人的,可以讓人理解讓人讀懂,但是當我們交給計算機這個「機器」的時候,就需要把工作翻譯成計算機能讀懂的語言,就是二進制的001000101這樣的信息。這樣計算機才能按照我們的指令去做