函数调用帮你破解《盗梦空间》
2010年09月08日 14:54 女友网 】 【打印共有评论0

就有这么凑巧的事:上周还在看侯世达 (Hofstadter)先生的《集异璧》,这周就在电影院里看到了书中概念的演绎版——哈,说的当然是日前火爆酷炫的高分电影Inception啦。废话少说,赶快剧透。还没看过的同学们海涵了,虽说透穿了剧情也不会影响你观影的效果。

Inception抓人眼球的是它“梦中做 梦”和盗梦的情节设计。在层层深入的梦境里,人的意识逐步放松警惕,入侵者便可以趁机盗走储存在大脑中的信息。控制梦中的意识,“我做你的梦”,两个 人的思想在同一个大脑中争斗……这都是令人看得过瘾的狂野想象。然而身为一个业余程序员和《集异璧》忠实读者,看到人在梦里死了掉进迷失域(limbo) 再也出不来,我第一反应还是忍不住叫出来:“哇,堆栈溢出!”

堆栈是一个计算机术语,我看来看去,觉得Cobb这群人在剧中完成任务的方法就像出自程序员的手笔。你看每个梦,都是同样的一组人物,抱着同样的目标,只是换到了不同的场景里。这多像一个函数调用的过程啊。

也许你没听说过函数调用,但你也许炒过青菜。 通常我们会先热锅、放油,然后爆炒、加盐、出锅。那么从热锅到出锅的一整套动作就可以写一个名为“炒”的函数。如果我们为白菜调用这个函数,就完成了“炒 白菜”的任务;如果为空心菜调用这个函数,就完成了“炒空心菜”这个任务。你还可以自由发挥,为各种包菜、韭菜、胡萝卜调用同一个函数,就把它们都炒了。

Cobb先生当然不在乎炒的是什么菜,他的任 务是在Fisher的脑中播种下拆分公司的念头。他为Fisher先生设计的函数就是梦,让Fisher的潜意识瓦解的梦。在计算机程序中,一个函数内部 可以调用另一个函数,在第二层函数运行的过程中,第一层的函数就在等待,直到第二层函数返回了运算结果,第一层函数再利用这个返回的值来继续它自身的运 算。这么一比较,Cobb的精心设计实际上就是用一个梦去调用另一个梦,上一层梦境中熟睡的人们都在等待下一层梦境中的人完成任务。一旦成功,就用音乐或失去平衡的方式返还(在迷失域则是死亡),来结束上一层梦境。

<<上一页 1 2 下一页>>

免责声明:本文仅代表作者个人观点,与凤凰网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

  共有评论0条  点击查看
 
用户名 密码 注册
所有评论仅代表网友意见,凤凰网保持中立。
     
作者:佚名
凤凰时尚
热点图片1热点图片2
最热万象VIP
[免费视频社区] 锵锵三人行 鲁豫有约 军情观察室 更多
 
 
·曾轶可绵羊音 ·阅兵村黑里美
·风云2加长预告 ·天亮了说晚安
·入狱贪官菜谱 ·刺陵精彩预告片