赶在国内上映的第一天, 去看了<敦刻尔克>. 索性今天从这个电影出发, 闲聊一下.
声明写在前面, 这篇文章基本不会涉及这部电影的剧透, 但是如果一不小心写呲了, 或者你的联想能力超出了我的文笔控制能力, 概不负责.
<敦刻尔克>是那种一上来就代入性很强的电影, 前一秒片头你还在想这么难的题材要从什么角度来拍, 后一秒背景音乐响起, 镜头上推, 你就混入了英法联军撤退的队伍里, 再一秒枪声响起, 整个电影的压抑感就盖在了你头上, 到结尾, 压抑的窒息感, 都没法逃离.
第一秒, 你就能认出来这是诺兰的电影. <致命魔术>, <盗梦空间>, <黑暗骑士>, <追随>, <记忆碎片>, <星际穿越>, 第一秒, 就让你没法逃离. 似乎都有一种莫名的控制力, 一口气, 到了最后一帧.
这种控制力是什么呢?
我认为是对时间和空间的把控力.
对于写程序的人来说, 很熟悉的词吧? 算法和数据结构的精髓, 就是程序对时间和空间的控制. 评价一个程序好坏, 实际是要评价时间和空间复杂度; 评价一个开发者水平, 亦即要评价他对程序的时间和空间使用水平的控制力.
诺兰对于时间和空间的控制力是怎样的呢? 在<致命魔术>里, 通过日记本的不同时间线的阅读, 将故事穿插在两”个"魔术师的空间线里, 游刃有余; 而<盗梦空间>, 不同空间层次拥有着不同的时间片单位, 让叙事大开大合; <黑暗骑士>一开场, 便穿插着小丑对于时间的计算和人头空间的置换关系, 一直到影片结尾, 空间两地, 时间单选, 似乎看到了诺兰对时间和空间的痴迷控制力; <追随>从头到尾的时间嘀嗒声是非常有魔性的, 作为诺兰最早期的电影, 也能看到他对人物间空间角色的置换; <记忆碎片>从头到尾就是一场错乱的时间碎片, 就像 debug 一样顺着线索一遍遍调试; <星际穿越>是很明显的空间变换, 也有着对于时间颠倒衔接的布局和对于时间维度的掌控; 而<敦刻尔克>, 从你以为很正常的时间线开始, 在某一时刻, 一击命中, 恍然大悟, 原来诺兰一直是诺兰.
在程序里, 时间复杂度的重要性不言而喻, 甚至不惜牺牲空间来置换, 因为在一定条件下, 空间是便宜的, 网络和分布式对于时间和空间的计算的发展有着推动意义. 这个时间可能是要花费更多的显性时间.
要我来看现在的程序员, 下者, 统统不考虑, 10分钟粘粘代码, 反正有开源的, 写好了, 先占个坑; 中者, 考虑一下空间复杂度, 程序缓存如何? 内存如何? 持久化存储如何?; 上者, 会再考虑一下时间复杂度, 为什么 google 比 bing 搜索快? 无它, 花了更多的显性时间打磨出来的.
当然, 我可能连程序员都算不上, 我就是个挖坑的, 恩.
诺兰应该是个好程序员, 从他对时间和空间的控制力就能看出来, 另一个好程序员我觉得是东野圭吾, 当然, 这个以后有机会再聊. 诺兰是那种真的不靠外力作用的好程序员, 不靠 3D, 不玩过分特效, 不找那种当红明星, 自己写好剧本自己拍, 用时间, 用空间, 让你逃离不开.
用兵作战, 讲究天时, 地利, 人和. 亦即时间, 空间, 心. 万物不离其宗, 千变万化, 百转千折, 实则处处相通.
今天就聊到这吧. 看完电影, 有感而发. 希望没有剧透太多. 最后一句, 诺兰的电影真的值得看, 诚心推荐一下. 收.