編輯器與編譯器有什么區別?有什么好用的編輯器?
編輯器
編輯器的概念在360百科上是這么寫道:
編輯器時軟件程序,一般是指用來修改電腦檔案的編寫軟件,但也有人稱 PE2、HE4(漢書)……等文書軟件為編輯器。常見的編輯器有文本編輯器、網頁編輯器、源程序編輯器、圖像編輯器,聲音編輯器,視頻編輯器等。
編輯器其實就是對一個文件、一個視頻、一串數字等進行編輯或職責再次編輯的工具。在這里主要講的是代碼編輯器,它可以提供方便的開發環境,你可以用他們來編寫代碼,查看源文件和文檔等。
編譯器
編譯器的概念在百度百科上是這么寫道:
編譯器就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。

區別
總的來看,對於一門編程語言,你可以用任何一個文字編輯軟件編輯,代碼編輯器多了很多功能,如實現語法高亮等。代碼本質上都是一個不同格式的純文本,如C語言.c,c++語言的.cpp,python的.py等,這些都需要通過編譯器編譯之后才能成為目標程序。
簡單來說,編輯器是用來寫代碼的,而編譯器就是對編寫的高級語言代碼翻譯成相對低級語言的一段指令或者程序。
編輯器推薦
下面簡單的介紹幾款最常用的代碼編輯器:
Notepad++編輯器

Notepad++是是Windows操作系統下的一套文本編輯器,是時下眾多碼農所青睞的編輯器之一,最最重要的是它是免費的!
下載鏈接(點擊即可前往官網下載頁面)
Sublime Text編輯器

Sublime Text具有非常漂亮的用戶界面和強大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定,菜單和工具欄。它主要功能包括:拼寫檢查,書簽,完整的 Python API , Goto 功能,即時項目切換,多選擇,多窗口等等。它同時支持Windows、Linux、Mac OS X等操作系統。Sublime Text雖然是個收費軟件,但可以無限期使用,只是會有激活提示彈窗。
下載鏈接(點擊即可前往官網下載頁面)
源代碼文件、可執行文件、“xxx.sln”、項目文件、文本文件
源代碼文件
源代碼(source code),也稱源程序。它是指一系列人類可讀的計算機語言指令。
可執行文件
可執行文件(executable file),指的是可以由操作系統進行加載執行的文件。當然在不同的操作系統環境下,可執行程序的呈現方式不一樣。如在windows操作系統下,可執行程序可以是 .exe文件 .sys文件等類型文件。
sln文件
sln(Solution) 是在開發環境中使用的解決方案文件。通過為環境提供對項目、項目項和解決方案項在磁盤上位置的引用,可將它們組織到解決方案中。
項目文件
項目文件本質就是個容器。當我們用VS創建一個新項目時,會生成一個項目文件夾。項目文件夾還包括其它文件夾,它們用來存儲編譯及鏈接項目時所產生的輸出。
文本文件
文本文件是一種由若干行字符構成的計算機文件。文本文件存在於計算機文件系統中。通常,通過在文本文件最后一行后放置文件結束標志來指明文件的結束。
文本文件是指一種容器,而純文本是指一種內容。文本文件可以包含純文本。
一般來說,計算機文件可以分為兩類:文本文件和二進制文件。
IDE與編輯器、編譯器、調試器等有什么關系?
IDE
集成開發環境(IDE,Integrated Development Environment )是用於提供程序開發環境的應用程序,包含代碼編輯器、編譯器、調試器等工具。集成了代碼編寫功能、分析功能、編譯功能、調試功能等一系列的開發軟件服務。
我們常用的IDE有 Visual Stdio、Dev C++、Eclipse。
調試器
調試器(DeBugger)是作為軟件維護與錯誤修正的一個最重要、最直接,也是必不可少的一種機制。
關系
通過對IDE、編輯器、編譯器和調試器的定義,我們可以得出下面這個式子:
即IDE是集輯器、編譯器和調試器為一體甚至功能更強大的應用程序
在Visual Studio中,按一下ctrl+F5就可以“直接運行”.c或.cpp文件。原理是什么?中間經歷了什么步驟?實際上執行了什么命令?使用了g++、gcc這兩個命令嗎?
原理
所有的IDE本質上都是對源文件做編譯、連接接、生成可執行程序,然后進行執行而已。他實則就是對命令行編程,只不過是通過一些可視化界面和底層架構將它隱藏掉。
步驟

編譯
它包含四個階段:
- 預處理 :由預編譯得到的信息與程序其他部分一起,組成一個完整的、可以用來正式編譯的源程序
- 編譯:對源程序進行檢查,如果存在語法錯誤,則報錯;如果不存在語法錯誤,則將源程序轉換成匯編語言
- 匯編:由匯編生成的文件轉換為二進制目標文件(格式為:.obj)
- 鏈接:將目標文件與函數庫連接成一個整體,生成計算機可執行的目標程序(格式為:.exe)。
運行
將可執行文件.exe輸入到計算機,運行,得到結果。
整個執行過程中是有用到gcc和g++這兩個命令的,在編譯過程中,其實則是g++調用gcc來完成編譯步驟的1到三的。由於gcc無法完成庫的鏈接,所以編譯的步驟四則是由g++自己完成的。
g++、gcc這兩個命令有啥區別?
g++是GNU C++ Complier (c++編譯器)
gcc是GNU C Complier (c編譯器)
但並不能認為gcc只能編譯c文件,g++只能編譯cpp文件,實則兩者都可以編譯c或者cpp文件。
上述有提到,gcc無法完成庫的鏈接,所以鏈接用了g++,但不意味着編譯只能使用gcc,鏈接只能使用g++。編譯用gcc或g++都可以,而鏈接可以用g++或者gcc-lstdc++命令。
命令行編譯:
-x language filename //設定文件所使用的語言,使后綴名無效,對以后的多個有效。
例:
gcc -x cpp hello_word.pig
即可以將c++程序文件hello_world的后綴名修改成.pig。
-c filename //只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件
如:
gcc -c hello.c 他將生成.o的obj文件。
