2

来自http://www.golfscript.com/golfscript/syntax.html

Ruby 起步很慢,所以 GolfScript 更慢。GolfScript 并没有天生的慢。除了字符串评估方法,所有东西都可以静态编译成 C,并且可以进行分析以删除大部分(如果不是全部)堆栈使用。我不打算制作一个更高效的解释器,因为语言的目的不是数值分析,但是如果有人想创建一个,我会很高兴使用它。

有人可以用简单的例子来说明什么是堆栈,消除所有堆栈使用意味着什么以及如何做到这一点?

4

1 回答 1

1

GolfScript 是一种基于堆栈的语言。它的行为类似于RPN 计算器。每个内置函数都会消耗一些最顶层的堆栈值,并将其结果推回堆栈以供将来操作。如果你想测试一个数字是否小于一个常数,你可以使用类似重复值.5<的代码.(因为否则它会被消耗和丢失),然后推送常数。最后<弹出副本和常量并推回结果。编译器可以很容易地看到类似的模式.X<并生成跳过中间步骤的代码(只需“窥视”堆栈顶部并进行比较)。这将属于“窥视孔”优化类别,

如果堆栈顶部的值来自复杂(不可预测)的计算,有时这是不可能的。

于 2014-03-06T19:15:31.233 回答