我现在正在阅读 SICP,并没有真正理解 5.5.6 SICP 的词法寻址中描述的词法寻址的必要性。

既然说
“因为我们的语言是词法​​范围的,任何表达式的运行时环境都将具有与表达式出现的程序的词法结构平行的结构”,我认为在运行时环境中搜索变量的成本相同在编译环境中搜索。
我们为什么要费心去实现一个编译环境呢?
我认为编译环境将具有与程序的词法结构平行的相同结构,这与运行时环境相同,不是吗?

最佳答案

词法寻址对于加速变量查找很有用。在没有词法寻址的情况下,查找变量需要遍历当前环境的框架,或其封闭环境的框架等,所有这些都在运行时 - 因为我们不知道变量被绑定(bind)在哪里,如果有的话。书中提到了这一点:



相比之下,词法寻址查找过程在编译时确切知道在哪里查找变量,从而大大减少了查找变量所需的时间:

关于compiler-construction - SICP第5章词法寻址的优势是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11068508/

10-09 02:59