不是专家
和王垠不一样,和云风不一样,他们是大牛逼,而我只是个无名小卒。不是扫地僧,只是无名小卒。但是作为一个小卒,从看到王垠的《用Linux工作》开始,也有五六个年头了。
实际上,我的计算机学习和编程几乎是同时开始的,这样算来,我也用了十三年的PC了。但是,对Mac,Linux和Windows仍然可以说是一无所知。但是王垠的态度,到了《漫谈Linux,Windows,Mac》有了90度的转折,而云风,则从C++的拥趸变成了坚实的反对者。
不是我不明白,这世界变化快。然而即便是个别大牛的态度有所转变,也会有别的大牛前赴后继,赴汤蹈火。如今,我只是想作为一个局内的局外人,写点东西为这场无功而有趣的战争火上浇油。
操作系统
Operating System是一个复合词,Operating操作和System系统。一直以来我都这么理解这个单词:操作,就是人操作系统,系统操作电脑。系统,就是一大堆功能的有机结合。
综合起来就这么理解:系统提供了一大堆的功能与人交互,又提供了一大堆的功能去操作机器。
Windows也好,Linux也好,所有的论战焦点,都聚集在两个方面:
- 人如何操作系统
- 系统如何操作电脑
人机界面的对战
人和系统打交道的办法,有个专业术语,叫人机界面。其实想一想,人机界面无外乎:图形化 v.s. 命令行;键鼠 v.s. 键盘。
我们来组合一下,命令行+键鼠;命令行+键盘;图形化+键鼠;图形化+键盘。
命令行+键鼠的风格,恐怕是所有模式中最少的。虽然现代CLI都多少能支持点鼠标,但那些终究是杯水车薪。我们暂且不表。
命令行+键盘,那就是:Command,PowerShell(Windows);Shell(Linux)。
图形化+键鼠:鼠标的点击辅以快捷键的操作。大部分的图形化软件都是这个模式。日常开发的IDE。也算是这个模式。
图形化+键盘:除了VIM和Emacs,我还真想不到有别的什么。
凡是我所见到的论战,大都逃不出这样的框架。咱们也来模拟一遍:
命令行+键盘
最早打仗的,恐怕是DOS Mode(CLI)与Shell之间的PK了。想都不用想,显然是Shell(包括cp这一类的exe)会完胜。CLI的每条命令,Shell都有功能更强大的版本。比方说cp,比方说ls,等等等。就连我这个Linux盲,都更喜欢使用Shell的那些内建命令,而不是CLI那些从DOS就沿袭下来的东西。Batch和Sh相比,那完全就是 糖稀小人 v.s. 乐高做的变形金刚。前者虽然使用起来无比简单,但是功能稍微复杂一点,基本上玩不转了。再加上windows也没有grep,awk这类的文本处理程序,Batch简直和残废没什么区别。
虽然大部分情况下我们都不需要这些命令行的功能,但是你真要批处理的时候,还真是个问题。MS其实也意识到这一点,所以从XP开始就有了PowerShell这样傍着.Net的邪物。
所以PowerShell也加入到对抗Shell的战场中。PowerShell看起来挺好,只可惜一来.net是为编程设计的,日常应用粒度太小;二来语法复杂难用;三来出现的太晚。所以从功能上来说,PowerShell当然是很牛逼的;但是易用性和学习曲线上来说,对我这种智商低的小菜鸟恐怕就只有“呵呵后”了。我还不如用Python呢,何必受PowerShell那气。
图形化+键鼠
对于应用程序来说,图形化辅以键鼠操作,是最考验UI/UX设计的功力。这块来说,自由度太大。除了日常的管理外,有些东西,还真非要这个模式不可。比方说Photoshop。要是没鼠标,没GUI,我就不信那些CLI拥趸们能用字符给我PS出美女的细胳膊细腿来。但是光用鼠标,显然也是不够的。
鼠标传达连续、不精确的空间信息是非常高效的。比方说,通过鼠标的带模式的移动(就是按住左键、中键或者右键拖拽),可以轻易的完成3D空间的缩放,平移,旋转。但是如果让它提供一个逻辑信息或精确的空间信息,那就会有很多问题。能依赖的就是点击,选择。此时的效率就有可能要打折扣。人们也想了很多办法,试图用不精确的空间信息来表达逻辑或者精确信息,例如Snap(吸附功能),Pie Menu,Gesture,但是这些方法多少都有点局限性,比方说难以识别(假阴性)、误操作或者二义性(假阳性)。
如果只是要选择性的触发一个功能,键盘的效率就要高得多。带有上下文的键盘输入,辅以全局加速表,让一些功能的选择可以在瞬间完成。所以设计良好的快捷键,可以让用户的工作效率突飞猛进。
图形化+键盘
最常见的图形化+键盘,应该算是文本编辑了。文本编辑包含两个交互部分,录入和布局。
录入几乎是一个只可能用键盘完成的工作;而布局,可以用鼠标完成,也可以用键盘来完成。本来布局是个图形操作,用鼠标的效率应该更高,但是很可惜,人只有两只蹄髈,从键盘到鼠标的切换,需要耗费大量的时间。因此对于VIM,Emacs和普通的GUI Editor(例如Notepad++)的争论焦点就在这里。
VIM和Emacs觉得键盘到鼠标的切换是不可饶恕的浪费,希望将用户所有的操作都留在键盘上。前者的代价是复杂的Mode,后者的代价是几乎无穷多的快捷键。
而GUI Editor则觉得这种切换正好是用户休闲健身的好时机,在此上浪费时间,有助于身心健康祛病消灾滋阴补肾延年益寿。
至于哪种效率更高,我也不好说。不过就我这个令人捉鸡的智商,恐怕这辈子都是用不上VIM的了。