文本编辑器的复杂性与设计权衡
1. 交互设计与复杂性处理
交互设计是一项涉及人机工程学和用户心理学考量的技能,相较于编写代码,这项技能更为少见,可能也更具难度。应对各种复杂性,更多地需要凭借洞察力而非方法。削减偶然复杂性,需留意是否存在更简单的做事方式;削减可选复杂性,则要依据具体情境判断哪些功能有价值;而削减本质复杂性,往往需要灵光乍现,从根本上重新定义所面临的问题。
Unix 传统强调简洁性,但其存在一个缺陷,即 Unix 程序员常认为所有可选复杂性都是偶然的,且 Unix 传统倾向于移除功能,而非接受可选复杂性。简洁的极简主义在很多层面让我们感觉良好,它能有效抵制软件系统不断添加考虑不周的功能这一自然趋势。然而,计算资源和人类的思考时间如同财富,其价值在于使用而非囤积。我们需要思考,设计极简主义何时会从一种有价值的自我约束方式,变成一种徒有其表的负担,即仅仅为了满足道德上的优越感,却牺牲了利用资源完成工作的能力。
2. 五种文本编辑器案例分析
为了深入探讨文本编辑器的复杂性,我们选取了五款不同的 Unix 编辑器作为案例进行研究。在分析这些设计时,我们可以参考以下一系列基准任务:
- 纯文本编辑:操作纯 ASCII(在国际化的今天,可能是 Unicode)文件,编辑器仅在字节或行级别处理,不了解文件的结构。
- 富文本编辑:编辑带有属性的文本,如字体变化、颜色或其他文本跨度属性(如超链接)。具备此功能的编辑器需能在用户界面的属性表示和磁盘上的数据表示(如 HTML、XML 或其他富文本格式)之间进行转换。
- 语法感知:语法感知的编辑器能识别输入事件的语法规则,例如在编程语言中识别代码块的开始和结束时自动调整缩进级别,还