我经常听到这句话,但并不完全理解它的含义。这是什么意思?如果可能的话,有没有例子?
谢谢你!
这个表达式的一个用途是指一种编程风格,其中调用堆栈非常深。您可能会看到一个被调用的方法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...
}
越往深处看代码,还是看不到尽头,你只能沮丧地惊呼“一路下来都是乌龟!”
参考是地球在乌龟背上的隐喻。乌龟站在什么上面?另一只乌龟……等等。
这通常是指自托管编程语言,其中解释器或编译器是用正在解释/编译的相同语言编写的。它还可以引用以语言本身编写的语言的库。
Smalltalk 和 Lisp 以这种方式而闻名。
Turtles all the way down 是一个短语,有时用来指代无限递归。例如,最小整数是多少?没有一个。-2 小于 -1,-3 小于 -2,依此类推。没有底。引用的原始来源是对“如果世界在乌龟的背上,乌龟站在什么上?”这个问题的回答。无论如何,它没有我所知道的任何编程特定含义。
它有时用于指代“纯”面向对象(或函数式)语言。在 ao java、c#、c++、Objective c 和 Delphi 中,有一些本机类型 (int) 的行为不像对象。在 Smalltalk 中,这种错觉保持得更好。