返回介绍

2.3 我们要记住:Dijkstra 说他只讨论了 顺序机器 上的正确的逻辑

发布于 2024-12-15 23:01:44 字数 1489 浏览 0 评论 0 收藏 0

我们已经触及到计算系统的构成,以及在这样的计算系统上正确计算的诸多要素。一些看起来很明显的要素包括:数、数据(标识、值)和正确的逻辑描述,另一些不太明显的要素包括:算、思维方法和确定性。

Dijkstra 接下来用顺序逻辑统一了分支与循环逻辑,使之成为“顺序机器”上的最基本的 正确的逻辑描述 。他说明,我们可以从形式上将上述三种逻辑表示为图 1 所示的图形。

图 1 三种逻辑表示

很自然地可以发现:分支逻辑与循环逻辑其实都只有一个入口和一个出口,因此它们也自然可以作为顺序逻辑中的S1…Sn,而不会破坏顺序逻辑的基本规则。更进一步,既然分支逻辑与循环逻辑是可被证明为正确的,并可以作为“顺序机器”本质所设定的顺序逻辑的一部分,那么由这些逻辑构成的“程序”也就必然是正确的。

这里的所谓正确,包括三个意思:一是程序能 正确地描述 人的思维;二是程序可以由机器 正确地执行 ;三是机器执行的结果 正确地符合 人的思维的预期。不过这所有的“正确”仍然依赖两项前提:一是计算系统是一个“顺序机器”,二是在每一个用于顺序计算的阶段(S1…Sn)中的数据,是确定的。

最后这一点——数据的确定性,正是顺序逻辑的必然结果:对于一个确定的逻辑而言,一个确定的输入,必有一个确定的输出。所谓输入与输出,若是数据,则在“第 1 章 数,以及对数据的性质的思考”中所述数据的内聚与外延的性质保障了这一结果;若是逻辑,则如上的形式化证明便保障了这一结果。

  1. 艾兹赫尔•戴克斯特拉(Edsger Wybe Dijkstra),荷兰计算机科学家,结构程序设计之父。1972 年图灵奖获得者。本书对 Dijkstra 的观点的引用,均出自《结构程序设计》的第一篇,即“结构程序札记”。于此,后文中不再复述。
  2. Dijkstra 是用数学方法来证明分支与循环(和递归)逻辑的正确性,我们同样可以把这个证明过程看成一个映射关系,即上述逻辑可以视为思维方法在计算系统中的映射。
  3. Dijkstra 提到了抽象,但没有对抽象在逻辑证明中的作用给出类似的数学证明——尽管他事实上在后面(不太明显地)给出了一个抽象逻辑证明的实例。
  4. Dijkstra 并没有用同样的方法来证明顺序逻辑,而顺序逻辑正是图灵机的本质设定。因此,在 Dijkstra 的论证中,他强调“只讨论关于‘顺序机器’的程序”。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文