VIM叫板Visual Studio 自動檔賽車請走開
VIM是什么?VIM是優(yōu)秀的開源文本編輯器,是Linux/UNIX用戶非常常用的文本編輯工具。在這一工具下,每個開發(fā)者可以只用命令行完成各項(xiàng)功能。Visual Stuido則是微軟的IDE平臺,最新版本為Visual Studio 2010。
作為程序員,我們應(yīng)該對開發(fā)環(huán)境和工具軟件有著嚴(yán)肅的態(tài)度,真正弄明白各類工具的用法和用途,好歹這些是我們吃飯的家伙,是不是?不會使用各種開發(fā)工具的程序員,不是個好程序員:你拖了團(tuán)隊(duì)的后腿,減少了大家的工具選項(xiàng),降低了團(tuán)隊(duì)的開發(fā)水準(zhǔn)。另一方面,不知道該在什么項(xiàng)目中采用什么開發(fā)工具的,也不是好的Team Leader,眼界太窄,更可能影響開發(fā)的成敗。強(qiáng)大的開發(fā)工具并不是在各方面都強(qiáng)大,尺有所短,寸有所長。
不想當(dāng)將軍的士兵不是好士兵,在我眼你,不愿意研究開發(fā)工具的人也不是個好程序員,這樣的人很多很多,浮躁而不自知,自大而不自信,不尊重自己的工作,也不知道尊重前輩的知識。就這么渾渾噩噩在開發(fā)圈子里混著,一年兩年,逐漸對自身的待遇不滿,也逐漸不能勝任工作的要求。
10年前,正是互聯(lián)網(wǎng)泡沫第一次開始破滅的開端,一家家公司接連倒閉,很多剛?cè)肼殠讉€月的計(jì)算機(jī)專業(yè)的學(xué)生很快又得再次求職……程序員的貶值,程序員隊(duì)伍整體水平的滑坡,正是從那時開始的。回憶當(dāng)時,一般的程序員還真不敢自稱高手。
作為一個斷續(xù)做了6年Windows開發(fā),斷續(xù)做了11年Linux開發(fā)(中間有重合的交集)的老程序員,我換過若干家公司,經(jīng)歷過一些不同性質(zhì)的項(xiàng)目,Windows下mfc的,純sdk的,數(shù)據(jù)庫的,c/s、b/s的,ddk的(有早期的vxd,也有后來的wdm)經(jīng)歷過,Linux下的小驅(qū)動,通訊設(shè)備研發(fā),媒體設(shè)備研發(fā)也做過不少,還有業(yè)余做的php、ror項(xiàng)目,現(xiàn)在更是專職在做大流量高并發(fā)的……在線游戲后臺,為玩家們提供堅(jiān)固的精神鴉片支撐。用過的語言和工具比較多了,從在校學(xué)習(xí)的tc2、bc++3開始,到自學(xué)的VC、delphi、bcb,還有些忘了名,但第一份工作用的工具VC。從VC4開始的,后來一直升級,到最近的Visual Studio 2008,我甚至業(yè)余做過Visual Studio和BCB的插件。另一方面,自己筆記本上始終安裝的是Linux,最初是red hat后來是slackware,debian,Ubuntu,arch。也嘗鮮過一些別的發(fā)行版,其他os這里就不提了。長期做嵌入,自然長期用GNU/Linux(這是正式的名稱)。我想不管是對于Windows還是對于Linux下的各種工具,我自認(rèn)了解程度和使用經(jīng)驗(yàn),應(yīng)該為比《別碰我,VIM》的作者要更多。我就倚老賣老吧,希望作者能聽幾句老家伙的廢話。
接下來我說說《別碰我,VIM》里的一些小問題,希望作者,也希望有興趣的圍觀者能有點(diǎn)小收獲。都是些常識話,主要是說給有志于軟件開發(fā)事業(yè)的人,可能比較無聊,而且刺耳。無興趣就不要看了。
軟件間依賴性問題稱為耦合,這是包管理器自動完成的事情,對用戶而言是自動的,透明的,使用者沒有必要去關(guān)心這些,而開發(fā)者自然應(yīng)該知道這些。這實(shí)在不該是指責(zé)某個軟件的理由。Linux的工具是相當(dāng)精干的,工具間相互配合,勝任各種復(fù)雜任務(wù),我看不出這是什么缺點(diǎn)。如果有一個開發(fā)軟件,很龐大,不依賴別的什么軟件,自身就可以完成全部開發(fā)所需的功能,這樣的軟件就是好的嗎?記住一句常識吧:不要重復(fù)發(fā)明輪子。當(dāng)然這在Windows下是不可能的,因?yàn)閃indows系統(tǒng)根本就沒有開發(fā)用的任何輪子,所以,各個開發(fā)商,必須自備輪子。以至于很多人已經(jīng)習(xí)慣了自備車輪,該換個角度思考問題了。
接下來說說效率問題,編程不等于打字,程序員總會有更多獨(dú)特的要求。寫過很多程序,維護(hù)過很多程序之后,你就會明白為什么VIM比Visual Studio更好用了,這是用了才能體驗(yàn)的事情。我感覺在和你討論“子非魚,安知魚之樂”了。哎,VIM對coder們的體貼之處,怎么是幾句話能說清的呢?總而言之:快捷鍵,正則式、以及!執(zhí)行等等功能,對程序員而言,都是相當(dāng)重要的,這些VIM有而Visual Studio沒有的功能,讓我極大的感覺到VIM的爽,以及Visual Studio的不便之處,只寫helloworld是無法了解這一點(diǎn)的。程序員們熱愛VIM到什么程度了呢?firefox都有VIM插件,讓我們能夠以VIM的操作方式看網(wǎng)頁。用久了VIM,你會上癮。一個能讓人上癮的軟件,絕不是會是你眼中的廢品。當(dāng)然另外一面,如果你不是長期寫程序,沒有那些特殊的需求,你就不會覺得VIM有任何的好處。如果只準(zhǔn)我用Visual Studio會有什么感覺呢?就像一個專業(yè)的車手,不讓開賽車,讓我用強(qiáng)大而舒適的自動波,那是很郁悶的。作為程序員,本著對工作負(fù)責(zé)的態(tài)度,不管開發(fā)工具有多糟糕多難用,你也應(yīng)該掌握,這是本職所在。況且效率上VIM其實(shí)更高,而現(xiàn)在不專業(yè)的你,還沒學(xué)會,完全對VIM沒有應(yīng)具備的認(rèn)知。
懶惰使世界進(jìn)步,所以我們我們用使工作效率更高的軟件,而不是相反。公司對效率的追求是沒有止境的,程序員絕對不是個舒適的職業(yè),你可以想辦法更省事的完成任務(wù),但絕不要笨鳥還不飛。懶惰到一定程度,連什么工具干活更快更省都不清楚,那就有生存危機(jī)了。你也許覺得寫程序,大部分時間都在思考,打字速度無所謂。但很多公司的程序員試用期都會考核英文打字速度,這就是對效率的追求,絕不是無聊。在校學(xué)生,職場新人,都要有這個心理準(zhǔn)備,不要以為編程的工作多輕松。
至于compiz什么的我不多說,這與程序員無關(guān)。我是用compiz+cairo-dock的,只是為了養(yǎng)眼,沒有提高或者降低工作效率。
再說Eclipse,這是很多公司的標(biāo)準(zhǔn)開發(fā)環(huán)境,不管你是不是喜歡,不管你的Visual Studio用得多好,都要面對這個現(xiàn)實(shí)。說些廢話:我接觸的用Eclipse的薪資水平比用Visual Studio的基本上要高,用VIM的又更高一點(diǎn)。國人浮躁,用金錢衡量價值顯得權(quán)威一些,如果我說技術(shù)水平……大家不服氣,呵呵。就沖著錢,大家還是多掌握些手藝吧。二者的優(yōu)劣,我不想多說,這是見仁見智的問題。Visual Studio就像IE,Eclipse就像Firefox,跨平臺,功能要靠擴(kuò)展的,當(dāng)然我個人是更喜歡Eclipse。
至于開源模式。這個話題相當(dāng)有分量,我不認(rèn)為這是現(xiàn)在的你能談?wù)摰?。什么是開源什么是自由軟件?什么叫分布式協(xié)同開發(fā),什么叫持續(xù)集成滾動更新什么叫永遠(yuǎn)的beta版?Agile是什么Scrum是什么?呵呵,相信我,這只能是做過很多個不同模式的項(xiàng)目管理的人,才能有體驗(yàn)的。軟件架構(gòu)和開發(fā)模式,目前離你都比較遠(yuǎn),沒有實(shí)踐而探討,就成了空話。你真的應(yīng)該相信長者,去看前人的經(jīng)驗(yàn)和教訓(xùn)的總結(jié),《大教堂與集市》這樣的文章,真不是垃圾。
就我所知道的,業(yè)余參與GNU項(xiàng)目的,大部分都是公司的牛人,而專職的自由軟件開發(fā)者,基本上都是業(yè)界的頂尖人物。如果連你都輕易的發(fā)現(xiàn)他們的開發(fā)模式錯了,那全球軟件行業(yè)還真是腦殘集中營了。否決這么一大票牛人還真是需要勇氣的。
LaTeX可以直接用,也可以用來實(shí)現(xiàn)可見即所得的編輯器,攻擊排版軟件的基石也需要極大的勇氣啊。Openoffice.org很好用,甚至國產(chǎn)的WPSOffice也都很好,為什么要花那么多錢買Office呢。我的Windows里安裝的還是Openoffice.org,公司采購的是WPS。在Linux里,大部分時間我是用簡單的abi的,對我夠用了,用不著那么多復(fù)雜功能。
世界上好玩的東西很多,不是什么東西都可以弄精通的,但吃飯的家伙還真得精通。廚師不能靠意念炒菜、司機(jī)不能靠意念開車,你也不能靠意念寫程序,人不能活在想象之中,電腦幫我們寫程序的科幻時代還沒到來。學(xué)不好,是你沒刻苦努力,與你的才智無關(guān)。我從小就很普通,父母說我呆,同學(xué)說我笨,從小學(xué)到大學(xué)習(xí)成績都不太好,大學(xué)掛掉n門課,但這并沒妨礙我把VIM弄精通了,把GCC弄精通了,把GDB弄精通了,把幾個專用的嵌入式操作系統(tǒng)弄精通了。只要功夫深,鐵杵磨成針,大道理不多說,你別總給自己找借口,這些軟件都是你應(yīng)該精通的。這些其實(shí)也都是很無聊的,并不是什么有趣的東西。學(xué)習(xí)它掌握它,精通它,是你的責(zé)任,不管是不是有興趣都要去做到。
最后說場合問題:無GUI的環(huán)境永遠(yuǎn)會存在,不是所有的設(shè)備都必須連接鍵盤鼠標(biāo)。服務(wù)器永遠(yuǎn)都不需要GUI,這與時代進(jìn)步無關(guān)。做Windows開發(fā)用Visual Studio是天經(jīng)地義,做服務(wù)器、嵌入式、Linux或者跨平臺開發(fā),用VIM也是很適合的選擇。我不明白為什么作者要把兩個在工作中很難有交集的東西做對比,這就是本文標(biāo)題的由來了。如果硬要做對比的話,我要說,Windows開發(fā)真不對路(個人喜好,請勿模仿),我就是不喜歡不對我公開的東西,就是不喜歡難調(diào)試的東西,就是不喜歡開發(fā)速度慢的東西,就是不喜歡負(fù)載能力低下的東西。
不想當(dāng)將軍的士兵不是好士兵,在我眼你,不愿意研究開發(fā)工具的人也不是個好程序員,這樣的人很多很多,浮躁而不自知,自大而不自信,不尊重自己的工作,也不知道尊重前輩的知識。就這么渾渾噩噩在開發(fā)圈子里混著,一年兩年,逐漸對自身的待遇不滿,也逐漸不能勝任工作的要求,逐漸一個個消失在開發(fā)界。而我這樣的老家伙們,漸漸的成了你所不能理解的人。
【編輯推薦】






