今天我们开始学习第四部分的内容:最终用户应用架构。该部分的内容分为两章:第十一章解释了一组非常简单的组件和一门扩展语言如何将一个不起眼的文本编辑器编程了一个操作系统,成为程序员工具箱中的瑞士军刀;第十二章展示了冲刺和统计评审这样的社区过程如何帮助软件架构从简单的骨架演变为美丽的系统。
第十一章为我们展示了GNU Emacs的故事:滋长的特性是其优势。首先我认识到了Emacs是什么。它和我们经常使用的其他文本编辑器类似,当我们用Emacs打开一个文件时,将弹出一个窗口,并显示出该文件的内容,我们可以对其内容进行修改,然后保存这些修改后退出。Emacs架构所采用的是在交互式应用程序中应用广泛的模型——视图-控制器模式。在该模式中,模型是程序所操作数据的底层描述;视图则是向用户展示数据的方法;而控制器则负责实现用户与视图的交互,并对模型进行相应的更新。Emacs不断滋长的特性是其架构的直接成因。在评价一个应用程序的用户界面复杂度时,有两个常见的维度:要维护的模型的复杂度,以及操作该模型的命令集的复杂度。Emacs在避免模型的复杂度的问题时,采用了十分简单的方法:不支持样式表、自动编号小节、页眉/页脚、表格等在现代字处理软件中很常见的功能。
第十二章给我们描述的是当集市开始构建教堂。在本章的从并发到调度的示例中,我了解到了如何分析问题以及如何实际地解决它。要确保并发处理是用来编写出更好的程序,而不仅仅是提供一个填充线程的工具。它和调度是不一样的:调度需要告诉程序将执行什么操作,以及按什么顺序执行。我们应该要学会回头做些投入甚至重新思考一些架构性结构问题,从而对我们所开发的软件产生显著的改进,我们的头脑中需要一个一直寻找问题的解决方案,就能帮助我们在开发软件的过程中,完善架构从而使我们的软件变得更好。