- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据这个答案
所有这些编程语言都是无堆栈的
无堆栈对他们来说到底意味着什么?这是否意味着他们不使用调用堆栈?如果他们不使用调用堆栈,他们会使用什么?
最佳答案
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 。延续是非常强大、非常简单的控制结构,可以表示您可能已经熟悉的任何常用控制结构(while
、do
、if
、开关
等等)。
如果这令人困惑,您可能想尝试一下维基百科文章,特别是可爱的延续三明治类比:
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/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!