(1980年华纳兄弟《超人II》剧照)
英国程序员约翰·格拉哈姆-科明最近在观看电影《极乐世界》时发现了一件奇怪的事:电影中的角色们与一台未来新型计算机交流,一行熟悉的代码闪过显示器。“我截了张图,查了一下,”他告诉本网站,“发现这行代码是某一本英特尔使用手册里面的。”
这位曾经发起请愿要求英国政府向数学家阿兰·图灵道歉的程序员在本月上旬发推特公布了他的发现,立刻就有五百多条转发。第二天,格拉哈姆-科明创建了一个Tumblr,用来考据各种地方出现的代码的来源和含义——从主流大片到科幻电视剧,再到音乐MV。这个名叫“电视电影中的源代码”(Source Code in TV and Films)的Tumblr创建才一周多就有了一万两千多名关注者,而且格拉哈姆-科明说,他每天要收到几百条留言和数不清的投稿。
结果,出现在电影电视里的许多代码都是复制粘贴来的,其来源往往不可靠如英特尔手册、出处繁杂如维基百科,比如从Engadget网站截来的,还有从加拿大某个银行来的。有时候就只是瞎编一段放到屏幕上,比如1994年的《燃眉追击》,看起来像那么回事儿罢了。还有些是程序员开的玩笑,比如2011版《霹雳娇娃》里面的代码(是个解数独的软件!)。
“我猜这是导演的事儿,时间限制住了布景师,”格拉哈姆-科明说,“我其实收到过两个布景师的邮件,说的就是这个,很明显,有时候他们没时间照顾到这种细节。”比方说每周一集的《犯罪现场调查:纽约》,有一次用了某个网页上的基本HTML代码。
不过有的导演和布景师是真的考虑过代码的问题。比如《钢铁侠》里就显示了有效的C源代码,虽然有点儿拙劣,还有导演大卫·芬奇也做得很棒:他作品中进入数字领域的角色如《龙纹身的女孩》里的莉斯·莎兰德和《社交网络》里的马克·扎克伯格,所运用的程序语言与他们想达成的目的一致。莉斯至少懂得结构化查询语言(SQL),而扎克伯格使用的代码符合程式语法,像是为这部电影专门创造的。
“我觉得在二十世纪九十年代前期发生过重大的变革,”格拉哈姆·科明说,“互联网技术迅速发展,开放源码流行起来,制片人要找现成的代码(用来复制粘贴)就变得容易了。在那之前,电影电视里用的代码似乎要专门写出来,甚至是照着杂志手动录入进去。”不信?《终结者》里阿诺·施瓦辛格视角的镜头中就用了从《Nibble》杂志上来的苹果II代码。
据好莱坞的美工师说,代码准确性相差如此之远的原因有很多。
“这种代码的‘质量’取决于制作期限、财政预算以及我拿到脚本的时间,还有代码镜头的长短,”为《华尔街之狼》等电影和《疑犯追踪》《纸牌屋》《杀手之王》等电视连续剧制作代码画面的动态影像师鲍勃·路德曼如是说,“如果大家知道这些节目里面出现的大多数代码镜头都是在不到八小时的一个工作日内做出来的,我想很多人都会感到惊讶。”
他说,那些最终看起来非常符合语法的代码,是因为它们有必要高度符合语法。
“就说《钢铁侠》吧,代码可能是在后期制作阶段加上去的,”他解释道,“他们有时间也有钱,可能雇了人专门搞这个,或者说有时间把代码做得更真实。在多数情况下,制片人不愿意在这方面花钱,编剧也懒得研究真正的代码是什么样。还有,像《钢铁侠》这样的电影,他们知道大家会按暂停然后分析出现在屏幕上的一切。”
路德曼说,使用垃圾代码也可能是出于法律方面的顾虑,这样做虽然在技术上显得不精确——有时候代码里缺了些关键因素,比方说没有分号——但是可以避免侵犯版权。还有布景上的不可预知性。也许会有这样的情况:影像师制作的电脑代码画面原本是用作背景的,导演却更改了镜头。路德曼在《妙警贼探》(White Collar)的第一季碰到过这种事。
“我要做某个FBI人员在查收电子邮件时的普通界面——不是主角,是从房间另一头拍过去的,我只有半小时的时间,”路德曼说,“我用了以前给AMC台《无路可退》(Rubicon)做的一个FBI网页版头,把我自己的收件箱截图放上去,还调暗了颜色好让界面显得更高端。画面是我在自己的收件箱里随便打开了一封邮件……结果《妙警贼探》在这里插了个大特写,我的个人电邮信息全在上面了,有亚马逊的购物订单、学生贷款的声明,还有那一周《法律与秩序》的室内工作请求。这个镜头居然还保留到了DVD。直到今天还有人发邮件给我,一年好几次,跟我说他们也喜欢亚马逊和 eBay 而且觉得学生贷款很烦。”
如果你有兴趣想自己做做代码考据,格拉汉姆-科明的建议是至少要熟悉多种编程语言,因为每种程序语言都有自己独特的句法。还有,关键是要看准程序语言的根本特点。
“我觉得做个程序员比较有用,因为程序员一眼就能认出代码,知道这个代码用的是什么语言、这种语言有什么特点、该怎么在网上搜索,”他说,“不过一般来说你要找的都是代码里特殊的东西:注解,变量的名字可能是特定的。”
或者你可以干脆截个图发给他,让他来考据。
联系客服