2009-07-04 23:42:27
来自: AlbertLee
(转移blog中)
Next / 预见未来的评论



5
提示: 有关键情节透露
这个片子一点都不文艺。因此我很喜欢。因此本评论写给程序员看。
这是我见过的关于“未来”“时 间旅行“一类电影中剧情最严密,逻辑最自圆其说的一部片子。
我怀疑编剧是个程序员。
首先简单回顾下剧情:主角起初可以预见到两分钟内的未来情况,因此可以提前趋利避祸。后来他为了遇到了一个命中注定的女人,去尾行(tail)跟随她来到了大峡谷。他发现和这个女人在一起时,他可以预见到更远的未来。后面的剧情,就是被一些没看懂的人大骂被耍了的情节:主角预见到比较远的未来,在未来,他又不断产生各个分支去搜索各种结局,最后这条路径还是无法找到最优解(其实是获得了一个最差的结果,全都死掉了),因此在电影的最后,整条搜索分支都回溯回远点。
显然,他运用了递归的能力。这一点在电影的高潮,码头仓库一段体现的最淋漓尽致:他在每条岔路口都递归的去搜索。这个情节简直可以拿来放到计算机算法课上当课件用了。
其实在电影的最后,主角选择了和政府合作共同打击黑恶势力,还很狗血的说了几句挺哲理的话。但这就是结局么? 醒醒吧,这是编剧照顾文艺小资们的情绪故意卖的破绽。谁家用递归写个深度优先的搜索会只搜索一条分支呢?!
而那句很狗血的话:关于未来的一个特性就是每次你看着他时他会改变,因为你看着他了。
这分明是对side effect 的批判嘛,在另一部伟大的电影butterfly effect 中也有对 side effect 的深刻批判。因为有了副作用,程序的行为将变得不可预知,程序的正确性验证也就无从谈起。这是主角对纯粹函数式开发的深切呼唤。
通过FP还有另一个好处:并行
关于这段搜索的情节,有几点值得主义的:他同时并行执行了多个搜索任务。但是在电影里,又似乎不是纯粹的并行,因为其他的搜索分支会知道之前的搜索结果,进行剪枝。这算是搜索优化。
关于递归,大家基本上都认同吧。那么为什么起初主角只能预见两分钟,而后来尾随了一个mm后就人品大爆发了呢?真相就是他开始”尾递归”了。
关于电影名 “next” 。 这是表示迭代中止,跳转的语句。
另外,关于未来的计算,未来的过程,大家想起点什么来没??continuation。
think about it. 为了宣传FP的思想,老美居然拍了部电影,真是寓教于乐阿。
Next / 预见未来的评论




5
提示: 有关键情节透露
这个片子一点都不文艺。因此我很喜欢。因此本评论写给程序员看。
这是我见过的关于“未来”“时 间旅行“一类电影中剧情最严密,逻辑最自圆其说的一部片子。
我怀疑编剧是个程序员。
首先简单回顾下剧情:主角起初可以预见到两分钟内的未来情况,因此可以提前趋利避祸。后来他为了遇到了一个命中注定的女人,去尾行(tail)跟随她来到了大峡谷。他发现和这个女人在一起时,他可以预见到更远的未来。后面的剧情,就是被一些没看懂的人大骂被耍了的情节:主角预见到比较远的未来,在未来,他又不断产生各个分支去搜索各种结局,最后这条路径还是无法找到最优解(其实是获得了一个最差的结果,全都死掉了),因此在电影的最后,整条搜索分支都回溯回远点。
显然,他运用了递归的能力。这一点在电影的高潮,码头仓库一段体现的最淋漓尽致:他在每条岔路口都递归的去搜索。这个情节简直可以拿来放到计算机算法课上当课件用了。
其实在电影的最后,主角选择了和政府合作共同打击黑恶势力,还很狗血的说了几句挺哲理的话。但这就是结局么? 醒醒吧,这是编剧照顾文艺小资们的情绪故意卖的破绽。谁家用递归写个深度优先的搜索会只搜索一条分支呢?!
而那句很狗血的话:关于未来的一个特性就是每次你看着他时他会改变,因为你看着他了。
这分明是对side effect 的批判嘛,在另一部伟大的电影butterfly effect 中也有对 side effect 的深刻批判。因为有了副作用,程序的行为将变得不可预知,程序的正确性验证也就无从谈起。这是主角对纯粹函数式开发的深切呼唤。
通过FP还有另一个好处:并行
关于这段搜索的情节,有几点值得主义的:他同时并行执行了多个搜索任务。但是在电影里,又似乎不是纯粹的并行,因为其他的搜索分支会知道之前的搜索结果,进行剪枝。这算是搜索优化。
关于递归,大家基本上都认同吧。那么为什么起初主角只能预见两分钟,而后来尾随了一个mm后就人品大爆发了呢?真相就是他开始”尾递归”了。
关于电影名 “next” 。 这是表示迭代中止,跳转的语句。
另外,关于未来的计算,未来的过程,大家想起点什么来没??continuation。
think about it. 为了宣传FP的思想,老美居然拍了部电影,真是寓教于乐阿。
本评论版权属于作者AlbertLee,并受法律保护。除非评论正文中另有声明,未经合法书面许可任何人不得转载或使用整体或任何部分的内容。
> 去预见未来的页面
导演: 李·塔玛霍瑞
主演: 尼古拉斯·凯奇 / 朱丽安·摩尔 / 杰西卡·贝尔 / 托马斯·克莱舒曼 / Tory Kittles / José Zúñiga
类型: 动作, 奇幻, 爱情, 科幻, 惊悚
地区: 美国
片长: 96 分钟
上映: 2007-04-27

2009-07-04 23:57:54 简称为老陶
似乎还不能叫做递归,只是一个广度优先回溯吧。如果硬要往FP上扯得话,那么他搜索时扩展结点的方式是并行的,和map+filter差不多。2009-07-05 00:07:21 AlbertLee
应当是混合了广度和深度。 你是说 map filter 还是 map reduce ?FP 的一个好处就是方便并行,因为没有副作用,不会修改全局变量因此各个搜索人如可以方便的分配到不同的cpu上并行的执行。但是在电影里,又似乎不是纯粹的并行,因为其他的搜索分支会知道之前的搜索结果,进行剪枝。这算是搜索优化。
2009-07-05 00:15:56 简称为老陶
呃是这样,并行仅指某一状态结点扩展其子节点的时候。你说的那个会知道之前的搜索结果是躲子弹那块儿吧,那个搜索已经包含了好几次结点扩展的过程啦。2009-07-05 00:17:04 AlbertLee
我想的是路径搜索那段。不过本文纯粹戏说,呵呵2009-07-05 00:28:08 简称为老陶
嗯,这么说也对。不过关于时空悖论的,推荐你看Futurama,挺好玩的
2009-07-05 00:31:33 AlbertLee
我觉得这个不完全是个关于 时空悖论的,更像是计算机弈棋问题,player与命运进行博弈,假设他能知道各种结果,进行搜索剪枝。开始的时候用基于stack的naive算法,只能搜索几步。后来换了种算法,棋力大涨了。2009-07-05 07:51:24 zxn0
Lee 太牛了~~~2009-07-05 08:41:57 jt.rocky
大牛Lee。2009-07-05 09:56:21 [已注销]
我服了。2009-07-05 10:28:39 鼠标炸弹
妙谈2009-07-05 12:14:50 悟怡
太牛了2009-07-05 12:15:33 symbol:X
不错 哦,程序思维!2009-07-05 14:43:45 fnsoxt
看了你这个影评才看电影的,非常好看。同样热爱python2009-07-06 01:41:12 FLY
自从看了王小波,我觉得学理的更适合从文,呵呵2009-07-06 11:23:10 小路
我必须得说..数学也有这种概念,且一般人到了大学都可以接触到数学....愿意接触深的就接触到了..纯属巧合....偶当年用计算机的思维完全套用黑客帝国,竟然也能套同,比如计算机史上出过病毒杀病毒的理论来解释XX的存在..主角显然是一个病毒或者蠕虫一样的存在....
能不能解释为.黑客帝国用来宣传计算机安全知识呢?
2009-07-06 11:58:38 AlbertLee
是的。当时在金山毒霸时组里曾经组织过观摩《Matrix》,探讨计算机安全与杀毒软件。写过读后感。2009-07-07 04:01:07 王兽兽
大牛 鉴定完毕2009-07-08 22:02:00 雪影幽兰
很不错的角度~~的确不是女主角的神力,而是爱让他想方设法的想去知道更久以后的事,而灵光一闪的聪明:
在二分钟末尾预测下一个二分钟,and so on~~完全可程序化~~
2009-07-14 10:27:14 Smile
我决定再看一遍~~2009-07-14 12:18:37 非子临
以前有机会在影院看这部电影,我没去好好珍惜,现在想起来后悔莫及,如果再给我一次机会,我一定把这程序电影看完!2009-08-03 15:50:42 书ing...
哈哈~影评比片子有意思~2009-08-05 23:52:48 晓岩
有想法 很有想法!2009-08-21 09:17:30 念兹在兹
所有的时间系统都没有预见性,因为那样不稳定。2009-08-24 16:32:23 Scaube
烂片一部,有什么好说的2009-08-27 00:44:39 景天.rmvb
这评论NB2009-09-12 23:52:47 postino
评论貌似很不同,,见过新颖的有深度的,没见过这么新的2009-09-23 23:37:28 果仔
影评有创意,但是LZ是否想太多。。。。。。2009-10-03 15:03:54 黑色大丽花
wow程序员?!你的构思非常新颖!!!!!!!2009-10-03 17:58:37 [已注销]
well,好有爱的程序员。2009-11-20 16:10:29 费米
有创意。窃以为内存回收会是个问题。另外如果堆栈溢出,男主大概就会陷入不知本尊在何处的困境鸟……
2009-11-20 18:16:15 黑色大丽花
楼上这位,纯粹是来显摆所谓“专业知识”的= =2009-11-21 00:46:22 小路
恩,程序员的毛病..也不是多么专业的知识.都是一些基础概念..2009-12-07 16:10:28 月踏水无痕
程序员=锄头2009-12-14 10:59:09 [已注销]
说句题外话,真是拍给程序员看,估计就破产了。懂点电脑的都是找盗版。
2009-12-14 13:36:20 fnsoxt
盗版?那是因为没钱。去电影院看啊2009-12-27 21:23:47 AlbertLee
2009-11-20 16:10:29 费米有创意。
窃以为内存回收会是个问题。另外如果堆栈溢出,男主大概就会陷入不知本尊在何处的困境鸟……
===============
尾递归就是为了解决递归桟溢出问题的。
2010-01-03 07:52:42 rstyle
很早以前看过一个科幻小说 讲的基本上是同样的事 后来主角大脑装不下挂了 原来是因为她用的是线性递归 堆栈溢出了啊~但是lz确定这里能采用尾递归优化?因为尾递归本质上执行的是迭代 而并非所有的递归算法都可以转化成迭代算法 对吧? 没有深入去想这个问题 但是lz的角度太新颖了 非常的得fascinating啊~
2010-01-15 23:36:06 小dot
2009-11-20 16:10:29 费米 有创意。窃以为内存回收会是个问题。另外如果堆栈溢出,男主大概就会陷入不知本尊在何处的困境鸟……
+1
蝴蝶效应那部片子貌似提过这个问题
回溯的时候其实机体也在消耗 至于能消耗几次 怎么清除内存
估计机体本身都不知道~
2010-01-19 20:07:08 LCG
其实“递归”与“搜索”对物理世界来说是一回事。实际上男主角最后仓库里是在搜索一颗决策树,用“搜索”而不是“递归”来描述他的处理过程更恰当些。至于为什么画面中同时出现那么多的“他”,可以这样来刻画:人脑是一个并行处理系统,它在并行地处理搜索分枝。2010-01-20 16:39:19 费米
搜索(遍历?)和递归是两个层面的事情吧,一个是需求,一个是算法。这个“预言未来”的事务的复杂性在于,不同分支既是动态的,由于预言者的介入,实际上还能互相关联(传递信息)。即使是真并行的(或是时间片方式次序执行),事件状态也可能与搜索动作(进程或线程)的并发顺序有关,总会导致奇怪的异常。
其实幻想作品解释这类矛盾无非两条方法,要么是上帝干预下的宿命论(相当于操作系统或母程序的优先执行),要么是所谓平行宇宙论(实际上是无限分支宇宙论,至于内存限制之类的就不考虑了)。
2010-05-01 13:07:25 枫
谈不上递归,紧紧遍历而已。2010-05-08 09:25:54 liver
呵呵,强悍,厉害。。因为有了副作用,程序的行为将变得不可预知,程序的正确性验证也就无从谈起。这是主角对纯粹函数式开发的深切呼唤。这个都可以想到,函数式开发
2010-07-26 11:51:09 gtke
我看的时候就是感觉在跑程序,呵呵2010-08-04 16:59:07 木鱼
妈说你什么都好,就是个程序员...2010-08-30 09:54:51 keiga
的确,我用递归只能算5步左右(不用纸和笔),而用尾递归却能无限的算下去。凯奇也是后来发现了类似尾递归的算法吧。2010-08-30 10:00:12 keiga
另外电影有个bug,凯奇这么多年一直停留在算最长2分钟的预测,这么多年的练习和使用,没有进步吗?2010-10-02 16:15:13 zongyouren
哪里能看?昨天CHC看了一个开头有事儿出去了没看成2010-11-27 23:07:43 阿松哥
我是程序员,我看懂了。2010-11-30 22:37:22 懒猫
这应该是个深度搜索吧,影评有意思。2010-12-18 22:57:39 酒妖
程序员...2010-12-20 10:10:01 cwalet
过然是程序员看到么?难怪我一个劲儿的赞,我的另外一个非程序员同学却说很烂呃~2011-01-06 17:05:50 依蕾莎
小兔你看不看fringe?2011-02-16 18:45:47 AlbertLee
我不看,依蕾莎你咋找到这来的。2011-03-11 01:44:04 依蕾莎
这个,我一直有这个douban账户呢2011-03-18 04:28:38 踩的就是你
lz牛比, 小弟佩服2011-05-02 03:05:37 katero
在别个网站上,看电影,看到了竟然是你的影评,再看标题,忍住看完电影,再来看你的评论,过瘾。还没接触函数编程,想试试了。2011-05-28 17:48:53 frank28
看得时候直觉就是递归的思路,不过没有lz理的那么清楚,佩服lz功力啊⋯⋯2011-06-03 10:02:59 abe.chua
那不电影,看的是有就佩服编剧的逻辑性,也有同感。认为程序员看会更加带劲!不过没有你总结的那么多,佩服!~2011-06-23 21:28:21 令狐
这是我见过的关于“未来”“时 间旅行“一类电影中剧情最严密,逻辑最自圆其说的一部片子。不错
2011-08-05 12:04:09 嵐涙
看完电影来看豆瓣各位高人的评论真的是很长见识的一件事。向各路高人表示敬意。
2011-08-07 00:48:59 天蝎♂
豆瓣的用户真TMD高端啊,向各位高级程序员致敬!2011-08-13 23:41:43 85年易拉罐儿
LZ你真是个淫才,看到你的评论,我又以搜索算法的角度看了一遍,感到我以前看的算是白看了。当程序猿就应该有像LZ这样对程序的敏感啊,行话叫“感觉”。2011-08-27 23:31:18 killbill
其实很简单,他可以预见无限长的时间,只要他预见2分钟的自己,然后2分钟后的自己在预见4分钟后的自己~如此2011-09-04 00:00:40 dynamic
这部片很不错,打分低的估计文科多2011-10-14 19:38:32 北极熊
学文科的表示鸭梨大,硬是只看到细胞分裂、2的N次方的深度~~~ 还觉得像电阻问题,在一瞬间决定哪里过电。2012-01-21 23:18:00 rabbit
我不是程序员,程序又不太懂。有一个问题想请教:递归、并行也好,在知道结局的基础上选择可能有无限多种,每一秒的无限多中选择互相叠加并行的计算量急剧上升。
即便主角的大脑计算能力堪比双核CPU,2分钟内可以并行处理的数据总是有限的。这样一来,计算结果还是可能有瑕疵,不完美的,不是吗?
> 我来回应