标题: 什么是“对用户友好” [打印本页] 作者: 51黑电子人 时间: 2015-12-20 00:35 标题: 什么是“对用户友好” 对用户友好”
当我提到一个工具“对用户不友好”(user-unfriendly)的时候,我总是被人“鄙视”。难道这就叫“以其人之道还治其人之身”?想当年有人对我抱怨 Linux 或者 TeX 对用户不友好的时候,我貌似也差不多的态度吧。现在当我指出 TeX 的各种缺点,提出新的解决方案的时候,往往会有美国同学眼角一抬,说:“菜鸟们抱怨工具不好用,那是因为他们不会用。LaTeX 是‘所想即所得’,所以不像 Word 之类的上手。”
殊不知他面前这个“菜鸟”,其实早已把 TeX 的配置搞得滚瓜烂熟,把 TeXbook 翻来覆去看了两遍,"double bend" 的习题都全部完成,可以用 TeX 的语言来写宏包。而他被叫做“菜鸟”,这是一个非常有趣的问题。所以现在抛开个人感情不谈,我们来探讨一下这种“鄙视”现象产生的原因,以及什么叫做“对用户友好”。
首先我们从心理的角度来分析一下为什么有人对这种“对用户不友好”的事实视而不见,而称抱怨的用户为“菜鸟”。这个似乎很明显,答案是“优越感”。如果每个人都会做一件事情,如何能体现出我的超群智力?所以我就是要专门选择那种最难用,最晦涩,最显得高深的东西,把它折腾会。这样我就可以被称为“高手”,就可以傲视群雄。我不得不承认,我以前也有类似的思想。从上本科以来我就一直在想,同样都会写程序,是什么让计算机系的学生与非计算机系的学生有所不同?经过多年之后的今天,我终于得到了答案(以后再告诉你)。可是在多年以前,我犯了跟很多人一样的错误:把“难度”与“智力”或者“专业程度”相等同。但是其实,一个人会用难用的工具,并不等于他智力超群或者更加专业。
可惜的是,我发现世界上有非常少的人明白这个道理。在大学里,公司里,彰显自己对难用的工具的掌握程度的人比比皆是。这不只是对于计算机系统,这也针对数学以及逻辑等抽象的学科。经常听人很自豪的说:“我准备用XX逻辑设计一个公理化的系统……”可是这些人其实只知道这个逻辑的皮毛,他们会用这个逻辑,却不知道它里面所有含混晦涩的规则都可以用更简单更直观的方法推导出来。
爱因斯坦说:“Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction.”我现在深深的体会到这句话的道理。想要简化一个东西,让它更“好用”,你确实需要很大的勇气。而且你必须故意的忽略这个东西的一些细节。但是由于你的身边都是不理解这个道理的人,他们会把你当成菜鸟或者白痴。即使你成功了,可能也很难说服他们去尝试这个简化后的东西。
那么现在我们来谈一下什么是“对用户友好”。如何定义“对用户友好”?如何精确的判断一个东西是否对用户友好?我觉得这是一个现在仍然非常模糊的概念,但是程序语言的设计思想,特别是其中的类型理论(type theory)可以比较好的解释它。我们可以把机器和人看作同一个系统: