代碼通過編譯的一瞬間有多爽
❶ 用IDEA寫代碼究竟有多爽
這是我一直都想寫的一個問題,真的,下面我就來說說我在使用中的一些爽點吧!
alt+1直到alt+9,快速的打開常用的條目,支持很多工具,比如資料庫連接工具,又比如git的版本控制,當然,原生的用的不爽可以自己改鍵位。
內置各種工具,最實用的列舉一下:ssh連接工具、restful client 、database等等。當然你可以說他是萬金油,我並不介意,因為它省去了讓我在各種的工具間切換的時間,重要的是這些都是自帶的,有莫有!
把IDEA能夠進行的操作都化作一個action,也就是你只要ctrl+shift+a打開action的窗口,然後用你熟知的一些英語單詞去搜索,比如GIt,你會看到驚喜的。相信我。你在這里可以試一下你想要的所有供能,當然快捷鍵也會列舉出來。
ctrl+w選中當前的語法結構,再按選中更上一層的語法結構,寫代碼的時候簡直6的飛起!當然ctrl+shift+w對應的是回退選中。也是按照語法結構的層級步步回退。
可以勾選代碼編輯區域同項目區域同步,從此再也不擔心找不到文件了。操作方法如下:
❷ 學過編譯原理的人看c\c++跟沒學過的人比起來,有什麼長處
一般來講...沒學過C\C++就跟編程文盲差不多...C\C++是基礎,在這之上才能看很多.包括數據結構和演算法(用匯編實在難以描述),或者學習其他編程語言.
讓我難以理解的是,學習編譯原理應該需要學習數據結構,但是樓主又沒有學過C\C++,又是怎麼學會數據結構進而理解編譯原理??我很納悶....樓主有無寫過一個簡單的編譯器?純匯編是很難寫編譯器的,在編譯器的詞法分析,語法分析,語義分析,中間代碼等都基本用C\C++寫,只有當要生成特定的CPU匯編指令的時候需要用匯編語言.
學習操作系統基本不需要過多編譯原理的知識,只需要 匯編+C語言+數據結構和演算法基礎,基本就可以了.
附加一段:樓主好像對編譯原理的理解有所偏差.編譯原理主要是講解編譯器的構造,而匯編語言應該屬於一種編程語言,和C\C++一樣可以應用於很多場合.編譯器原理就是如何把高級語言轉換為低級語言的過程.
一般操作系統使用 匯編語言+C語言寫成.(以下是Intel IA-32平台機器的一般開機過程)在計算機啟動時,操作系統從匯編代碼開始運行,因為這時處於實模式狀態,也沒有操作系統,因此首先啟動BIOS程序,然後CPU通過編譯好的匯編代碼從實模式轉入保護模式.接著逐步把PC的控制權交給操作系統內核,當內核啟動後,由於有了操作系統的支持,此時的機器就可以通過高級語言編譯好的代碼(比如C語言)來管理PC的所有資源.因此,學習操作系統必須有匯編語言和C語言基礎.不然例如進程調度和控制等這種核心問題是不可能看的懂的.
❸ 編譯後的程序比邊解釋邊執行的程序的運行速度快嗎為什麼
程序的編譯是指將人可以理解的代碼(如C的源代碼)段編譯成機器指令碼(二級制指令),也就是處理堆棧、處理器、匯流排的指令,交由計算機自動執行。解釋型語言是在需要執行時臨時編譯運行,執行時多了編譯的過程,自然就要慢的多了。
比較特殊的是java,javac命令編譯的結果雖然也是二進制文件,但實際也不是機器指令,而是優化後的代碼,最後的執行是通過java虛擬機再次編譯後執行。所以效率介於編譯型和解釋型之間。
目前java的執行速度已經有了大幅度的提升,但要想趕上或超越C 或者匯編,理論上是不現實的。
❹ c++幾行的代碼寫了個小程序,編譯後竟然460多K~
1. 如果你用的VC IDE,先選Release再編譯試試。
默認的Debug會附帶很多額外內容的。Release編譯出來的文件會小很多。
2. 如果新建項目時你選了MFC之類的就沒什麼可說的。那個庫本來就那麼大。
----------------------------------
Dev C++
在Project屬性裡面,去掉所有debug相關的編譯選項。
❺ C語言編輯編譯連接的作用是什麼
C語言編輯的作用是檢查語法,製作C語言的源文件和頭文件,生成匯編代碼。
C語言編輯的作用是將匯編代碼轉換機器碼。在這一步中,會對文件內部的語法語義做處理,如果編譯出錯,無法進行後續動作。
C語言鏈接的作用是將機器碼鏈接到一起生成可執行程序。這一步會對文件之間的關聯做檢查,如果出錯,將不會生成可執行程序,也就無法執行。
(5)代碼通過編譯的一瞬間有多爽擴展閱讀:
C語言鏈接時,將源文件中用到的庫函數與匯編生成的目標文件.o合並生成可執行文件。該可執行文件會變大很多,一般是調用自己電腦上的靜態庫。
靜態庫和應用程序編譯在一起,在任何情況下都能運行,而動態庫是動態鏈接,文件生效時才會調用。很多代碼編譯通過,鏈接失敗就極有可能在靜態庫和動態庫這出現了紕漏,要視情況解決。缺少相關所需文件,就會鏈接報錯。這個時候就要檢查下本地的鏈接庫是不是缺損。
❻ 我寫了個java代碼,編譯沒有問題,但是執行的時候就出了一堆亂七八糟的代碼,這是怎麼回事
原因是你編譯使用的javac,把代碼編譯成版本61的class,而你的運行環境java,是一個老版本,能執行的上限是52版本。
解決方法有兩個:
1,安裝和JDK相同版本的Java運行時(JRE),並正確設置PATH變數。驗證方法是:
在黑窗口裡分別輸入java -version和javac -version,兩個版本要一致,或者java的版本更高。
相關命令截圖如下:
❼ 高級語言經過編譯器之後的處理
假設你的程序有兩種源代碼,一種是C語言寫的,一種是java寫的,現在要發布到這幾個平台上:
1、Windows 7/xp/vista...
2、Linux RedHat/Fedora/Unbutu...
3、Symbian S60/S50(手機)
那麼源程序如果是C語言的,需要找下面的工具:
1、VC60/VS2008,負責編譯生成VISTA/XP/WIN7用的.exe文件
2、G++,負責編譯生成Linux用的可執行程序
3、Symbian用的C++編譯器,不說也罷
如果源程序是JAVA語言的,那麼需要做的僅僅是用javac編譯、jar打包,然後:
1、確保目標WIN7/XP/VISTA安裝了java虛擬機
2、確保目標LINUX安裝了java虛擬機
3、確保目標手機Symbian系統已安裝了支持同版本的java虛擬機
看明白沒有?C語言編譯器是直接把源程序一步翻譯為目標計算機(16位,32位,64位)的指定晶元(X86或ALPHA PPC,RISC)、指定操作系統(WINDOWS,DOS,LINUX,SYMBIAN)用的特定可執行程序目標碼,
而JAVA編譯器是把程序翻譯為中間碼,由虛擬機將中間碼解釋為最終的指定晶元、指定操作系統的可執行程序目標碼
嚴格來說,C和C++、JAVA都是跨平台的,但C#肯定不是,至少目前還沒有人在LINUX上做C#的實現。
不同的是,C和C++是通過不同平台上的不同編譯器實現跨平台
JAVA是通過不同平台的不同虛擬機實現跨平台
這樣說你看懂了沒有?
❽ 編譯一段代碼的速度和CPU的線程核心和代碼的速度有關嗎如果編譯一個QQ大小的代碼需要多長時間啊
1cpu的速度跟核心數量有關嗎?是否數量越多就越快呢?只有在同一家族的CPU中進行比較,核心數量、主頻與CPU的運行速度才有正比關系,還有影響的因素是2、3級緩存的大小。核心版本和工藝的升級也有影響。一般在同一家族的CPU中,核心越多、主頻越高、緩存越多、版本越新的CPU越快。比如AMDAthlonIIX2250肯定要比AMDAthlonIIX2240要快,但是不是也一定強於主頻、緩存、核心數都與X2240差不多的IntelPentiumE6300呢?那就不能武斷的說了。需要用各種測試軟體去驗證。2同核心數目,同主頻,同二級緩存哪個快?主板配cpu是看針腳和前端匯流排,和cpu的二級緩存無關,865的主板如果是478介面的,那就支持P42.8E和P43.2C,何況主板和cpu前端匯流排都是800mhz,完美支持兩個比當然是P43.2C好了,雖然P42.8e是1024的二級緩存,但核心是Prescott內核,和A的核心一樣,發熱量大,功耗高,而C的核心是NORTHWOOD核心,比Prescott好
❾ 簡述將源程序編譯成可執行程序的過程
一個源程序到一個可執行程序的過程:預編譯、編譯、匯編、鏈接。其中,編譯是主要部分,其中又分為六個部分:詞法分析、語法分析、語義分析、中間代碼生成、目標代碼生成和優化。
預編譯:主要處理源代碼文件中的以「#」開頭的預編譯指令。處理規則如下:
1、刪除所有的#define,展開所有的宏定義。
2、處理所有的條件預編譯指令,如「#if」、「#endif」、「#ifdef」、「#elif」和「#else」。
3、處理「#include」預編譯指令,將文件內容替換到它的位置,這個過程是遞歸進行的,文件中包含其他文件。
4、刪除所有的注釋,「//」和「/**/」。
5、保留所有的#pragma 編譯器指令,編譯器需要用到他們,如:#pragma once 是為了防止有文件被重復引用。
6、添加行號和文件標識,便於編譯時編譯器產生調試用的行號信息,和編譯時產生編譯錯誤或警告是能夠顯示行號。
(9)代碼通過編譯的一瞬間有多爽擴展閱讀:
編譯過程中語法分析器只是完成了對表達式語法層面的分析,語義分析器則對表達式是否有意義進行判斷,其分析的語義是靜態語義——在編譯期能分期的語義,相對應的動態語義是在運行期才能確定的語義。
其中,靜態語義通常包括:聲明和類型的匹配,類型的轉換,那麼語義分析就會對這些方面進行檢查,例如將一個int型賦值給int*型時,語義分析程序會發現這個類型不匹配,編譯器就會報錯。