讀《流暢的Python》有感

yuangz發表於2017-08-14

最近閱讀《流暢的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翻譯成什麼比較合適。

相關文章