VIM是什么?VIM是优秀的开源文本编辑器,是Linux/UNIX用户非常常用的文本编辑工具。在这一工具下,每个开发者可以只用命令行完成各项功能。Visual Stuido则是微软的IDE平台,最新版本为Visual Studio 2010。
作为程序员,我们应该对开发环境和工具软件有着严肃的态度,真正弄明白各类工具的用法和用途,好歹这些是我们吃饭的家伙,是不是?不会使用各种开发工具的程序员,不是个好程序员:你拖了团队的后腿,减少了大家的工具选项,降低了团队的开发水准。另一方面,不知道该在什么项目中采用什么开发工具的,也不是好的Team Leader,眼界太窄,更可能影响开发的成败。强大的开发工具并不是在各方面都强大,尺有所短,寸有所长。
不想当将军的士兵不是好士兵,在我眼你,不愿意研究开发工具的人也不是个好程序员,这样的人很多很多,浮躁而不自知,自大而不自信,不尊重自己的工作,也不知道尊重前辈的知识。就这么浑浑噩噩在开发圈子里混着,一年两年,逐渐对自身的待遇不满,也逐渐不能胜任工作的要求。
10年前,正是互联网泡沫第一次开始破灭的开端,一家家公司接连倒闭,很多刚入职几个月的计算机专业的学生很快又得再次求职……程序员的贬值,程序员队伍整体水平的滑坡,正是从那时开始的。回忆当时,一般的程序员还真不敢自称高手。
作为一个断续做了6年Windows开发,断续做了11年Linux开发(中间有重合的交集)的老程序员,我换过若干家公司,经历过一些不同性质的项目,Windows下mfc的,纯sdk的,数据库的,c/s、b/s的,ddk的(有早期的vxd,也有后来的wdm)经历过,Linux下的小驱动,通讯设备研发,媒体设备研发也做过不少,还有业余做的php、ror项目,现在更是专职在做大流量高并发的……在线游戏后台,为玩家们提供坚固的精神鸦片支撑。用过的语言和工具比较多了,从在校学习的tc2、bc++3开始,到自学的VC、delphi、bcb,还有些忘了名,但第一份工作用的工具VC。从VC4开始的,后来一直升级,到最近的Visual Studio 2008,我甚至业余做过Visual Studio和BCB的插件。另一方面,自己笔记本上始终安装的是Linux,最初是red hat后来是slackware,debian,Ubuntu,arch。也尝鲜过一些别的发行版,其他os这里就不提了。长期做嵌入,自然长期用GNU/Linux(这是正式的名称)。我想不管是对于Windows还是对于Linux下的各种工具,我自认了解程度和使用经验,应该为比《别碰我,VIM》的作者要更多。我就倚老卖老吧,希望作者能听几句老家伙的废话。
接下来我说说《别碰我,VIM》里的一些小问题,希望作者,也希望有兴趣的围观者能有点小收获。都是些常识话,主要是说给有志于软件开发事业的人,可能比较无聊,而且刺耳。无兴趣就不要看了。
软件间依赖性问题称为耦合,这是包管理器自动完成的事情,对用户而言是自动的,透明的,使用者没有必要去关心这些,而开发者自然应该知道这些。这实在不该是指责某个软件的理由。Linux的工具是相当精干的,工具间相互配合,胜任各种复杂任务,我看不出这是什么缺点。如果有一个开发软件,很庞大,不依赖别的什么软件,自身就可以完成全部开发所需的功能,这样的软件就是好的吗?记住一句常识吧:不要重复发明轮子。当然这在Windows下是不可能的,因为Windows系统根本就没有开发用的任何轮子,所以,各个开发商,必须自备轮子。以至于很多人已经习惯了自备车轮,该换个角度思考问题了。
接下来说说效率问题,编程不等于打字,程序员总会有更多独特的要求。写过很多程序,维护过很多程序之后,你就会明白为什么VIM比Visual Studio更好用了,这是用了才能体验的事情。我感觉在和你讨论“子非鱼,安知鱼之乐”了。哎,VIM对coder们的体贴之处,怎么是几句话能说清的呢?总而言之:快捷键,正则式、以及!执行等等功能,对程序员而言,都是相当重要的,这些VIM有而Visual Studio没有的功能,让我极大的感觉到VIM的爽,以及Visual Studio的不便之处,只写helloworld是无法了解这一点的。程序员们热爱VIM到什么程度了呢?firefox都有VIM插件,让我们能够以VIM的操作方式看网页。用久了VIM,你会上瘾。一个能让人上瘾的软件,绝不是会是你眼中的废品。当然另外一面,如果你不是长期写程序,没有那些特殊的需求,你就不会觉得VIM有任何的好处。如果只准我用Visual Studio会有什么感觉呢?就像一个专业的车手,不让开赛车,让我用强大而舒适的自动波,那是很郁闷的。作为程序员,本着对工作负责的态度,不管开发工具有多糟糕多难用,你也应该掌握,这是本职所在。况且效率上VIM其实更高,而现在不专业的你,还没学会,完全对VIM没有应具备的认知。
懒惰使世界进步,所以我们我们用使工作效率更高的软件,而不是相反。公司对效率的追求是没有止境的,程序员绝对不是个舒适的职业,你可以想办法更省事的完成任务,但绝不要笨鸟还不飞。懒惰到一定程度,连什么工具干活更快更省都不清楚,那就有生存危机了。你也许觉得写程序,大部分时间都在思考,打字速度无所谓。但很多公司的程序员试用期都会考核英文打字速度,这就是对效率的追求,绝不是无聊。在校学生,职场新人,都要有这个心理准备,不要以为编程的工作多轻松。
至于compiz什么的我不多说,这与程序员无关。我是用compiz+cairo-dock的,只是为了养眼,没有提高或者降低工作效率。
再说Eclipse,这是很多公司的标准开发环境,不管你是不是喜欢,不管你的Visual Studio用得多好,都要面对这个现实。说些废话:我接触的用Eclipse的薪资水平比用Visual Studio的基本上要高,用VIM的又更高一点。国人浮躁,用金钱衡量价值显得权威一些,如果我说技术水平……大家不服气,呵呵。就冲着钱,大家还是多掌握些手艺吧。二者的优劣,我不想多说,这是见仁见智的问题。Visual Studio就像IE,Eclipse就像Firefox,跨平台,功能要靠扩展的,当然我个人是更喜欢Eclipse。
至于开源模式。这个话题相当有分量,我不认为这是现在的你能谈论的。什么是开源什么是自由软件?什么叫分布式协同开发,什么叫持续集成滚动更新什么叫永远的beta版?Agile是什么Scrum是什么?呵呵,相信我,这只能是做过很多个不同模式的项目管理的人,才能有体验的。软件架构和开发模式,目前离你都比较远,没有实践而探讨,就成了空话。你真的应该相信长者,去看前人的经验和教训的总结,《大教堂与集市》这样的文章,真不是垃圾。
就我所知道的,业余参与GNU项目的,大部分都是公司的牛人,而专职的自由软件开发者,基本上都是业界的顶尖人物。如果连你都轻易的发现他们的开发模式错了,那全球软件行业还真是脑残集中营了。否决这么一大票牛人还真是需要勇气的。
LaTeX可以直接用,也可以用来实现可见即所得的编辑器,攻击排版软件的基石也需要极大的勇气啊。Openoffice.org很好用,甚至国产的WPSOffice也都很好,为什么要花那么多钱买Office呢。我的Windows里安装的还是Openoffice.org,公司采购的是WPS。在Linux里,大部分时间我是用简单的abi的,对我够用了,用不着那么多复杂功能。
世界上好玩的东西很多,不是什么东西都可以弄精通的,但吃饭的家伙还真得精通。厨师不能靠意念炒菜、司机不能靠意念开车,你也不能靠意念写程序,人不能活在想象之中,电脑帮我们写程序的科幻时代还没到来。学不好,是你没刻苦努力,与你的才智无关。我从小就很普通,父母说我呆,同学说我笨,从小学到大学习成绩都不太好,大学挂掉n门课,但这并没妨碍我把VIM弄精通了,把GCC弄精通了,把GDB弄精通了,把几个专用的嵌入式操作系统弄精通了。只要功夫深,铁杵磨成针,大道理不多说,你别总给自己找借口,这些软件都是你应该精通的。这些其实也都是很无聊的,并不是什么有趣的东西。学习它掌握它,精通它,是你的责任,不管是不是有兴趣都要去做到。
最后说场合问题:无GUI的环境永远会存在,不是所有的设备都必须连接键盘鼠标。服务器永远都不需要GUI,这与时代进步无关。做Windows开发用Visual Studio是天经地义,做服务器、嵌入式、Linux或者跨平台开发,用VIM也是很适合的选择。我不明白为什么作者要把两个在工作中很难有交集的东西做对比,这就是本文标题的由来了。如果硬要做对比的话,我要说,Windows开发真不对路(个人喜好,请勿模仿),我就是不喜欢不对我公开的东西,就是不喜欢难调试的东西,就是不喜欢开发速度慢的东西,就是不喜欢负载能力低下的东西。
不想当将军的士兵不是好士兵,在我眼你,不愿意研究开发工具的人也不是个好程序员,这样的人很多很多,浮躁而不自知,自大而不自信,不尊重自己的工作,也不知道尊重前辈的知识。就这么浑浑噩噩在开发圈子里混着,一年两年,逐渐对自身的待遇不满,也逐渐不能胜任工作的要求,逐渐一个个消失在开发界。而我这样的老家伙们,渐渐的成了你所不能理解的人。
【编辑推荐】