1.1简介
1.1.1大型程序的问题
当遇到一个问题时,去单独解决设计一种算法去解决它,没有从整体上去考虑大型程序的设计构架,功能模块等问题,而是将杂碎的方法用于解决大型问题注定会失败,因此我们首先必须采用一种一致的、统一的和逻辑的方法,也必须仔细遵守程序设计的重要原理。
1.1.2问题说明
处理大型问题时,首个主要障碍就是准确地判断这个问题是什么。有必要将模糊的目标、矛盾的要求和可能未明确说明的需要转换城能够进行编程的、精确规划的项目。
1.1.3程序设计
一个大型程序的每一部分都必须得到妥善地组织,清晰地书写和全面地理解,否则它的结构将被遗忘,也不再能够在以后某个时间连接到项目的其他部分,而那些部分可能由另一个程序设计员来完成。
1.1.4数据结构的选择
对于一个项目,通常会有很多可用的不同方法和算法。算法设计中可变性的最大余地通常在于存储程序的数据的方法:
×他们彼此如何被安排
×哪些数据保存在内存中
×哪些在需要时被计算
×哪些保存在文件中,这些文件又如何安排
1.1.5算法分析
当有若干不同的方法可以用来组织数据和设计算法时,开发一个用来推荐选择的标准就变得很重要了。因此我们将专心分析各种条件下的算法行为。
1.1.6测试和验证
调试程序的困难比程序规模的增长要快得多。
1.1.7程序正确性
×减少错误数目,使得更易于发现那些剩余的错误。
×能够预先验证我们的算法是正确的。
×能够提供测试程序的方法,使得我们有理由确信这些程序不会行为异常。
这些方法的设计是我们的另一个目的,但它却并非完全在我们的能力可及的范围之内。
1.1.8维护
即使在一个程序开发完成、全部调试并交付使用后,仍然需要大量的工作来维护此程序的有效性。