10

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

谢谢你!

4

4 回答 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...
}

越往深处看代码,还是看不到尽头,你只能沮丧地惊呼“一路下来都是乌龟!”

参考是地球在乌龟背上的隐喻。乌龟站在什么上面?另一只乌龟……等等。

于 2012-08-18T20:58:00.097 回答
5

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

Smalltalk 和 Lisp 以这种方式而闻名。

于 2012-08-18T20:58:58.650 回答
1

Turtles all the way down 是一个短语,有时用来指代无限递归。例如,最小整数是多少?没有一个。-2 小于 -1,-3 小于 -2,依此类推。没有底。引用的原始来源是对“如果世界在乌龟的背上,乌龟站在什么上?”这个问题的回答。无论如何,它没有我所知道的任何编程特定含义。

于 2012-08-18T20:56:52.260 回答
1

它有时用于指代“纯”面向对象(或函数式)语言。在 ao java、c#、c++、Objective c 和 Delphi 中,有一些本机类型 (int) 的行为不像对象。在 Smalltalk 中,这种错觉保持得更好。

于 2012-08-21T21:47:13.633 回答