最近阅读《流畅的Python》,发现这是一本非常好的Python进阶读物,把很多Python概念都掰扯得非常清楚。同时看了一下图灵社区的评论,把译者将future翻译成期物批得是狗血喷头,想想译者这样翻译肯定花了很长时间斟酌,却落得如此下场,真是悲哀。由此想到大翻译家傅雷,据说他翻译《约翰克利斯朵夫》时十年磨一剑,每天只翻译个一两千字,且反复修改。这样做都能养家糊口,不知道是出版社给的翻译费高,还是翻译只是傅老爷子的副业,根本不在乎这点翻译费。这本书的翻译质量如何我不知道,但我知道,有些名著的中译本也存在不少翻译错误,而且读起来很拗口,即便不能说很痛苦,也谈不上享受。不知道大家读翻译的世界名著感觉如何,反正我基本上是都不下去的。

在编程中,future表示异步执行的操作,考虑到这种操作的结果不是马上可得,最初发明这个术语的人想必是借鉴了期货的概念。所谓期货,指的是约定在未来进行的交易,只是这种这种交易是在交易所进行的,且都是标准合约,交易双方不能自行订立。这与编程中future的概念不太一致。更准确地说,编程中future概念类似于金融领域的远期(forward)概念,因为远期也是一种约定在未来某个时点进行交易的交易合约,但交易双方可自行订立。

在网上搜索了一下future,发现有人将这个概念说得比较准确。http://blog.csdn.net/newpidian/article/details/53393364是这样解释的: Future模式,核心思想是异步调用,就是当调用一个方法时,这个函数可能执行得很慢,就需要等待,但是有时候并不着急要这个结果,所以选择不去傻傻等待,而是做其他的事情。就好比”双十一”购物,你买到了想要的东西,那么你不可能等待它到货,然后才做另一件事情,你可能想继续购物其他的商品。而对于已经购买得商品,会生成一个订单,你只需要等待这个订单的快递通知(notify)就行了。 而http://www.cnblogs.com/xumanbu/p/4187010.html是这样解释的: Future有道翻译:n. 未来;前途;期货;将来时。我觉得用期货来解释比较合适。举个实际生活中例子来说吧,今天我女朋友过生日,我去蛋糕店准备给女朋友定个大蛋糕,超级大的那种。 “老板,我要个最大最漂亮的蛋糕” “好,999元,先付款吧” “这么贵!!!”想想还是买了吧,掏了钱,付了款,老板给我一张蛋糕票。 “下午过来取。下午拿这张蛋糕票过来拿蛋糕” “纳尼,这么久” “没有办法,你可以选择在这等,我们会马上开做,不过我建议你还是去干点别的,去买个花什么的,那样您女朋友会更开心的” …… 下午一点钟我早早的就到蛋糕店了。 “老板,我的蛋糕呢?” “不好意思,还没做好,您稍微等一会” “晕” 十分钟后,我终于拿我的蛋糕票取到了送给女朋友的超级大蛋糕了。 这就是Future模式,蛋糕就是我要的数据(RealData),去蛋糕店订蛋糕就是我调用取数据的方法,付完钱,我没有真的拿到蛋糕,只是一个蛋糕票(FutureData),要取数据就是拿这个蛋糕票(FutureData)取(get)蛋糕(RealData)。取的时候蛋糕可能还没有做好,你还是要等,如果做好了,你直接拿走就行了。这种模式的好处就是你不用一直在等着蛋糕出来,做蛋糕的时间你可以去做别的事。有一点就是你不能准确的知道多久能做好蛋糕,很有可能来早了,还是要等,但是没有关系,总比一直在等着强吧。

在编程中,future、promise和deffered等概念出现了很长时间,可大家都不翻译,直接引用原文了事,原因是难以找到准确的翻译,强行翻译只会吃力不讨好,前面提到的对《流畅的Python》一书译者的批评乃至攻击就是活生生的证明。然而,将future翻译成“期物”虽然说不是非常准确,但也不失为很好的尝试,为什么只是批评,却不提出改进的建议呢?您光说人家翻译得很糟,却不说该怎么翻译,往小里说这是缺乏建设性,往大处说是成事不足败事有余! 综合查看的资料,觉得编程中的future概念比较接近于“订单”。异步调用方法时,会返回一个结果,但这个结果并非真正的计算结果,而相当于在网上购物后生成的订单。这里抛砖引玉,希望大家积极讨论,看看将这个大家都不翻译的future翻译成什么比较合适。