有些人在抱怨為什麼 Linux沒有一個良好的 IDE開發環境。 Linux現在已經有一些 IDE了,但是總是有很多問題。你是不是正 在尋找,正在期望 Linux某一天可以有一個 VC那樣的開發環境?你有沒有發現你正在進入微軟給你設下的怪圈?你為什麼一定要 用 IDE?你說:``IDE開發迅速,調試方便,適合大型程序……'' 那說明微軟的程序在你腦子裡已經比較根深蒂固,你需要好好清 醒一下了,看看我來告訴你。
高明的 UNIX程序員不用 IDE, IDE從來就是給初級 Windows程序員用的。
你看看大型的 UNIX程序,包括 Linux內核,各種網絡服務程序, Xwindow程序在內,哪一個是 IDE搞出來的?我們實驗室的 EDA程序也沒有一個是 IDE弄的,我還知道 Candence, Synopsys, Mentor的高性能的圖形界面 EDA程序也都不是 IDE寫 的。你信不信,微軟的人在寫 Windows本身的時候也根本不用 IDE。微軟內部程序員最喜歡的編輯器其實是 VIM,用 VIM的微 軟程序員上次向烏幹達的可憐兒童捐助了 1000多美元,這是值得稱贊的。
有一次某雜志採訪一些出名的 Linux內核程序員,包括 Linus在內,沒有一個人用 IDE,有的人用 VIM,有的用 Emacs,只有 Linus說``GNU Emacs is evil'',但是其實他用的是一種跟 Emacs有同樣鍵綁定功能的 MicroEmacs。大家都是用編輯器 編輯了程序文件,然後用 make這樣的自動工具調用 gcc編譯器完成編譯工作的。甚至高級的 Windows程序員也不用 IDE,他們 可以從命令行調用 cl, nmake來編譯自己的程序。雖然這樣的 Windows程序員很少,但是他們卻是最了解 Windows,最高明 的 Windows程序員。
為什麼 UNIX程序員不用 IDE?明白了這個道理你就能體會到 UNIX的設計思想了。首先,一個 IDE集成了編輯器,編譯器,匯編器, 調試器,跟蹤器…… 這個編輯器功能肯定比不上 VIM或 Emacs,編譯器比不上 GCC,匯編器比不上 as,調試器比不上 gdb, ddd, 跟蹤器比不上 strace, ltrace, truss。你得到的是一套整合的低能的程序。如果你對調試器的功能不滿意,你只好換用另外一套 IDE,但是這套 IDE的熱鍵,菜單,編輯器功能,按鈕…… 跟原來那個有很大不同。你不得不花很多時間來熟悉新的環境,而不能保 持原來的某些東西。
而在 UNIX下就不一樣了。你可以用你最喜歡的 VIM編輯程序,你在 VIM裡可以調用 GNU make, make可以調用 gcc, ld, ... make的出錯信息可以被 VIM捕獲, VIM能幫你在源程序裡定位。你如果喜歡 icc, 你可以讓 make用 icc而不是 gcc。你如果覺得 gdb跟蹤變量時比較麻煩,你可以用 ddd來顯示各種數據結構之間的關系。你還可以在 Emacs裡調用 gdb,那樣就可以同步顯示源代 碼了。而且 VIM和 Emacs還可以編輯很多其它東西,比如信件, LATEX文檔, HTML,配置文件…… 你不用另外找一個什麼編輯器來 幹這些雜活了。很多程序比如 Mutt, tin都可以在內部使用 VIM,這樣就更方便了。實際上 make在其它方面還能幫你很多忙,我的 每一個比較大型的 LATEX文檔都是用 make維護的。