在机器的各个模块之间, 抽象为函数或者模块的定义、操作系统的定义, 但是它们的本质都是一样的: 它们的本质都是来告诉使用者“你可以使用我来做些什么”。
很多程序员会注意到这些机器界面的抽象, 也就是内部的界面, 让使用者尽量少的接触到实现细节。但是往往忽略了人和机器之间的界面。 虽然这样说可能有点牵强, 也许我们并没有忽略它, 但是它们会用非常不一样的设计思想来考虑这些问题, 他们没有把真正的人当成这个系统的一部分, 没有像对待其它机器模块一样,提供具有良好的抽象的界面给人, 他们貌似觉得人应该多做一些事情, 所以将纷繁复杂的结构暴露给人, 所以对"我们能够"
一个良好的用户界面应该是一些简单的设定, 用户应该用同样的方法来设置所有程序的所有参数, 因为它们只不过是从一个到值的映射, 至于系统在什么地方存储这些设定
- 这个系统有多个模块, 包括机器模块和人类模块
- 机器模块之间的界面使用通常的程序接口
- 人机交互的界面就是机器模块
- 每个界面必须提供一定的抽象, 用于防止使用者得到它不应该知道的细节, 这个使用
- 抽象使得系统具有可扩展性, 因为只要界面不变, 模块改变之后, 它的使用者完全不用修改