大道至简:软件工程实践者的思想
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第三节 程序=算法+结构

编程作为一种行为时,我们只需要知道其逻辑方法就可以了。所谓编程实际上就是把一件事情交给计算机去做,你认为这件事该如何做,就用“程序语言”的形式描述给计算机。如果你原本就不明白如何去做,那么你也不要期望计算机去理解你想要做什么。

所以编程的第一要务是先把事情分析清楚,把事件先后的逻辑关系和依赖关系搞清楚,然后再去写代码实现。一接到任务就开始Coding的程序员,通常就是加班最多的程序员。

记住:积极工作和勤于思考都要占时间。

第一个完成关于编程本质思考的人,提出了一个公式“程序=算法+结构”提出这个公式(Algorithms+Data Structures=programs)的人是被称做“Pascal语言之父”的瑞士计算机科学家尼古拉斯·沃思(Niklaus Wirth)。这个公式是他的一本书的名字,他因为提出“结构化程序设计”的概念而获得1984年的图灵奖。正是他的学生菲力浦·凯恩(Philippe Kahn)创建了Borland公司,才有了后来的Turbo Pascal和Delphi。。这个公式的精彩之处,在于它没有任何的地方提及代码。甚至可以说,在这个公式里,代码是不存在的。

存在的只是思想。

算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。只要开发人员将这个程序的算法设计出来,并把结构描述出来,那么程序就定型了。剩下的事,简而言之,就是劳力活。

在计算机专业所学的课程中,同时讲述算法和结构的只有“数据结构”。现在,请你放下手边这本书,再去读读被你扔到不知哪个角落的《数据结构》。请仔细看看,你将发现,在所有的算法描述中,有且仅有顺序、分支和循环这三种执行逻辑。简单如顺序表,复杂如树、图,它们的算法都是用这三种执行逻辑来描述的。