针对编程领域,“Turtles all the way down”是什么意思?

11

我经常听到这个短语,但并不完全理解它的含义。它是什么意思?如果有可能,请举个例子。

谢谢!


3
这句话更多地是来自于流行文化中的一个短语,可以应用于计算机科学的许多领域。 - Michael Petrotta
通道文档在此定义:https://channels.readthedocs.io/en/latest/introduction.html#turtles-all-the-way-down - MattCochrane
4个回答

12
这个表达式的一个用法是指一种编程风格,其中存在非常深的调用堆栈。你可能会看到一个名为 Grobble 的方法并想知道它的作用,所以你打开定义并看到了这个:
class FooHandler
{
    void Grobble(Foo foo)
    {
        foo.Grobble();
    }
}

那么你现在看的是 Foo.Grobble

class Foo
{
    FooImpl _fooImpl;

    void Grobble()
    {
        _fooImpl.Grobble();
    }
}

这会带你到FooImpl,它看起来像这样:

class FooImpl
{
    void Grobble()
    {
        this.Grobble(false);
    }

    // etc...
}

在深入代码的过程中,仍然无法看到尽头时,你可以沮丧地喊出“这就是一只又一只的乌龟!”

这个比喻指的是地球在一只乌龟的背上。那这只乌龟又站在什么东西上呢?还是一只乌龟...以此类推。

注意:metaphor 指的是隐喻的意思。


如果你成功地将一个 continuation 传递给它自己,那么或许可以字面意义上实现这个。 - Antimony
5
好吧,知道了这个,又知道我已经花了两年时间在遗留代码上工作......我错过了至少100次喊出这句话的机会! - Mario Zigliotto

6

这通常指的是自托管编程语言,其中解释器或编译器是用被解释/编译的相同语言编写的。它也可以指该语言的库是用该语言本身编写的。

Smalltalk和Lisp以此闻名。


在Smalltalk的语境中,它也可能是指Seymour Papert的LOGO编程语言,其中LOGO的海龟可以被指示移动并生成图形。在Smalltalk中看到各种图形对象,人们会惊叹:“没有像素 - 这就是一直有海龟!” - kiplantt

1
“龟派气功”是一个常用于指代无限递归的短语。例如,什么是最小的整数?其实没有。-2比-1小,-3比-2小,以此类推。没有底部。这个引用的原始来源是回答“如果世界在一只乌龟的背上,那么这只乌龟站在什么上面?”的问题。不管怎样,我不知道它有任何编程特定的含义。

1

有时候,人们用它来指代“纯”面向对象(或函数式)语言。在Java、C#、C++、Objective C和Delphi等语言中,存在着不像对象那样行为的本地类型(如int)。而在Smalltalk中,这种错觉得到了更好的维护。


在 JavaScript / node.js 中 - CommaToast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接