间接等级解决了每个问题

时间:2008-11-13 22:47:44

标签: computer-science abstraction indirection

“计算机科学”中引用“间接水平解决每个问题”的含义是什么?

8 个答案:

答案 0 :(得分:58)

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

请注意你的抽象,至少我听到的完整引用是“你可以用另一层间接解决所有问题,除了间接层次太多的问题”。

答案 1 :(得分:10)

从书Beautiful Code

  

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

虽然contradicted by Wikipedia将这句话归功于David Wheeler。

答案 2 :(得分:4)

Kevlin Henney的必然结果是,“......除了太多间接层的问题”。

答案 3 :(得分:4)

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

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

例如,如果业务需要是,"我们需要确定采购的IP块的大小,以便为我们的所有站点提供IP地址。"

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

今天,IP地址表示您登录时的身份以及您所在的位置。

LISP使用间接级别来解决上述路由问题。

这样做需要付出一些代价:

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

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

还有一些额外的好处:

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

  • 减少路由表的大小

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

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

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

下图显示了新的间接层:

enter image description here

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

答案 4 :(得分:3)

它基本上意味着您应该将问题分解为更小的问题,直到问题很容易解决。

您可以将问题分成几个层次:

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

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

答案 5 :(得分:2)

这是一个非常重要的概念,这里答案很少。通常,所呈现的每个问题都不一定能通过直接代码调整来解决,而是以某种形式应用某些代理(忘记模式定义)。拦截& |事件的工具被严重低估。

答案 6 :(得分:0)

这句话的含义非常广泛。理解的关键是关注“问题”这个词。问题可能是编程问题/错误,将世界实体转换为其等效计算组件,与计算解决方案相关联的成本。让我们说你试图用自己开发一些东西的成本来解决这个问题,你可能想要考虑另一位专家为你做更多便宜的时间和金钱。这是间接的另一种用途

答案 7 :(得分:0)

它源自_Bulter Lampson:

<块引用>

“计算机科学中的所有问题都可以通过另一个间接层次来解决”

这显然是一个格言,并不打算从字面上理解。这当然不是一个可证明的定理。