这是一本讲Unix编程的书,然而在这本书里,我们将反复提到“文化”、“艺术”以及“哲学”这些字眼。如果你不是程序员,或者对Unix涉水未深,这可能让你感觉很奇怪。但是Unix确实有它自己的文化;有独特的编程艺术;有一套影响深远的设计哲学。理解这些传统,会使你写出更好的软件,即使你是在非 Unix 平台上开发。
工程和设计的每个分支都有自己的技术文化。在大多数工程领域中,就一个专业人员的素养组成来说,有些不成文的行业素养具有与标准手册及教科书同等重要的地位(并且随着专业人员经验的日积月累,这些经验常常会比书本更重要)。资深工程师们在工作中会积累大量的隐性知识,他们用类似禅宗“教外别传” 的方式,通过言传身教传授给后辈。
软件工程算是此规则的一个例外:技术变革如此之快,软件环境日新月异,软件技术文化暂如朝露。然而,例外之中也有例外。确有极少数软件技术被证明经久耐用,足以演进为强势的技术文化、有鲜明特色的艺术和世代相传的设计哲学。
Unix 文化便是其一。互联网文化又是其一——或者,这两者在 21 世纪无可争议地合二为一。其实,从 1980 年代早期开始,Unix 和互联网便越来越难以分割,本书也无意强求区分。