“一切皆文件”的模型是 UNIX 操作系统最重要的统一性设计理念(详见《UNIX编程艺术》,作者 Eric S. Raymond)。在其之后诞生的 Microsoft Windows、GNU/Linux、Mac OS X 等操作系统也都继承了这一理念。这个将复杂现实抽象为通用模型的设计思想从最初 UNIX 操作系统的诞生就一直贯彻于计算机软件开发中。

我们学习计算机编程的最终目的不是为了学会某个语言的语法规则,而是为了掌握抽象与简化复杂工程问题的设计方法和技术能力。要想实现复杂系统的抽象,一方面要能透过各种具体案例表面上的不同,从中把握与提炼出它们内在的共性。例如,这里所说的不同类型的“文件”,包括控制台、键盘、打印机、网络套接字以及经典意义上的文件等,它们都具有双向通讯模式的共性。从不同之中提炼共性,要靠我们的理解力与洞察力。

另一方面,要通过对复杂现象施加“约束”、舍弃一些细枝末节的差异,这样才能做到简化与统一。例如,在与上述不同类型“文件”交互的过程中,实际上都隐式地约束了交互内容应以信息流(stream)的方式在调用者与被访问目标之间串行地传递,而非随机跳跃的方式。之所以采用“流”这样的说法,是因为对于文件字节序列访问的机制包含着这样的隐喻:即,在不人为定位文件指针的情况下,对于字节序列的读取与写入一般是按从前向后的顺序逐字节进行的,而不是以随机跳跃的方式进行,亦不会从后向前地反向操作。因此这个操作模式如同水流,是单向的、连续的、顺序的。以“流”的概念对不同类型的操作加以统一,这就是对具体情况做出了限制和删减。这种观念的提出靠的是我们的判断力、决策力与创造力。