答案是记事本通常编辑你电脑硬盘上的文件(电脑极客称之为文件)。当你打开一个文档时,记事本会将它从磁盘复制到计算机的内存中。当你通过输入来添加或删除文本时,程序会改变这个内存副本的内容。(在这个例子中,我们没有打开一个现有的文档,但是程序在内存中创建了一个新的文档,并将其命名为“Untitled”。)当你完成文档的工作时,程序必须把内存副本写回磁盘,这个操作叫做保存该文件。否则,你所做的工作就会消失,你会非常生气。
程序员以这种方式编写程序(将文档从磁盘复制到内存,在内存副本上进行更改,然后将其写回磁盘),因为这对她来说是最简单的。这是一个编写程序的好方法。从磁盘(带有可移动部件的旋转铁片)读取或写入字符大约要比在内存中(电子以光速移动)慢1000倍,所以这很可能是让这个简单的程序在内部工作的最佳方法。
但是程序员的用户界面直接暴露了这些工作方式。这怎么会是坏事呢?她在强迫你理解她是这样写程序的。你不需要知道或关心她的程序的内部工作来成功地使用它,就像你不需要知道或关心你的汽车引擎是使用燃油喷射还是化油器来驱动它。
你通常不会考虑这个程序的工作方式。大多数人认为编辑计算机文档类似于纸笔方法(还记得吗?)你用铅笔做记号,它们就在纸上了。把你不想要的擦掉。如果你不想要,就把纸揉成一团扔了。你所做的工作是永久的,除非你花费精力去摆脱它。但这不是“记事本”给你的选择。每一个电脑新用户都会遇到这个问题——选择“不”,在这种情况下,Notepad会丢弃你已经完成的工作,希望这并不是很多。最终,用户学会了像计算机程序一样思考,或者更准确地说,像编写了这一大堆代码的程序员一样思考。用户界面设计大师阿兰·库珀将“电脑通用户”定义为受过多次伤害,以致疤痕组织足够厚以至于不再感到疼痛的人。
如果消息框中出现这样的问题:“扔掉你刚刚做的所有事情?”这是完全相同的问题,只是从用户而不是程序员的角度提出的问题。但程序员只考虑她的程序的操作,写入磁盘,并问你是否要这样做。她要求你穿她的鞋;她都没想过要和你在一起。如果她知道,她会用另一种方式问这个问题。然后,她可能会看到问这个问题的荒谬之处,并设计一个更好的用户界面,即使底层程序以相同的方式工作。
个人理财软件“微软理财”(Microsoft Money)做得更好。它的设计者明白,用户的心理模型是一个支票簿,他的屏幕看起来像一个支票簿寄存器(图1 - 2).对于新用户来说,它会让人感到熟悉和舒适(当然,相对而言)。您当前正在进行的检查显示为不同的颜色。您输入支票的详细信息并按enter。复选框向上移动,改变颜色使其看起来与其他复选框相似,并在工作区域中出现一个新的空复选框。如果你打开声音,你会听到收银机发出的“ka-ching”的声音。5程序不会问你是否保存支票。按下Enter键的动作告诉程序您希望保留该信息。如果您后来改变了主意,想要更改一个复选框上的数据或完全删除一个复选框,您可以在注册表中单击该复选框并输入新的信息。程序什么时候把数据从磁盘读到内存,什么时候又把它写回来?我不知道,也不在乎。我不想,你也不想。程序的用户界面遵循你的思维模式,而不是强迫你去学习和处理程序员的内部设计选择。
微软货币的用户界面,看起来像一个支票簿
这是一个更好的设计用户界面的方法。作为一个用户,我不想去想程序本身。我想考虑这个项目为我做的工作——例如,我有足够的钱支付账单吗?另一位用户界面设计大师唐纳德·诺曼(Donald Norman)在他的一本书的标题中很好地表达了这种感觉:看不见的电脑(麻省理工学院出版社,1999)。理想情况下,我根本不会考虑这个项目。
这就是为什么程序很难使用,让你觉得自己很笨的一个主要原因。你被迫像程序员那样思考,即使你不是程序员,也不想成为程序员。你不需要这么做。你不必像机械师一样思考开车,你不必像医生一样思考吃阿司匹林,你也不必像屠夫一样思考烤汉堡。你花了血汗钱买这个产品。程序员的工作是适应你,而不是反过来。