作者:保罗·W·霍默(Paul W . Homer)
软件开发人员最初一般将软件理解为是由命令、函数和算法构成的系统。在学习构建软件的方法时,从面向指令的视角(instruction-oriented view)来认识软件确有帮助,但也正是这一视角,在开发人员尝试创建较大规模的系统时,开始造成阻碍。
如果稍稍后退站远一点看,计算机只不过是能访问与操作一堆数据的时髦工具而己。对于了解管理庞大系统的复杂性,数据的结构处于核心地位。数以百万计的指令有其固有的复杂性,但是,我们可以把注意力集中于底层那些小得多的基本数据结构集上。
举例而言,如果想了解Unix操作系统,通过源代码逐行挖掘是不大可能奏效的。但是,如果你读过一本讲解Unix内部数据结构的书,由于数据结构与进程处理、文件系统等关系密切,因此,如果你读过了一本概括Unix内部数据结构的书,便可更好地了解UNIX在底层是如何运行的。从概念上来看,数据要比代码更加精炼,也更好理解。
代码在计算机中运行时,底层数据的状态在不断发生变化。在某种抽象意义上,可以认为任何算法都只是数据从一个版本到另一个版本的迁移(transformation)而己。我们可以把功能视为是“多个定义良好的迁移所构成的集合”(a larger set of well-defined transformations),在多个版本间连续推动数据的流