gpt4 book ai didi

stackless - 编程语言是无堆栈的到底意味着什么?

转载 作者:行者123 更新时间:2023-12-02 22:03:22 25 4
gpt4 key购买 nike

根据这个答案

https://stackoverflow.com/questions/551950/what-stackless-programming-languages-are-available/671296#671296

所有这些编程语言都是无堆栈的

  • 无堆栈Python
  • Py
  • 口齿不清
  • 方案
  • TCL
  • Lua
  • Parrot 虚拟机

无堆栈对他们来说到底意味着什么?这是否意味着他们不使用调用堆栈?如果他们不使用调用堆栈,他们会使用什么?

最佳答案

What does it really mean for them to be stackless? Does it mean they don't use a call stack?

是的,差不多是这样。

If they don't use a call stack, what do they use?

当然,具体的实现因语言而异。在 Stackless Python 中,有一个调度程序,它使用最顶层的帧及其结果来启动 Python 解释器。解释器根据需要一次处理一个操作码,直到到达 CALL_FUNCTION 操作码,即您将要进入函数的信号。这会导致调度程序使用相关信息构建一个新帧,并使用展开标志返回给调度程序。从那里,调度程序重新开始,将解释器指向最顶层的框架。

出于多种原因,无堆栈语言避开调用堆栈,但在许多情况下,使用它是为了使某些编程结构变得更容易实现。规范的是 continuations 。延续是非常强大、非常简单的控制结构,可以表示您可能已经熟悉的任何常用控制结构(whiledoif开关等等)。

如果这令人困惑,您可能想尝试一下维基百科文章,特别是可爱的延续三明治类比:

Say you're in the kitchen in front of the refrigerator, thinking about a sandwich. You take a continuation right there and stick it in your pocket. Then you get some turkey and bread out of the refrigerator and make yourself a sandwich, which is now sitting on the counter. You invoke the continuation in your pocket, and you find yourself standing in front of the refrigerator again, thinking about a sandwich. But fortunately, there's a sandwich on the counter, and all the materials used to make it are gone. So you eat it.

关于stackless - 编程语言是无堆栈的到底意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/796211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com