最近我试图编译程序,像这样用GCC:检测在Python无限递归或动态语言
int f(int i){
if(i<0){ return 0;}
return f(i-1);
f(100000);
,它跑了就好了。当我检查堆栈帧时,编译器优化程序只使用一个帧,只是跳回到函数的开头,只将参数替换为f。而且 - 编译器甚至没有在优化模式下运行。现在,当我在Python中尝试同样的事情时 - 我碰到了最大递归墙(或者如果我设置递归深度太高,可能会发生堆栈溢出)。
有没有像Python这样的动态语言可以利用这些优化的好处? 也许有可能使用编译器而不是解释器来完成这项工作?
只是好奇!
很好的问题。在比较静态和动态语言的同时,我忘记了一切。 – WeNeedAnswers 2010-03-24 12:39:34