撸了将近两个礼拜,撸了一个玩具编程语言的内核,也算对当初编译原理的老师有了交代。
想到一个问题,就是主流编程语言的函数调用都是怎么实现的,是否需要一个栈来保存状态(比如我的实现方法),如果是的话不用担心爆栈吗?
比如如果我要用类似这种调用
a = 1
def in():
print(a)
def out():
a = 2
in()
这里,执行out()
的话in
里调用的应该是a=2
而不是a=1
。
以我菜鸡的水平,我的实现方式是以把上文中的函数的 ast 拷贝一份,贴到调用的那个地方,本质上是压了个栈。那很自然程序员就会想到一个问题,如果极端情况下嵌套了很多函数调用呢,栈会不会爆掉?我们都知道比如 python 默认限制递归层数不能超过 1000.....
比如如果我要写一些函数式编程的代码 a.in().out().in().out().in()........
岂不是问题很大?
(不要跟我说函数式调用方式跟上文的例子根本不一样 orz )
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.