深入实践DDD:以DSL驱动复杂软件开发
上QQ阅读APP看书,第一时间看更新

1.1 自顶而下、逐步求精

我第一次接触计算机程序设计是在上大学的时候,当时学习的第一门编程语言是Fortran。记得就是在这门课上,老师告诉我们,开发程序应该“自顶而下、逐步求精”。也就是说,不要求一步就编写出可执行的程序,我们可以面向问题的总体目标,抽象低层的细节,先构造程序的高层结构,然后再一层一层地向下分解和细化,最后一步编写出来的程序才是可执行程序。这实际上是一种分而治之的思想。

打个比喻,写程序应该像建造大楼一样,一开始要有设计任务书(甲方的需求),然后设计单位根据任务书做概念设计、方案设计、初步设计,可能还要进行所谓的扩大初步设计,之后是施工图设计,最后施工单位拿着施工图纸才能造出真正的建筑。

当时我就有醍醐灌顶之感,“自顶而下、逐步求精”,何其妙哉!

后来我才知道,这句话其实来自瑞士计算机科学家尼古拉斯·沃斯在1971年发表的论文《通过逐步求精方式开发程序》(Program Development by Stepwise Refinement)。这篇论文首次提出了结构化程序设计(Structure Programming)的概念。1983年1月,ACM在纪念Communications of the ACM创刊25周年时,从其1/4个世纪发表的论文中评选出了其中具有“里程碑意义的研究论文”25篇(每年一篇),沃斯的这篇论文就是其中之一。