所有软件活动包括根本任务——打造由抽象软件实体构成的复杂概念结构,次要任务——使用编程语言表达这些抽象实体, 在空间和时间限制内将它们映射成机器语言。其中次要问题相对来说是比较容易解决的问题,但是在总问题中,次要问题随着不断被优化解决,它所占的比例会越来越小,而根本问题所占的比重会越来越大,所以根本问题的矛盾越来越突出,越来越迫切的需要被解决,人们也提出了很多解决根本问题的方法,但是至今为止,仍没有很好的方法能够解决这些问题。但是相信随着技术的不断进步,知识的不断积累,根本问题终将被解决。
我们相信,无论是多么复杂和巨大的问题,我们都能够将其分解成为比较小的和简单的问题,通过我们对这些小问题的研究解决,大问题终将被我们所克服。
我们首先回忆一下以往解决次要问题的一些突破。软件领域中取得的最富有成效的三次进步,每一次都是解决了软件构建上的巨大困难。这三次进步分别是:高级语言、分时、统一编程环境。高级语言解决了一些次要的软件复杂度,是程序开发方法越来越接近用户的复杂度。分时保证了及时性,缩短了系统的响应时间,从而使我们能维持对复杂度的一个总体的把握。统一编程环境,它们主要通过提供集成库、统一文件格式、管道和过滤器,解决了共同使用程序的次要困难。通过次要问题的解决,我们对解决根本问题的信心大大增强,同时,我们已能够看到银弹出现的希望。
个人感受:对于一个软件来说,根本任务是对于整个项目的架构以及整体逻辑,次要任务才是使用编程语言来实现这个架构逻辑。而要想设计出完美的逻辑架构则需要对大量的编程语言有着深入的了解,现阶段所学的各种语言的真实目的不只是学会并使用它,更重要的是掌握它的精髓,借此去了解软件世界的真面目。在未来两年内,所学到的所有学科都只是软件世界的敲门砖,如果把这一切联系起来,则会发现一片新的世界。