《编程大师访谈录 (图灵程序设计丛书)


《编程大师访谈录 (图灵程序设计丛书)》
作者:拉默斯 (Susan Lammers)
第1篇 查尔斯·西蒙尼

>
什么 是 编程? 人们 对此 一直 各持己见。 有人 说 它是 科学, 有人 说 它是 艺术, 还有 人称 之为 技能 或 手艺。 我 认为 这 三方面 兼而有之。 我们 喜欢 说 它 蕴含 大量 艺术 成分, 但是 我们 都 知道 它 里面 更 多的 是 科学。

>
采访者: 当你 分析 某个 程序 时, 你 认为 什么样 的 代码 清单 或 算法 结构 在 审美 上 是 优美 或 悦人 的? 西 蒙 尼: 我 觉得 代码 清单 带给 人的 愉快 同 整洁 的 家 差不多。 你 一眼 就能 分辨出 家里 是 杂乱无章( 比如 垃圾 和 没 洗 的 碟子 到处 乱扔) 还是 整洁 如 新。 这也 许 意义 不大。 因为 光是 房子 整洁 说明 不了 什么, 它 仍 可能 藏 污 纳 垢! 但是 第一 印象 很重 要, 它 至少 反映 了 程序 的 某些方面。 我 敢 打赌, 我 在 3 米 开外 就能 看出 程序 拙劣 与否。 我也 许 没法 保证 它 很 不错, 但 如果 从 3 米 外看 起来 就 很糟, 我 敢 保证 这 程序 写得 不 用心。 如果 写得 不 用心, 那 它在 逻辑上 也许 就不 会 优美。

>
当然。 严格 来说, 对 编程 而言, 我 认为 我们 应该 知道 自己 想要 做 什么。 如果 不知道, 那么 有一个 过程 确实 是 解决 各种 问题 的 必经 之路, 那就 是要 弄清楚: 我 试图 做 什么? 目标 是什么?
采访者: 当你 调整 好 状态 真正 开始 编程 时, 第一步 会 做 什么? 西 蒙 尼: 编程 的 第一步 是 想象。 就是 要在 脑 海中 对 来龙去脉 有极 为 清晰 的 把握。 在这 个 初始 阶段, 我会 使用 纸 和 铅笔。 我 只是 信手 涂鸦, 并不 写 代码。 我 也许 会 画 些 方框 或 箭头, 但 基本上 只是 涂鸦, 因为 真正 的 想法 在 我 脑 海里。 我喜 欢 想象 那些 有待 维护 的 结构, 那些 结构 代表 着 我想 编码 的 真实 世界。 一旦 这个 结构 考虑 得 相当 严谨 和 明确, 我便 开始 写 代码。 我会 坐到 终端 前, 或者 换 在 以前 的 话, 就会 拿 张 白纸, 开始 写 代码。 这 相当 容易。 我 只要 把头 脑中 的 想法 变换 成 代码 写下 来, 我 知道 结果 应该 是什么 样 的。 大部分 代码 会 水到渠成, 不过 我 维护 的 那些 数据 结构 才是 关键。 我会 先 想好 数据 结构, 并在 整个 编码 过程 中将 它们 牢记 于心。

第2篇 巴特勒·兰普森

>
采访者: 你好 像 非常 排斥 复杂性。 你在 设计 系统 时会 力求 简单 吗? 兰 普 森: 对。 一切 都 应该 尽可能 简单。 但要 做到 这一点 你 必须 掌握 复杂性。 采访者: 你在 实践中 如何 做到 这一点? 兰 普 森: 控制 复杂性 有 一些 基本 技巧。 从根本上, 我会 分而治之, 把 事情 分解 开, 并 准确 描述 各个 部分 应该 实现 什么 功能。 这 会 变成 接下来 如何 行事 的 纲要。 如果 你 还没 想 清楚 怎么 写 规格, 那 表明 你 不明 白 具体 是 怎么回事。 接着, 你有 两种 选择: 要么 退 回到 你 真正 理解 的 另外 某个 问题 上, 要么 更 努力 地 思考。

>
采访者: 你 认为 要 写出 优异 的 程序 或 系统 是否 有赖于 特定 的 技术? 兰 普 森: 是的。 最重要的 目标 是 尽可能 准确 地 定义 系统 和 外界 之间 的 接口, 以及 系统 自身 各 主要 部件 之间 的 接口。 多年来, 我的 设计 风格 最大 的 变化 是 越来越 重视 待 解决 的 问题, 并 寻找 准确 定义 接口 的 技术。 这么 做 非常 值得, 不仅 能 更好 地理 解 程序 真正 做些 什么, 还能 鉴别 程序 的 关键 部分。 它 还可以 帮助 人们 了解 该 系统 是 如何 组合 在一起 的。 这才 是 设计 程序 最重要的 一环。

>
采访者: 程序员 需要 具备 什么样 的 素质 才能 写出 成功 的 程序? 兰 普 森: 最重要的 素质 是 能够 把 问题 的 解决 方案 组织 成 容易 操控 的 结构, 其中 每个 组件 都可 以用 简单 的 方式 说明。 有时, 成功 的 程序员 可以 做到 这一点, 但他 们 无法 解释 自己 做了 什么, 因为 他们 看不 到那 个 结构。 有些 人之 所以 成为 出色 的 程序员, 是因为 他们 可 以比 多数人 处理 更多 的 细节。 但是 根据 这条 理由 遴选 程序员 也有 不少 弊端, 它可 能 导致 程序 无法 由其 他人 维护。 眼下 这种 现象 好像 没 那么 多了, 因为 现在 更 流行 让 一个人 或 团队 设计 程序, 然 后再 雇 另一 拨 人 编写 所有 代码。

>
优美 的 程序 就 像 优美 的 定理, 它 会 优雅 地 完成 工作。 它的 结构 简单 明了。 人们 会说:“ 哦, 是的。 我 知道 怎么 做了。”

>
让 计算机 普及教育 见鬼 去吧! 它 实在 是 荒谬绝伦。 学习 数学。 学会 思考。 阅读。 写作。 这些 东西 会 更有 持久 的 价值。 学习 如何 证明 定理: 过去 几个 世纪 累积 下来 的 大量 证据 表明, 这项 技能 可以 运用 到 其他 许多 事情 上。 只 学 BASIC 编程 实在 不靠 谱。

第3篇 约翰·沃诺克

>
动手 做 任何 事情 之前, 我都 会 深思熟虑。 但 一旦 开始 做事, 我 就 不怕 把 它 扔到 一 边儿。 有 一点 非常 重要, 程序员 看待 一段 代码 应当 像 对待 一 本书 的 烂 章节 那样, 弃之 如 敝 屣。 千万 不要 过份 迷恋 一个 想法, 绝不 要 固守 某 样 东西 以致 不能 在 必要 时 把 它 丢掉, 这才 是 程序员 应有 的 态度。

>
绝不 要 假设 你 知道 的 东西 别人 不知道。 总会 有 聪明 的 家伙 横空 出世, 提出 更妙 的 算法, 或者 想出 更简单 的 方法 执行 某个 任务。 这一 行的 一个 诀窍 就是 尽早 认识到 这点, 迅速 采纳 并 善用 之, 而 不必 心 存“ 非我 创造 不可” 的 烦恼, 非要 用 自己的 方式 不可。

>
采访者: 你 编程 有 什么 诀窍? 沃 诺 克: 我不 知道 能不能 归结 到 几点 上。 我 前面 提到 过 一些。 不要 早 作 绑 定, 尽可能 推迟 决定 时间。 眼界 放宽 一些, 设计 要比 你 自认 为 需要 的 程度 更加 灵活, 因为 从长远看 你最 终会 需要 这样。 快速 让 某 样 东西 工作 起来, 然后 还能 弃之 不用。

>
从小 的 开始 实验 而 不是 大的 入手 学习。 不要 一头 扎进 周期 长达 两年 且 中间 不出 什么 成果 的 开发 当中。 最好 每两 个月 就要 出 点 成果, 这样 你 才能 进行 评估、 重组 和 重新 开始。

>
采访者: 小 公司 在 逐渐 发展 成 大 公司 的 过程 中会 碰到 什么 问题? 沃 诺 克: 诀窍 是 学习 惠普 的 做法, 把 公司 当作 20 家 不同 的 小 公司。 不断 拆分, 决 不让 它 发展 成 庞大 的 组织, 直到 没有人 嫌 它 大 为止。 在 工作 关系 上, 员工 数量 尽量 少, 工作 内容 尽可能 专, 并以 项目 为 导向, 这样 他们 才能 达到 最佳 工作 状态。 这也 是我 的 目标。

第4篇 加里·基尔代尔

>
如果 能学 会 如何 解决问题, 你这 一生 过得 应该 都会 不错。

>
遵循 非常 明确 的、 适合 自己的 流程, 虽然 这些 流程 可能 并不 适合 别人。 我会 先 画 数据 结构, 然后 花 很长 时间 思考 数据 结构。 在开 始 编程 前, 我会 一直 思考 整个 程序 的 流程。

>
程序 就 像机 械 装置 一样, 一段 代码 和 一段 代码 之间 的 工作 方式 与 一个 齿轮 和 一个 齿轮 之间 的 啮合 方式 非常 相似。 编写 程序 有点 像是 建造 传动 装置。 我 在 几年 前 写的 PL/ 1 语言 的 编译器 就是 一个 很好 的 例子。 人们 都说 在 微机 上 编写 编译器 是 不可能 的, 但 经过 了 几年 的 运行, 它被 认为是 现有 的 最优化 的 编译器 之一。 在 确定 数据 结构 之后, 我 就 开始 写 一些 小 段 的 代码, 并 不断 地 改善 和 监测。 在 编码 过程中 进行 测试 可以 确保 所做 的 修改 是 局部 的, 并且 如果 有 什么 问 题的 话, 能够 马上 发现。 整个 迭代 改进 的 过程 是 需要 速度 的, 至少 对我来说, 一个 快速 的 编辑、 执行 和 调试 周期 是 非常 重要的。 这个 方法 不能 用在 大型机 或 穿孔 卡 批处理 系统 上, 因为 在那 上面 无法 做 一些 小的 修改 并 查看 结果。

>
采访者: 在 编码 时, 你会 写 注释 吗? 基 尔 代尔: 很少, 除了 在 程序 开头 的 地方 写 注释 外, 唯一 加 注释 的 地方 就是 数据 结构。 我不 会对 代码 本身 加 注释, 因为 我 觉得 正确 编写 出来 的 代码 本身 就是 很好 的 文档 了。 在 写好 算法 后, 我 就 开始 直接 在 机器 上 写 代码 了, 甚至 不会 先写 在 纸上, 然后 再输入 到 计算 机中, 我 觉得 好像 没 那个 必要。 实际 的 编码 过程 对我来说 始终 有点 吓人, 因为 我不 知道 自己 写的 代码 是否 正确, 也不 知道 接 下去 会 怎么 写。 它 似乎 就 那样 冒了 出来。 有时候 我意 识到 代码 不是 很 正确, 但 直觉 也会 告诉 我, 它 会 涉及 别的 什么 东西—— 代码 最终 写出 来 时会 是对 的, 即 使我 在 写 代码 的 时候 并不是 很 明确 地 了解。

>
我很 讲求实效。 我喜 欢 编写 快速 而 小巧 的 程序, 喜欢 采用 清晰 而 简洁 的 算法。 我的
在 平静 的 时候, 我的 工作 节奏 会 放松 一些, 我会 提出 下一阶段 的 解决 方案。 我会 有 步骤 地 去 解决问题, 先把 问题 排好 次序, 然后 一次 一个 步骤 地 去 解决—— 步骤 A, 步骤 B, 然后 步骤 C。 我 试过 了, 除非 把 步骤 B 做完, 否则 就 无法 做 步骤 C。

第5篇 比尔·盖茨

>
我们 的 部分 策略 是 让 所有 程序员 在 进入 编码 阶段 之前 都 先 想 清楚 每一 件事 情。 编写 程序设计 文档 是 至关 重要的, 因为 在 把 问题 当做 算法 看的 时候, 问题 会 得到 很大 的 简化。 可以说 算法 是最 简单 的 形式, 从中 可以 看出 问题 在什么 地方 是 重叠 的。

>
程序员 会 一直 不断 地 思考 所 开发 的 程序, 无论是 开车 还是 吃饭。 不停 地 思考 问题, 需要 耗费 大量 的 脑力。

>
编写 程序 最重要的 部分 是 设计 数据 结构。 接下来 重要的 部分 是 分解 各种 代码 块。 在开 发 到那 一步 并 写出 代码 之前, 你 无法 敏锐 地 感知 那些 公共 子 例程 应该 是什么 样 的。

>
嗯, 首先, 项目 组 必须 由 能够 互相 尊重 的 成员 组成, 因为 这个 工作 需要 密切配合, 就 像是 打 一场 比赛 一样。 编程 项目 需要 很多 的 判断力 和 创造力。 有些 优秀 的 程序员 无法 融入 团队 工作, 他们 喜欢 干 自己的。 但我 觉得 优秀 的 一个 要素 来源于 学习 如何 与其 他人 一起 工作, 并 教导 别人。 我会 因为 和我 一起 工作 的 人 成长 为 优秀 的 程序员 而 感到 欣慰, 虽然 不像 我自己 写 程序 那么 开心, 但也 是 很好 的 事情。 我让 别人 成为 一名 优秀 程序员 的 方式 就是 坐下 来 和他 详谈, 给他 看 我 写的 代码。 在 一个 项目 团队 中, 你的 代码 也是 大家 的 代码。

>
成为 程序员 的 最佳 途径 是 编写 程序 并 研究 其他人 编写 的 优秀 程序。 我自己 以前 就是 去 翻 计算机 科学 中心 的 垃圾桶, 找出 他们的 操作系统 的 程序 清单。

第6篇 约翰·佩奇

>
如果 一个 产品 需要 四 到 五个 人 开发, 那 和你 自己 一个人 编程 时 采取 的 方法 是不同 的。 我 坚信 只能 由 一个人 来做 产品 和 高层 结构 的 设计, 最多 不能 超过 两个 人。 所有 的 设计 出于 一个 头脑, 才能 够 实现 和谐 与 一致。 如果 试图 取悦于 所有人, 让 一个 委员会 来做 设计, 你的 方向 就 错了。 那 绝对 是 致命 的。 所以 我 在 定义 阶段 会用 一个 人数 非常 少的 团队 来 工作, 然后 如果 有 必要, 再 扩大 团队 来 实施 编程 设计。 实施 设计 方案 所需 要的 队伍 越大, 就 越 必须 严格地 把 整个 系统 划 分成 可 管理 的 模块, 并 定义 好 相互 间的 接口。 除非 一个 程序 大 到 必须 由 两三个 人 以上 来做, 否则 不必 编写 很多 结构 化 程序 报告, 也不 用为 每个 步骤 都 编写 文档。

>
必须 了解 客户, 了解 计算机, 为 客户 和 计算机 设计 出 最 优秀 的 产品, 除此之外, 就 没有 什么 基本原则 了。 你 必须 了解 客户, 知道 他们 想要 什么。 这样 才能 为他 们 设计 出 合适 的 产品。 产品

>
为了 适应 变化 的 市场, 可以 从 两个 方向 调整 产品。 一种 发展 是由 计算机 及其 技术 驱动 的。 你会 发现 一种 新的 适合于 计算机 的 应用 程序, 可能 和 最初 的 设计 完全 不同。 这种 增长 会 产生 一种 与 最初 的 需求 完全 不同 的 需求。 例如, 如果 增加 了 排版 方面 的 业务, 你会 突然 意识到 个人 计算机 非常 适合 做 排版。 这 需要 的 软件 和 最初 设计 的 完全 不同, 并且 为了 易于 销售, 软件 功能 必须 强大。 另外 一种 发展 是由 客户 体验 的 变化 驱动 的。 在 越来越 了解到 计算机 能够 做些 什么 的 时候, 他们 对 功能 的 要求 提高 了, 但 并不 希望 复杂度 也 随着 增加。 他们 希望 新的 程序 能做 更多 的 事情, 但 仍能 保持 简单。

>
当你 在 复杂 的 程序上 艰苦 工作 时, 锻炼身体 是 很重 要的。 大部分 程序员 都 缺乏 身体 锻炼, 这样 会 失去 敏锐 的 思维。 往往 在 连续 完成 了 第二个 或 第三 个 工作 后, 身体 就 虚弱 了, 以至于 你会 产生 幻灭感, 你会 对着 镜子 说:“ 上帝 啊, 看看 我, 我为 什么 要 这样做 呢?”

>
采访者: 你 编程 的 过程 是什么 样 的? 佩 奇: 我会 坐下 来 想想 程序 要 做成 什么 样子, 然后 在 脑海 中 描绘 出 程序 的 部件。 我 倾向于 首先 聚焦 在那些 我 认为 可能 会有 问题 的 地方, 并 想办法 将它 们 弄清楚。 这 地方 看起来 很难, 那 地方 看起来 也 很难, 而 剩下 的 不过 是 些 普通 文件 和 很 熟悉 的 散 列表。 在 对 最难 的 部分 单独 处理 之后—— 也许 是 编写 一个 小 程序 来 证明 一些 理论—— 我对 整个 程序 就有 了 一定 的 信心 了。 有些 部件 很 简单, 有些 很难, 但我 知道 该 如何 处理。 然后 在开 始 实现 之前, 我会 定下 整个 程序 的 结构。 我 必须 相信 所 要做 的 是 可以 实现 的, 否则 就会 心烦意乱。 我 见过 一些 不成熟 的 程序员, 他们 很 害怕 达到 最终 的 目标, 他们 只 关注 了 程序 的 某些 部分, 马上 就 开始 编码 了。 他们是 从 一个 相对 次要 的 位置 开始 编程 的。 在 画 好 结构 草图 后, 我 就 一个 部分 接 一个 部分 地 去做 了, 并 确定 各部 分之 间的 接口。 我不 喜欢 那种 让人 不得 安宁 的 感觉, 就是 我 设计 了 东西, 却不 知道 那些 重要的 部件 是否 可以 构建 出来。 这种 感觉 让我 胆怯, 让我 无法 充满信心 和 活力 十足 地 开发 项目。 采访者: 如果 程序 的 某些 部分 不能 工作, 你会 把 整个 程序 废弃 掉 并重 新 开始 吗? 佩 奇: 在 付出 很大 努力 并 明白 了 为什么 在 我 之前 没人 能做 出 这个 东西 时, 我会 觉得 兴奋。 如果 能 解决 这个 问题, 我 就能 做出 一些 大家 都 认为 不可能 做到 的 事情。 这种 想法 让我 热血沸腾、 心跳 加快。 我喜 欢 这种 挑战, 就好 像 一只 狗 得到 一块 骨头—— 我是 不 会把 它 放下 来的。 我会 一直 思考 这个 问题, 不管 是 开车、 游泳 还是 沐浴。 我 就是 要跟 这个 问题 死 磕, 最终 找到 一种 解决 办法, 也许 会使 用 一些 没人 能想到 的 技术。 当然, 如果 最终 证明 这个 问题是 完全 无法 控制 的, 我也 会 放弃。 但 通常, 经过 漫长 而 艰辛 的 思考, 是 会 找到 问题 的 解决 方法 的。 它可 能不 是一 个 优雅 的 解决 方案, 也可能 不符合 所有 的 计算机 科学 规则, 但如 果 方案 可行, 管 那么 多 呢!

第7篇 C.韦恩·莱特莱夫

>
平衡 有很 多种形式。 代码 应当 干脆 精炼。 你 应当 可 以用 一句话 解释 任何 一个 模块。 如果

>
理想 的 模块 应该 有 一 页长。 如果 它 超过 一页, 我 就必须 重新 思考: 我 现 在做 的 是什么? 我 现 在做 的 不同 事情 有 哪 几件? 它们 该 不该 进一步 分成 不同 的 模块? 优雅 和 平衡 的 部分 要素 就是, 在 一个 程序 的 蛋糕 一样 的 层次 结构 里, 要在 某种程度 上 让 所有 的 模块 都 具有 相同 的 重量、 相同 的 大小、 相同 的 责任 和 相同 的 功能。

>
采访者: 平衡 对 程序 有 什么 帮助 吗? 莱 特 莱 夫: 平衡 使 程序 变得 可 维护。 当你 发现 一个 好的 平衡 点 时, 就 好像 你 发现 了 什么 基本 的 底层 物理 原理, 并且 依据 它 去 执行 一样。 当 东西 失去 平衡 时, 你就 知道 有 什么 事情 做错 了。 很可能 是 某种 内在 的 错误 使其 失去 了 平衡。 通常 来说, 当某 一 模块 过大 而我 有很 不 对劲 的 感觉 时, 我会 考虑 一下 我 所做 的 事情, 并且 重新 安排, 或者说, 重新 调整 一下 各个 部件。

>
采访者: 你会 在 程序 里 写 很多 注释 吗? 莱 特 莱 夫: 事实上, 不 怎么 写。 在 公司 里, 我 因为 写的 注释 不多 被人 批评 过。 我 发现 注释 可以 分为 两类: 一类 是 解释 显而易见 的 东西, 比 无用 还 糟糕; 一类 是你 需要 解释 非常 复杂、 有很 多 关联 性的 代码。 嗯, 我总 是 力图 避免 写出 复杂 的 代码。 我 写 程序 总是 力争 把 代码 写得 稳固、 清晰、 干净, 哪怕 是 需要 额外 多 写 五行。 我一 般 认为, 你 需要 写的 注释 越多, 你的 程序 就 越 糟糕, 肯定 是 哪里 出了 什么 问题 了。 好的 程序 并不 需要 很多 的 注释。 程序 本身 就应 该是 注释。

第9篇 鲍勃·弗兰克斯顿

>
音乐 和 其他 艺术形式 中, 我们 会试 图 遵循 一定 的 规范, 但 同时 我们 也会 在 某些方面 突破 这些 规范。 在 音乐 中有 很多 规则, 你 需要 知道 什么时候 突破 它们, 什么时候 遵循 它们, 就好 像 编程 一样。 教人 写作 的 时候, 可以 告诉 他从 列 提纲 开始, 这样 可以 使 文章 更有 组织 和 条理。 在编 程 领域, 有很 多 关于 组织 和 条理 方面 的 技术 可以 教。 如果 你是 一名 雕塑家, 你最 好 懂得 重心 在哪里, 或者 至少 对 重心 有点 感觉, 否则, 当作 品 倒下 来的 时候 是有 可能 砸死 人的。 在 艺术 领域, 你会 问自己 别人 如何 感知 你的 作品。 你会 尝试 建立 一种 特定 的 感性 印象。

>
对 所做 项目 的 进展 状况 有个 总的 认识 是 很重 要的。 从这 里 着手, 我会 仔细 考虑 设计 构想, 继而 制定 一个 程序 框架, 作为 后续 工作 的 基础。 然后, 建立 一个 工作 骨架 来 即时 地 满足 设计 需要, 同时 也可 提供 一个 途径, 在 需要 时 可做 相应 的 测试 和 加工。 可以说 程序 是有 组织 的, 而我 促进 了 形成 的 过程。 最后, 项目 会 进入 到 一个 阶段, 所有 的 原则 都已 规划 好, 我 要做 的 是 确保 所有 的 细节 都 考虑 周全 并 顺利 交货。 采访者: 对 你 来说, 现在 编程 比 你 20 年前 开始时 要 容易 吗? 弗 兰 克 斯 顿: 我 认为是 容易 了, 但我 仍在 试图 做些 更 复杂 的 项目。 有了 现代化 的 计算机, 你 发现 超出 自己 能力 的 地方 比 以前 多了。 比如, 我 认为 自己 在 学校里 是 一个 拿 分数 B 的 学生。 如果 我对 课程 感兴趣, 就会 拿 A, 如果 我不 感兴趣, 就会 拿 B, 这都 取决于 我自己 而 不是 科目 的 难易 程度。 同理, 在 编程 时 我会 利用 手头 的 工具 去 尽力而为。

第11篇 雷·奥奇

>
我 推崇 严谨、 一致 而 清晰 的 结构。 另外, 我 认为 软件 应该 高度 模块化 和 分层, 非常 灵活 地 运用 大量 文件 和 目录。 如果 你 必须 分别 构建 不同 组件, 那么 接口 自然 就会 更加 凸 显出 来, 要求 你 规范 这些 接口。

第13篇 鲍勃·卡尔

>
我 得到 的 一个 忠告 就是 尽可能 推迟 编码。 一旦 写了 一堆 代码 后, 就很 难 改变方向 了。 它 就 好比 混凝土 一样 成了 阻碍。 因此, 我 尽可能 推迟 编码, 但 程序设计 却 一直 在 我的 脑海 中, 从 没有 停止 过。

第14篇 杰夫·拉斯金

>
施 乐 公司 发表 过 几十 篇 文章, 有 谁在 意? 但是, 把 Macintosh 做出 来 并以 公道 的 价格 卖 上 几万 台, 你猜 怎么着? 那些 买 过 一台 或有 所 耳闻 的 人都 会 发现 位图 屏幕 和 图形 的 整个 想法, 还会 发现 单独 的 图形 和 文字 模式 已不 再 需要, 字母 不过 是 图形 的 另一种 形式, 不需要 额外 的 硬件 就可以 制作 花哨 的 字体。

>
是什么 促使 人们 形成 习惯?” 当 我 使用 一个 系统 时, 如果 可以 全神贯注 于 自己 要做 的 事情 而 不是 这个 系统 本身, 那 我 就是 最快 乐的。 系统 不应该 侵扰 用户。 我 系 鞋带 完全 是 出于 习惯, 并不 会 真的 思前想后 一番。 我不 会把 注意力 放在 系 鞋带 上。 我 希望 我的 系统 非常 简单, 它 不会 让 用户 分心, 妨碍 他们 完成 主 任务; 我 希望 我的 系统 用 起来 很 自然, 就 像 习惯 一样。 因此 我会 问自己:“ 到底 是什么 促使 习惯 的 形成?”

第15篇 安迪·赫兹菲尔德

>
在我看来, 只有 设计者 和 实现 者 是 同一 拨 人, 才能 把 工作 做好。 写 代码 的 人 就是 设计 代码 的 人。

打赏作者