西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識(shí) → Emacs作為IDE編程環(huán)境的不足

Emacs作為IDE編程環(huán)境的不足

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:Ricepig時(shí)間:2011/3/17 11:36:39字體大。A-A+

作者:佚名點(diǎn)擊:1039次評(píng)論:0次標(biāo)簽: Emacs vs

​XY蘋果助手mac版v2.5.19.3835 官方最新版
  • 類型:Mac其他軟件大。63.9M語言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載
寫了一段時(shí)間的程序,感受過各種編程環(huán)境,也數(shù)次學(xué)習(xí)Emacs(或者Vi)并期望這兩者能搞定大部分事情。不過,最后還是發(fā)現(xiàn)術(shù)業(yè)有專攻,作為編程環(huán)境的時(shí)候,某些情景這哥倆還真的不怎么適合,姑且稱為不足吧,記錄在這里。

這里馬上想說的是,我不是Emacs和Vi的粉絲,但是很喜歡兩者的某些設(shè)計(jì)和功能。努力學(xué)習(xí)過他們,在生產(chǎn)環(huán)境中也經(jīng)常用到,但并不精通。如果有我不知道或者說錯(cuò)的地方,敬請(qǐng)批評(píng)指正。另外,這貼無意于討論IDE還是Notepad寫程序誰更高明的問題。

1、項(xiàng)目的組織方式

Emacs首先是作為編輯器而存在而出名(我想Vi也一樣),在不用插件時(shí),它面向的是單個(gè)文件,若考慮split和tab方式,則是面向多個(gè)單獨(dú)的文件。當(dāng)使用了某些插件以后,它可以“看到”并“管理”目錄樹,部分變成了面向目錄的管理方式。無論是面向文件的還是面向目錄樹的,Emacs都首先致力于對(duì)于單個(gè)文件內(nèi)部編輯功能的強(qiáng)大。項(xiàng)目所用到文件之間的關(guān)聯(lián),在編譯之前關(guān)聯(lián)是松散的——Emacs把它們當(dāng)做單獨(dú)的一個(gè)一個(gè)文件,至多是以文件系統(tǒng)的目錄樹結(jié)構(gòu)組織。這有的時(shí)候很好,確實(shí)符合KISS和工具高內(nèi)聚低耦合的思路:通過文件系統(tǒng)組織項(xiàng)目,通過shell直接實(shí)現(xiàn)文件的操作以實(shí)現(xiàn)項(xiàng)目的管理。而現(xiàn)代的IDE基本都是面對(duì)“項(xiàng)目”這個(gè)概念。Emacs這種面向文件的方式,相對(duì)就有些不足::

調(diào)整項(xiàng)目的目錄結(jié)構(gòu),Emacs靠的是命令,文件一多效率就可想而知;(不過這一點(diǎn)是典型的鼠標(biāo)操作優(yōu)勢(shì)項(xiàng)目,有點(diǎn)作弊的嫌疑)
依據(jù)當(dāng)前符號(hào)在項(xiàng)目內(nèi)跳轉(zhuǎn),比如點(diǎn)擊函數(shù)定義,直接跳轉(zhuǎn)到函數(shù)體,Emacs對(duì)C還支持,對(duì)其他語言就。。。;
查找類的繼承結(jié)構(gòu)時(shí),IDE會(huì)在項(xiàng)目中找到相應(yīng)的符號(hào)并跳轉(zhuǎn)。Emacs并沒有“項(xiàng)目”這個(gè)視野,跳轉(zhuǎn)或者類的繼承結(jié)構(gòu)有可能不完整;
項(xiàng)目文件數(shù)目和種類都較多,并且分布在不同目錄中時(shí)。這種情況下IDE一般會(huì)把文件按類型分門別類列好,也就是說,導(dǎo)航欄強(qiáng)大的多;
IDE會(huì)根據(jù)對(duì)項(xiàng)目的操作(添加文件、刪除文件、改名、改目錄)自動(dòng)變更項(xiàng)目文件或者Build腳本,而Emacs需要在做了這些變更以后,再慢慢到腳本里找到相應(yīng)位置進(jìn)行更行;
想象一個(gè)極端場(chǎng)景吧,一個(gè)項(xiàng)目擁有100個(gè)文件,其中80個(gè)代碼文件,放在一個(gè)目錄中(敘述簡(jiǎn)單起見)。由于重構(gòu)的需要,我們需要調(diào)整目錄結(jié)構(gòu),根據(jù)命名空間將他們分門別類放進(jìn)相應(yīng)的目錄,這些文件有若干個(gè)類,有幾個(gè)類方法很多,參數(shù)復(fù)雜,類繼承系統(tǒng)也超過3層。這種場(chǎng)景現(xiàn)代IDE相對(duì)能較快速的解決問題,這個(gè)時(shí)候Emacs搞不好還在來回翻查目錄移動(dòng)源代碼或者是同步Build腳本。

尤其是現(xiàn)在大家都在寫著“膠水”代碼,更注重“結(jié)構(gòu)”而不會(huì)在一個(gè)文件中死磕很久(我相信做算法的牛人或許不是這樣),Emacs的優(yōu)勢(shì)在弱化,而對(duì)于項(xiàng)目管理的劣勢(shì)就更明顯。前兩天還看了篇文章說程序員真正在“寫”程序的時(shí)間不會(huì)超過50%呢。

2、缺失的功能和黑客的插件

Emacs和Vi本身在文字處理方面的功能非常強(qiáng)大(低耦合高內(nèi)聚嘛),由于某些非文字編輯功能的缺失而且系統(tǒng)又比較開放,各種插件層出不窮。可以說,沒這些插件真就沒有Emacs作作為編程環(huán)境的今天(其實(shí)裸奔Emacs對(duì)編程支持得還算友好啦,Vi裸奔基本什么都沒有么),什么Colortheme,numberline,etags,CEDET,cscope等等等等的插件大大增強(qiáng)了Emacs在程序開發(fā)方面的能力(甚至有部分彌補(bǔ)了上面第一部分我說的不足)。相應(yīng)的,Vi也有許許多多各種各樣的插件(比如上推特啦,收郵件啦,聊Gtalk啦-_-)。但是,但是!這些插件有著相當(dāng)濃厚的黑客味道:

配置插件配置到你崩潰,不斷改配置,重試,改配置,重試,直到你的Emacs再也起不來鳥~~~>_<~~~
除了幾個(gè)著名插件,其他插件的完成度真的比較讓人懷疑,興趣愛好么,寫到一半沒興趣了怎么辦?講與時(shí)俱進(jìn)講了這么久了,插件還真是做不到與時(shí)俱進(jìn)那。
C和C++加上插件基本成套能用,其他語言那?記得有一次,一個(gè)html/css/js的項(xiàng)目寫到一半,突發(fā)奇想用了一會(huì)兒vim+網(wǎng)上大牛推薦的幾個(gè)著名插件,哎呦我的媽,這是回到了侏羅紀(jì)嗎?基本的代碼著色,代碼縮進(jìn)還能做的更差一點(diǎn)嗎?
當(dāng)然,隨著插件的完善,Emacs和Vim還是有更完美的希望的。也許什么時(shí)候Netbeans Eclipse這些都被干翻了,IBM和Oracle回到Emacs或者Vi懷抱,又或者Google被弄得沒ide用了,這時(shí)候Emacs和Vim插件就有希望了。也就是說,Emacs作為開發(fā)環(huán)境缺乏大廠的支持,這是它的一個(gè)硬傷。

3、高級(jí)特性

下面這些高級(jí)特性上,Emacs和Vim的差距也比較大:

首先要說的高級(jí)特性就是智能感知和補(bǔ)全,在微軟叫Intellisense,在其他的廠,好吧,就叫Auto-Complete… 這個(gè)差距就大了去了;旧螮macs在C和C++領(lǐng)域還能撐一下,只能說略輸現(xiàn)代IDE一點(diǎn),基于項(xiàng)目和語法分析的插件勉強(qiáng)趕上時(shí)代(勉強(qiáng)比Eclipse,Netbeans這種差一點(diǎn),和VC和SlickEdit比那就是廁所里點(diǎn)燈)。其他語言的智能感知和補(bǔ)全基本上就是農(nóng)業(yè)社會(huì)了——基本上就是基于單詞表的,囧。其實(shí)Emacs也做得出來,不過這種東西沒大廠雇一幫人,做個(gè)能用的蠻難。
其次是重構(gòu)啊,單元測(cè)試啊,源代碼管理啊這些熱點(diǎn)特性基本也沒戲了,Emacs里只能Shell開起來,小碎步抖起來了。
再然后是調(diào)試的支持。Emacs也好Vi也好,插件一個(gè)不落全裝上,對(duì)GDB支持還是蠻好的。即使這樣,GDB目前看起來調(diào)試功能和Visual Studio還是有一定差距(舉個(gè)例子,VS好幾年前開始支持泛型容器直接看內(nèi)容了,可能我土鱉,不知道GDB也支持了)。然后,其他語言的調(diào)試,又是一片悲劇,插件又沒跟上!
最后再提一小點(diǎn):對(duì)于類庫、框架、插件的管理和支持。Eclipse,Netbeans,VisualStudio都有比較完善的插件管理機(jī)制,你要哪些插件,隨你選,然后自動(dòng)下載安裝搞定。Emacs和Vi滿世界找插件,下載以后改配置文件,沒配置對(duì)還要悲劇,F(xiàn)代IDE對(duì)于某些程序需要的類庫框架也是這種管理方式,搜索,下載,直接加入項(xiàng)目文件或者build文件,然后對(duì)于框架有較多的自動(dòng)生成功能(比TextMate的Bundles高檔多了,基于語法分析的一般)。不過說實(shí)話,這點(diǎn)寫成Emacs的缺點(diǎn)還真有點(diǎn)心虛,因?yàn)檫@本來就是集市和大教堂的區(qū)別。
總的來說,比較根本的缺點(diǎn)其實(shí)只有兩個(gè):面向文件而不是面向工程的管理方式;沒有大廠支持。前者是由于Emacs(Vi)編輯器的本質(zhì)造成的,后者,額,我也不知道是什么造成的。

洋洋灑灑寫了這么多,其實(shí)我還是挺喜歡Emacs也挺喜歡Vi的,他倆最吸引我的其實(shí)還是全鍵盤的操作方式——相當(dāng)?shù)难bB啊,給別人演示的時(shí)候倍兒有面子——還有就是奇快的速度,拿來做一些小項(xiàng)目速度很快也很順手。但是挨踢界確實(shí)也是一日千里,Emacs和Vi能迎頭趕上就好。

Emacs本身定位上可能就不是代碼編輯器,至少流行的沒見過哪個(gè)在文字窗口顯示圖片的,不過這也有個(gè)好處就是會(huì)有一些支持latex預(yù)覽的插件

VI/Emacs是頂級(jí)高手用來開發(fā)操作系統(tǒng),數(shù)據(jù)庫,編譯器,新的編程語言等等,你說NB嗎?
當(dāng)然這種東西最好是有高手帶,因?yàn)閷W(xué)習(xí)曲線非常的陡。

VS2010確實(shí)很好,要是再穩(wěn)定點(diǎn)就更好了。

Emacs和VI也有他們的好處,也有些文章介紹的。我覺得最牛逼的地方是這兩個(gè)東西可以完全脫離鼠標(biāo)。
    應(yīng)用兔
    (103)應(yīng)用兔
    應(yīng)用兔是的新工具軟件,同時(shí)也是在官方上架的應(yīng)用。因此,應(yīng)用兔在保證設(shè)備與圖片的安全轉(zhuǎn)移的同時(shí),也為用戶提供安全便捷的軟件下載環(huán)境。應(yīng)用兔電腦版功能的軟件叫,其實(shí)有些網(wǎng)友就直接把叫作應(yīng)用兔電腦版,給出的解釋是上叫應(yīng)用兔,版上叫,估計(jì)用過的朋友就不少了吧無需越獄就能安裝各種游戲,軟件的工具兔子助手就是原來的,現(xiàn)在改名為兔子助手,功能更強(qiáng)大,使用更方便,快來下體驗(yàn)兔子助手電腦版,軟件管理一步到位,功能強(qiáng)大...更多>>
    • iTools兔子助手4.1.5.2 官方最新版

      01-12 / 28M

      推薦理由:iTools2016是一款ios設(shè)備管理工具,iTools具有管理軟件所特有的一些功能,要實(shí)現(xiàn)這些功能就需要對(duì)您電腦和移
    • 快用蘋果助手3.0.0.8 官方最新版

      10-31 / 29.0M

      推薦理由:國內(nèi)首款支持蘋果IOS應(yīng)用一鍵下載、安裝的PC端輔助工具“快用蘋果助手”正式發(fā)布,因其簡(jiǎn)單、安全、下載快速
    • iTools安卓模擬器v2.1.7.8 官方正式

      12-16 / 62.8M

      推薦理由:iTools安卓模擬器是itools兔子助手官方推出的一款安卓手游模擬器軟件,提到itools想必很多蘋果手機(jī)用戶都知
    • 快用蘋果助手20173.0.0.8 官方最新

      12-29 / 29.0M

      推薦理由:本版主要是提供設(shè)備管理功能:提供兩個(gè)途徑:一是快用蘋果助手客戶端;一是計(jì)算機(jī)(或我的電腦)中的蘋果設(shè)
    • 快用蘋果助手ipad/iphone版2.6.0.0

      05-15 / 9.8M

      推薦理由:史上最牛逼,最方便的Iphone管理工具,絕對(duì)不會(huì)白蘋果,讓您的蘋果設(shè)備得到更好的呵護(hù)。這是一款不要錢,最省事
    • iTools 2016 mac版2.9.2 官方版

      10-02 / 4.9M

      推薦理由:蘋果設(shè)備管理工具2016(iToolsformac)是一款新的蘋果設(shè)備管理工具iTools,它只有700K、完全綠色、像iTunes一
    金山手機(jī)助手
    (130)金山手機(jī)助手
    金山手機(jī)助手是智能手機(jī)的資源獲取平臺(tái)。金山手機(jī)控幫助手機(jī)使用者用最省流量最快捷最方便最安全的方式獲取網(wǎng)絡(luò)資源,只需通過數(shù)據(jù)線的方式將手機(jī)連接至,便可以通過金山手機(jī)助手下載海量應(yīng)用,電子書視頻音樂圖片應(yīng)有盡有,游戲應(yīng)用軟件一應(yīng)俱全。還可以通過它進(jìn)行應(yīng)用管理任務(wù)管理,圖片視頻音樂等導(dǎo)入導(dǎo)出等等。功能特色金山手機(jī)控除了自有軟件游戲?qū)殠欤提供超過萬款手機(jī)資源,不花手機(jī)流量,一鍵下載安裝。金山手機(jī)控提供的...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    第 2 樓 浙江聯(lián)通 網(wǎng)友 客人 發(fā)表于: 2012/7/8 22:55:16

    引用( 福建福州(連江縣)聯(lián)通ADSL 客人 2012-3-27 20:10:33

    樓主說的是實(shí)話,那些整天說Emacs/VI好的,其實(shí)很多都不是企業(yè)里面的開發(fā)人員,項(xiàng)目管理不使用IDE環(huán)境進(jìn)行管理幾乎是不可能的,想想就知道原因了,大家都學(xué)習(xí)過軟件工程,其實(shí)從那里可以找到答案,Emacs/VI只是個(gè)人英雄的利器,群體開發(fā)的時(shí)候非IDE不可。
    EDE?

    支持( 0 ) 蓋樓(回復(fù))

    第 1 樓 福建福州(連江縣)聯(lián)通ADSL 網(wǎng)友 客人 發(fā)表于: 2012/3/27 20:10:33
    樓主說的是實(shí)話,那些整天說Emacs/VI好的,其實(shí)很多都不是企業(yè)里面的開發(fā)人員,項(xiàng)目管理不使用IDE環(huán)境進(jìn)行管理幾乎是不可能的,想想就知道原因了,大家都學(xué)習(xí)過軟件工程,其實(shí)從那里可以找到答案,Emacs/VI只是個(gè)人英雄的利器,群體開發(fā)的時(shí)候非IDE不可。

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)