现在的位置: 首页 > 综合 > 正文

继续说Windows和Linux的异同

2011年12月05日 ⁄ 综合 ⁄ 共 2927字 ⁄ 字号 评论关闭
    没想到随手写的一篇文章也会引来这么多读者。初来博客园不久,对这里其实还不是很熟悉,看文章,主要都是关于.Net和Web开发的,但愿我的文章在这里不会显得不合群。

    上一篇文章里简单讲了下两个系统的发布方式、目录结构,还有简单提了下用户体验。这次简单讲讲帮助系统,还有工作模式。

    初学Linux的人在问别人问题的时候,肯定受到过这样的回答:“man xxx”,对一个比较熟练的Linux用户,man或者info肯定是家常便饭了,那么多命令,那么多参数,谁记得住呢?除了一些常用的命令外,肯定都是在用到的时候man一下看看怎么用。
    然而,国内的Windows用户(国外的我不清楚)似乎大多都忽略了系统中自带的帮助系统,我相信很少有人碰到问题是第一反应是按F1,而不是打开搜索引擎或者问人。国内的打包组则直接宣传说xp中200多M的帮助文件没用,直接删掉,减小系统体积。正是因为大家的忽略,很多写书的人借此大捞了一笔,在新华书店中,各种所谓的WindowsXP教程、Office教程,其实大部分都是直接抄的系统或者软件自带的帮助文件,连给的例子都是一字不动的抄出来的。不知道是系统帮助文件的组织方式不好呢还是啥,为什么大家都更愿意掏钱买书看,而不愿意看系统自带的帮助呢?
    在这里,我想表扬几个公司的文档,微软的(尤其是MSDN Library),Intel的(software developer's manuals),IBM的(developerWorks),其他公司的产品我用的比较少,文档也看的少,不清楚情况。其中MSDN Library推荐看英文的,其中文版绝大多数由机器翻译来的,效果不是很好,IBM的developerWorks也有中文的,并且都是人工翻译的,但量上比不上英文的多,也没有英文的新。MSDN Library和Intel的Manual主要是产品文档,developWorks则是跟wiki一样是一个知识库。

    扯开了,我们继续回到Win/Linux的话题上面。一些准备从Win转Linux的新手总会问的问题,Windows下xx软件在Linux用什么替代阿?在这个问题上,我总是很避讳“替代”这个词语。有些软件在两个系统下是相同或非常相似的功能,可以说替代,但大多数软件,他们的功能并不相同,他们从本质上的工作方式就不相同,不具有替代性可言。例如用什么替代Visual Studio?从IDE的角度来说,可以用eclipse,也可以用vim+gcc+gdb+...然而,这仅仅是从IDE的角度说,实际上VS的主要职能是开发.Net,C语言的开发可以说只能算是一个附加的功能吧;但eclipse的主要职能是C/C++和Java的开发,想在eclipse下开发C#或者.net,最好不要这么想吧(虽然不是不行);而对于vim+gcc+gdb+...这个回答,初学者可能就难以理解了,他们界面不同,操作方式不一样,怎么能说是“替代”?对于新手,“替代”这个词更多的不是从功能上发问,而是从界面操作方式上来发问的。
    上面说的“替代”的问题是由操作方式的不同引起的。还有一种情况是,Linux下可能没有某些需求,没有这样的软件。例如用什么替代MS Office?有些人可能会回答Open Office。首先我想否认这个回答,就这个问题,我宁愿回答Google Docs,也不会说是Open Office。MS Office有很多很多的功能是OOo所没有的,且不说两者对文件格式的支持还有糟糕的GUI吧。我曾经想过,为什么Linux下没有一款能跟MSOffice相似的办公软件,思考的结果,窃以为,Linux用户没这样的需求。Linux用户多为开发人员,他们写文档时更青睐纯文本格式(vim/emacs是不二的选择),或者有些人会用latex,富文本格式的文档写的并不是很多,Open Office已经够用了。然而,在这方面的缺失,也许是Linux走向桌面化的过程中最大的障碍吧。
    所以,在有人想学用Linux,来向我请教如何入门时,我首先会询问他学习Linux的目的是什么。如果是当做桌面娱乐应用的话,最好还是不要,如果非要用的话,那就的舍得放弃Win下的很多功能,并且某些方面要适应Linux的工作方式(注意,不是说如何使用某些软件,而是要明白为何一件事在Windows下是这么做,而Linux下是另一种做法)。如果是做开发的话,那也得有心里准备,Linux下最好的开发套件是少不了vim或者emacs的,这两个软件的学习曲线非常长,要熟练也许至少得花上半年吧。

    有的时候我在想,为什么Linux下的这些软件,比如vim的学习曲线会那么长,同样是一个纯文本编辑器,为什么notepad到手就能用,gedit到手就能用,而vim却那么难呢?我觉得主要是概念的原因。notepad可以认为是一个很单纯的编辑器,没有任何概念可言,打开之后,就是码字。而vim则多了模式这个概念。其实,vim有个参数-y,通过vim -y打开之后默认就是插入模式,如果再把ctrl-c/ctrl-v/ctrl-h等分别映射成复制/粘贴/查找等,也就能跟notepad同样的使用(怎么退出?点X啊……vim一点的,ctrl-o,然后:q<cr>)。
    顺便就多讲讲vim吧。窃以为,学会vim其实很简单,只要了解几个普通/插入/命令/可视这四个模式就够了,这时候它已经比notepad强大了。然后,熟练使用hjkl等各种移动光标的键位,那就锦上添花了。但,这个时候只是会用vim,而不是熟练使用。窃以为,vim的精髓在于查找替换、正则式、脚本扩展这些能力上。notepad/word用户可能很少会用查找来移动光标定位吧?更多的是用眼睛定位,用方向键或者鼠标移动,对于很长的文本,这很累。查找使得定位快而准。替换也许对于普通的文本编辑来说用处并不大,但对于编程来说,几乎时时都要用,当然,不是简单的替换,而是正则替换,很多能力真的是太神奇了。再配合上,就如虎添翼了。脚本的扩展,则是vim最强大的地方。Unix哲学中的一条原则是Write Simple Parts,意思是说把自己的功能能做精,而不要去管别的功能,vim把基本的编辑功能做强大了,把其他的事情留给扩展来做了,如自动补全、语法高亮等,vim为这些功能都留了接口,但自己本身并不去实现。
    其实,这么看来vim并不难学,打击众人积极性的,也许仅仅是第一次进入后不知道如何退出吧?呵呵:-)

    不写了,总结一下吧。我觉得,Windows是一个对最终用户来说单纯的系统,或者也可以说是一个所见即所得的系统;Linux是一个很有思想的系统,它城府很深,有很多奇怪的概念,要理解它很难,但是理解之后却发现它做事很成熟,很讲究效率,也可以说它是一个所想即所得的系统。是不是也可以这样说呢:Windows是一个用眼睛用的系统,而Linux是一个用心用的系统?

 

 转载请注明出处:http://www.cnblogs.com/stephenjy/archive/2010/02/18/1669112.html 

抱歉!评论已关闭.