间接等级解决了每个问题

Vic*_*cky 35 computer-science abstraction indirection

引用"间接水平解决每个问题"的含义在计算机科学中意味着什么?

use*_*288 58

通常,这意味着通过提高抽象级别,可以使问题更容易理解/解决.

但要小心你的抽象,至少我听到的完整引用是"你可以用另一层次的间接解决每一个问题,除了间接层次太多的问题".

  • 这不是完整的报价; 这是其他人在事后提出的更正版本.不过,这是对的. (9认同)
  • 我认为重要的是要记住,这不是“抽象级别”,而是“间接级别”。他们不鼓励“抽象”实体,而是在流程中插入一个额外的步骤。就像获取指针的值一样,我们不会将原始内存抽象为类型化变量,但我们要求用户首先访问类型化对象(以实现所需的额外逻辑,例如验证),然后从那里,我们让用户访问原始内存。 (4认同)
  • 我不确定“让问题更容易理解”是正确的解释。 (3认同)
  • 抽象不是间接,巴特勒·兰普森经常以这种方式被错误引用。准确的引用是_““计算机科学中的所有问题都可以通过另一个间接层次来解决”(巴特勒·兰普森)_ - 这是一个_格言_,并不打算从字面上严格理解为可证明的定理。 (2认同)

mik*_*ong 10

美丽的代码:

计算机科学中的所有问题都可以通过另一层次的间接解决,"这是一个着名的引用归功于巴特勒兰普森,这位1972年设想现代个人计算机的科学家.

虽然这与维基百科相矛盾,后者将这句话归功于大卫·惠勒.

  • 在本章的最后,本书提到Lampson将引用归因于David Wheeler,所以维基百科并没有真正与之矛盾,只是跟随间接,如果你愿意的话:)来源. (57认同)

Phi*_*bbs 9

Kevlin Henney 的推论是,“......除了太多间接层的问题”。

  • 在我自己听到它之前,我听到了它的推论。与需要添加间接层的情况相比,我更频繁地遇到这个推论。 (2认同)

l3x*_*l3x 7

首先我们必须了解添加间接级别的含义。

通常,添加间接级别意味着我们能够提供解决问题的替代方法,最好还具有一些额外的好处。其他时候,当当前没有任何工作时,间接可能是我们唯一的解决方案。

例如,如果业务需求是“我们需要决定采购多大大小的 IP 块,以便为我们的所有站点提供 IP 寻址”。

问题是,如果我们选择的块太小,那么我们就需要买一个更大的块。我们的管理员不仅必须获取另一个块,而且现在还必须在我们的路由表中注入额外的前缀才能访问我的站点。这就需要额外的时间、成本和复杂性。有没有更好的办法?

如今,IP 地址意味着您登录时的身份以及您所在的位置。

语言信息服务程序使用间接层来解决上述路由问题。

这样做需要一些成本:

  • 现在必须存在一个支持 LISP 的新服务器才能将地址​​映射到站点

  • 需要两个命名空间(一个用于位置,另一个用于 ID)

还有一些额外的好处:

  • 添加新块时消除站点重新编号

  • 减少路由表的大小

  • ISP 可以进行更改(将站点从一台主机移动到另一台)

  • 节省 IPV4 地址空间(未分配给主机的定位器地址空间)

  • 通过 LISP,ISP 可以为每个站点分配更少的地址

下图显示了新的间接层:

在此输入图像描述

LISP 通过添加一个新的间接层解决了这个问题,简化了一些事情,但并不完全简单。它是不同的,并且在很多方面都更好。


Tom*_*eys 5

这基本上意味着你应该把你的问题分解成更小的问题,直到问题很容易解决。

你把问题分成几个层次:

  • 解决问题的套路
  • 他们调用:理解问题空间的例程
  • 他们调用: 执行小步骤的例程(加载文件,旋转一些位,写入输出)。

顶部的例程(解决问题的例程)是从解决问题的实际方法中间接/抽象出来的,使它们在以后以稍微不同的方式解决同一问题时更加灵活。