《代码大全》笔记 02 - 用隐喻来更充分地理解软件开发

版权声明:知识共享-署名-相同方式共享(CC-BY-SA) https://blog.csdn.net/engrossment/article/details/84094822

第 2 章 用隐喻来更充分地理解软件开发

先来体验一下计算机科学领域中丰富多彩的语言,大量使用了形象的隐喻:

你走进一间安全严密、温度精确控制在 20℃ 的房间,并在里面发现了病毒、特洛伊木马、蠕虫、臭虫(bug)、逻辑炸弹、崩溃、论坛口水战、双绞线转换头、还有致命错误……

很正的科学观:

科学发展的历史并不是一系列从“错误”的隐喻到“正确”的隐喻的转变,而是一系列从“不太合适”的隐喻到“更好”的隐喻的转变,也是从不是很贴切的隐喻到更贴切的隐喻的转变,还是从一个方面暗示人们到另一个方面暗示人们的转变。

注意隐喻的使用,并不是用来说明算法步骤:

隐喻的作用更像启示(heuristic,启发、试探法),而不是算法(Algorithm)。

常见的软件隐喻:

  • “写作”代码。就像写文章一样把代码写出来。使用这样的隐喻来理解个人的小项目软件开发是合适的。但还是过于简单了,无论是像流水账一样写下去直到写完还是总写到一半就把草稿扔废纸篓,都不是明智的。
  • 培植系统。种下各种类型的种子,等到了秋天就收获丰盛的代码了。问题在于,暗示了人们无法对软件开发的过程和方式进行直接的干预,只能看天吃饭。
  • 系统生长。在培植系统的基础上,我们关注代码种子的发芽、生长,要时刻施肥、打理。这有点把大系统分解为多个小部分并逐步添加代码的意思了。也就是增量式开发。如今敏捷开发里吗很重要的思想也包含这层意思。
  • 建造软件。这个隐喻是从建筑行业借用过来的。包括著名的四人帮《设计模式》,pattern 这个词,也是从建筑中借用。还有,前两年《人月神话》的作者出了一本《设计原本》(The Design of Design),好厉害的名字。其里面也是大量篇幅讲到了建筑设计。基于发展很完备的建筑行业来隐喻,这次,可以把软件开发问题说得很清楚了。软件开发确实很复杂,还要慢慢领会。

廖杰良 - 2019-3-29

猜你喜欢

转载自blog.csdn.net/engrossment/article/details/84094822