最近我所在的組織在招新囊拜,鑒于某些學(xué)計(jì)算機(jī)的同學(xué)到了大三仍然理不清IDE俱恶,編譯器兔港,編輯器這三者的區(qū)別庸毫,我特地出了一道題,讓從沒(méi)有接觸編程的萌新們?nèi)サ骄W(wǎng)上查資料衫樊,弄清這三者的區(qū)別飒赃。但是,根據(jù)我的小范圍調(diào)查科侈,發(fā)現(xiàn)網(wǎng)上檢索到的信息良莠不齊载佳,文章相互矛盾,作者自己都分不清什么是什么臀栈,所以準(zhǔn)備寫(xiě)個(gè)掃盲貼蔫慧,幫助萌新分清這三者。而且挂脑,也希望萌新們抓緊提升自己藕漱,增強(qiáng)分辨信息優(yōu)劣的能力欲侮。
名詞解釋
- 編譯器
計(jì)算機(jī)執(zhí)行的程序,都是由0和1組成的二進(jìn)制文件肋联。當(dāng)程序不是很復(fù)雜威蕉,計(jì)算機(jī)也不是很復(fù)雜的時(shí)候,可以直接輸入二進(jìn)制橄仍,也就是機(jī)器語(yǔ)言韧涨,然后讓計(jì)算機(jī)執(zhí)行。但是侮繁,當(dāng)程序逐漸變得復(fù)雜虑粥,計(jì)算機(jī)也逐漸變得復(fù)雜的時(shí)候,直接輸入二進(jìn)制就不現(xiàn)實(shí)宪哩。所以娩贷,這就促成了高級(jí)編程語(yǔ)言的出現(xiàn)。
有了高級(jí)語(yǔ)言锁孟,又面臨一個(gè)問(wèn)題:用高級(jí)編程語(yǔ)言寫(xiě)的程序其實(shí)就是文本文件彬祖,計(jì)算機(jī)根本不認(rèn)識(shí)。于是品抽,就出現(xiàn)了高級(jí)編程語(yǔ)言到機(jī)器語(yǔ)言的翻譯官——編譯器储笑。編譯器把C語(yǔ)言這類(lèi)的高級(jí)編程語(yǔ)言翻譯成計(jì)算機(jī)能夠認(rèn)識(shí)的機(jī)器碼,就可以把生成的二進(jìn)制程序交給計(jì)算機(jī)圆恤,讓計(jì)算機(jī)來(lái)執(zhí)行突倍。
我們都知道,編譯器也是程序盆昙。這就又產(chǎn)生了一個(gè)問(wèn)題:現(xiàn)在的C語(yǔ)言編譯器都是C語(yǔ)言寫(xiě)的羽历,那到底是先有語(yǔ)言還是先有編譯器?這就是典型的雞生蛋弱左,蛋生雞問(wèn)題窄陡。其實(shí),當(dāng)語(yǔ)言設(shè)計(jì)者在設(shè)計(jì)出語(yǔ)言A之后拆火,會(huì)用其他語(yǔ)言B寫(xiě)出第一個(gè)A1編譯器跳夭,再用這個(gè)A1編譯器去編譯用A語(yǔ)言寫(xiě)的A2編譯器,這就有了用A語(yǔ)言實(shí)現(xiàn)的A編譯器们镜。拿C語(yǔ)言舉例币叹,第一個(gè)C語(yǔ)言編譯器是用匯編寫(xiě)的,然后編譯出用C語(yǔ)言實(shí)現(xiàn)的C編譯器模狭。這個(gè)過(guò)程颈抚,就叫編譯器的自舉。 - 編輯器
這個(gè)名詞最好解釋?zhuān)^的編輯器就是編輯文本文件的程序,所以也叫文本編輯器》泛海現(xiàn)在驱富,市面上也有一些編輯器能夠直接編輯二進(jìn)制文件,我們叫它們二進(jìn)制文件編輯器匹舞。 - 集成開(kāi)發(fā)環(huán)境(IDE)
從集成這個(gè)詞我們就可以看出這個(gè)東西的含義褐鸥。這個(gè)東西就是把編譯器,編輯器赐稽,調(diào)試器叫榕,甚至包括構(gòu)建工具,代碼補(bǔ)全姊舵、檢查晰绎、分析工具等等軟件開(kāi)發(fā)過(guò)程中用到的工具集成到一起形成的龐大的軟件系統(tǒng)。給開(kāi)發(fā)者提供一種開(kāi)箱即用的工具集括丁,免去了自己配置相關(guān)環(huán)境的麻煩荞下。
舉例(針對(duì)C語(yǔ)言)
- 常見(jiàn)的編譯器
- GNU基金會(huì)的gcc,這是Linux系統(tǒng)中最常用的C語(yǔ)言編譯器史飞。
- 蘋(píng)果公司贊助的锄弱,以LLVM為后端的clang,它是一個(gè)C語(yǔ)言編譯器的前端祸憋,和LLVM一起作為蘋(píng)果macOS系統(tǒng)的默認(rèn)編譯器,擁有極其優(yōu)秀的代碼錯(cuò)誤提示肖卧。
- 微軟公司開(kāi)發(fā)的MSVC蚯窥,作為微軟自家的IDE——visual studio的編譯器。安裝了vs的同學(xué)可以到vs的安裝目錄下的VC文件夾的bin文件夾中找到cl.exe塞帐,這個(gè)就是包裝了MSVC編譯器的外殼拦赠,它會(huì)調(diào)用一些動(dòng)態(tài)鏈接庫(kù)來(lái)完成編譯工作。
- 常見(jiàn)的編輯器
- vim:一款廣泛使用的編輯器葵姥,基于命令行荷鼠,也有相應(yīng)的GUI版本
- emacs:由GNU開(kāi)發(fā)的另一款被廣泛使用的編輯器,也是有命令行和GUI兩種
- Sublime Text:跨平臺(tái)編輯器榔幸,擁有各種強(qiáng)大的插件允乐,只有GUI版本
- 常見(jiàn)的IDE
- Visual C++:Visual Studio的C++IDE子集,跟VS一起安裝削咆。擁有強(qiáng)大的調(diào)試牍疏,代碼分析等功能,是我認(rèn)為宇宙最強(qiáng)沒(méi)有之一的C++IDE拨齐。
- Clion:jetbrains公司用java開(kāi)發(fā)的跨平臺(tái)C/C++IDE鳞陨,是一款很有潛力的優(yōu)秀IDE,其代碼補(bǔ)全能力超過(guò)VS瞻惋。
- Eclipse:由Eclipse基金會(huì)維護(hù)的一款用java開(kāi)發(fā)的跨平臺(tái)IDE厦滤,通過(guò)添加相關(guān)插件可以成為相關(guān)語(yǔ)言的IDE援岩。
- CodeBlocks、DEVC++等:都是一些比較輕量的C/C++IDE掏导,功能相對(duì)較少享怀,適合配置較低的機(jī)器,或者快速搭建簡(jiǎn)單的開(kāi)發(fā)環(huán)境碘菜。
ps:文中涉及到一些專(zhuān)業(yè)的名詞凹蜈,對(duì)整體的理解不會(huì)造成太大影響,如果有興趣可以自己去查找相關(guān)資料忍啸,增強(qiáng)自己的獲取信息的能力仰坦。