谁首先想出了调用堆栈的想法?

时间:2013-11-27 14:51:01

标签: callstack

由于地方特性,它简单而快速有效。 您还可以通过仅调整一个指针来管理内存,即有限资源。

我认为这是个好主意。

  • 谁首先提出了调用堆栈的想法?
  • 从什么时候开始计算机有堆栈支持说明?
  • 是否有任何具有历史意义的论文?

1 个答案:

答案 0 :(得分:1)

据我所知,计算机从一开始就使用了一个调用堆栈。

堆栈本身最初由Alan Turing提出,可追溯到1946年。我相信堆栈首先被用作定义pushdown automatons的理论概念。

关于我能找到的调用栈的第一篇文章是由Dijkstra在Numerische Mathematik期刊上撰写的,名为“递归编程”(http://link.springer.com/article/10.1007%2FBF01386232)。

另请注意,调用堆栈主要是因为递归。实际上可能很难知道谁首先真正了解了调用堆栈的想法,因为如果你想支持递归,那么需要堆栈非常直观。请参阅Peter Van Der Linden撰写的Expert C Programming - Deep C Secrets的引用:

  

除了递归调用之外,不需要堆栈。如果不是   这些,局部变量,参数和的固定空间量   返回地址在编译时是已知的,可以分配   在BSS。 [...]允许递归调用意味着我们必须找到一个   允许多个局部变量实例存在的方法   有一段时间,虽然只会访问最近创建的 -   堆栈的经典规范。

这是第143页的第6章 - 如果你喜欢这种东西,我强烈建议你阅读它。

很容易理解,当人们想要跟踪调用链时,堆栈可能是正确的结构,因为保持的函数调用将以LIFO方式返回。