All talk but no code...

makes lulalala a bluff boy

《深入理解運算原理》的翻譯慘不忍睹

| Comments

《Understand Computation》這本書原本我很期待的,聽 Ruby Rouge 的介紹,似乎可以讓讀者理解許多有趣的計算機科學原理,像是正規表示式等等。原本都快要去買英文版了,想不到12月初碁峰資訊代理的中文版竟然上市了,於是我就很高興的買了一本回家看。

結果越讀越不對勁,很多地方不大理解,於是去找了英文版來對照,才發現翻譯實在不行,大概每四到五頁就會出現巨大的錯誤。沒有對照就看不懂。這邊列出最明顯的四個例子:

漏了一個 No 意思差很多

原文中這句話被這樣翻譯:

That all works as expected, but it would be nice if we could support conditional state-
ments with no « else » clause, like « if (x) { y = 1 } »

所有工作都一如預期,但我們若能以 else 子句支援條件陳述式,就像if (x) { y = 1 },那就更棒了。(40頁)

少了「no」結果意思變反了。這個問題在 31 頁也出現過。

例2

小步語意使得我們必須從諸如 3 的不可約運算式辨識出像是 1 + 2 的可化簡運算式。

當初看到這句的時候愣了一下,為何能從前者辨識出後者,所以去找了原文:

With small-step semantics we had to distinguish reducible expressions like « 1 + 2 » from irreducible expressions like « 3 »

才知道意思只是兩者參雜的情況下分辨是哪一種而已。要翻的話應該是這樣:

在小步語意我們必須分辨可化簡運算式(如 1 + 2 )與不可化簡運算式(如 3 )

很棘手

看你能不能找到這段錯誤的地方:

當我們在大型程式呼叫 #reduce 的時候,如果訊息往下經過抽象語法樹,然後一直到它抵達準備好化簡的程式碼片段,可能就會造成棘手的巢狀 #reduce 呼叫。

應該很難,但是比對原文以後:

when we call #reduce on a large program, that might cause a handful of nested #reduce calls as the message travels down the abstract syntax tree until it reaches the piece of code that is ready to reduce.

我們就會發覺正面的句子被翻譯成負面的了。「handful」被譯為「棘手的」,其實作者想表達這只會造成「一些」呼叫而已。

58 59 頁編輯的失誤連續 Combo

我們在前面看到,操作語意是藉由設計語言的直譯器來解釋語言的意義。相較之下,操作語意語言對語言的翻譯就像編譯器。(第58頁)

是不是不懂為何要「相較」同一個東西?嗯,因為第二句話寫錯了,應該是對「指稱語意(denotational semantics)」

接下來也有點不懂:

這些語意風格無一必能說明如何有效實做語言的直譯器或編譯器…(第58頁)

無一必能 是什麼呢?翻了一下英文翻譯

None of these styles of semantics necessarily says anything about how to efficiently implement an interpreter or compiler for a language, but...

喔,原來多加了一個「必」字。

指稱語意的優點是操作語意更為抽象(第59頁)

這次則是漏了一個「比」字。

最後是一個理解錯誤:

指稱只能如其含意;尤其若指稱語言具有某些操作含意,那麼指稱語意就只能讓我們更接近實際執行的程式…(59頁)

A denotation is only as good as its meaning; in particular, a denotational semantics only gets us closer to being able to actually execute a program if the denotation language has some operational meaning

「只能」放錯位置了。意思應該是「指稱語意只有在指稱用語言本身有操作含意時,才讓我們更接近實際執行程式」

結論

怕被認為雞蛋挑骨頭,所以比較小的問題放在這裡:https://goo.gl/VVWzMb

上次買了《Ruby 物件導向設計實踐-敏捷入門》,一樣也是有一些小問題,但是因為是代理中國出版社翻譯的書,所以想說反應問題也沒用。

這次的翻譯是賴榮樞,之前已經翻譯了十本以上的資訊書,應該算是很有經驗的譯者,所以我原本比較有信心。可是這麼多問題似乎代表編輯似乎沒有在做任何事情,糟蹋這本好書實在讓我很失望。

Comments

comments powered by Disqus