3.5 结构化程序设计

早期的计算机运算速度慢、存储空间小,主要应用于科学计算。因此那时的程序在结构

方面很简单,程序员主要追求的是精细的编程技巧,以期在有限的存储空间内尽快地计算出 结果。例如,在用汇编语言编程序时,如果要计算某个数 A 乘以 2,聪明的程序员不会用乘 法指令来做这件事,而是会采用左移指令:将 A 的二进制表示左移 1 位(右边补 0)①。这是 因为执行一条乘法指令所需的时间通常是执行一条左移指令所需时间的若干倍。可见,这个 时期的程序设计类似于手工作坊,全凭程序员个人的聪明才智写出高质量的程序。

随着计算机硬件技术的发展,计算机的应用领域越来越广,待解决的问题越来越复杂, 导致计算机软件越来越大型化、复杂化。这时,程序的运行时间和占用的存储空间不再是程 序设计的关注焦点,而软件的开发效率和可靠性取而代之成为程序设计的巨大挑战。高级编 程语言的发明大大提高了编程效率,改善了程序质量,但仍没有解决大型软件开发周期长和 可靠性差的问题,这导致了上世纪 60 年代的所谓“软件危机”。

为了应对危机,计算机科学家对程序设计方法和工具、软件开发全过程的管理和控制等 等课题进行了研究。在程序设计方法方面的研究导致了结构化、模块化、面向对象等方法的 产生,在软件开发过程管理和控制方面的研究则导致一个新学科——软件工程的创立。

在介绍结构化编程思想之前,我们先简单介绍一下按照软件工程的思想该如何开发一个 程序。