感谢匿名人士的投递
新闻来源:原创
大家都说用VIM的是高手,我说不对,随便看一下程序图片,简直就是绝世高手用的编辑器.我折腾了半夜,反而被它给折腾了,因此为了朋友们的幸福着想,我不再一一列举它的用法.其实最大的原因是:不好意思,我也没能学会传说中的绝世武功.
据说,VIM(编辑器) GCC(编译器) GDB(调试器)是Linux下最常用的开发工具链.自小被VS2005浸染的我,不习惯VIM,不习 惯GCC,不习惯GDB,叫我怎么敢跑到Linux下写程序.高手们似乎很喜欢用VIM加上一大堆插件来写程序,根据我看到的做法,要想有VS那样的智能 补全功能,VIM要Ctags(这是要输入一长串命令的),接着输入几个字母再按一下Tab键(需要SuperTab插件),才能出现智能提示.
这还不是最紧要的,在VIM里面,删除一行字,请按d两下,删除一个字,请按一下x.以及一长串的需要记忆的命令列表,例如gg是跑到文章的最前 面,shift 4是跑到行首,等等.我不自觉地想起了小学五年级那个暑假学的WPS,要输入一大堆的指令才能输出一篇格式整齐的文档,在别人眼里看起来 绝对是很牛的事情.现在会用Office2007的,也不止你我他吧?至于那个时候所学的一大堆WPS控制指令,还有五笔字型,到现在全忘了.
我肯定不是个记忆强的人才.帅哥拿起个Ubuntu,手中熟练地敲打着一堆我看不懂的指令,看得我眼花缭乱.用Linux,我最头疼的事情是干什么 事情我都要先敲入一个命令,然后–help找帮助来看,否则绝不会记得那个命令是怎样用的.一开始还说这是学习阶段要好好熬,尝试多了以后就会觉得这事真 的很折腾.
你说,好好一个软件为何就不写个gui界面,非得让我敲命令去记忆每个参数什么意思,好好一个配置为何就不写个gui界面,非得让我把整个配置文件研究完才知道我该去哪里修改配置参数.
他们说:Unix哲学是:一个程序只做一件事,并做好.但是不知道为什么,Linux下的软件作者似乎就是懒得写个gui,或者他们认为他们只需把 软件的逻辑做好就可以了,至于gui方面,根据简单原则,应该由其他有兴趣的人去做.其实我觉得原因有二,一则是没有强大的开发工具(要像C#那样拖个控 件就可以写gui),二则程序员也懒.
为什么没有强大的开发工具呢,为什么Linux下没有VS这样的重磅武器?我再从VIM GCC GDB说起吧.VIM的难刚才说过了,GCC的 话,要是有几个文件你非得自己手动写一个makefile不可,GDB我基本没试过,据说也有些图形界面的调试工具,可以像VS那样按一下快捷键就能调试 (这个肯定也是要配置N久的),我看过一份GDB的使用手册,又要记忆很多调试指令,我觉得我快要崩溃了.
上面所说的“一个程序只做一件事,并做好”现在已经造成了许多弊端,最可见的是依赖性.
相信在Linux下稍微深入过进行开发的知道,GCC的版本号是件很痛苦的事情,有些程序要A版本的GCC编译,有些程序要B版本的GCC编译,高 点低点版本号都不行.再加上相应的头文件库文件版本号,你是不是有种抓狂的感觉.悄悄地,我再告诉你,Linux现在发展很快,版本号一直在不停地变,你 可以去发疯了.
譬如,A作者维护一份A程序,B作者维护一份B程序,两个程序之间是有依赖的(可能的情况是B程序是A程序的gui),突然B作者想去周游世界不继 续开发B程序了,A作者继续开发下去,接口变了,那B程序基本就没用了.作为使用者的你,要么只能怨天尤人,要么改行帮B继续开发.
开源模式无疑是有很多长处的,但是其短处一直没有被正视.开源意味着源代码开放,人人都可以修改提交,可是就实际情况而言,更多的是做横向的,而不 是做纵向的.我所说的横向是指开发配套软件,纵向是指对软件进行更深入的开发.横向的容易,只需要知道要配套的接口就可以了,而做纵向则需要将源码读 懂.
继续说为什么Linux下不可能出现VS这样的重量级应用.VIM GCC GDB一样可以实现VS的功 |