日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有感于《游戏脚本高级编程》的劣质翻译

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有感于《游戏脚本高级编程》的劣质翻译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? Alex Varanese的《Game Scripting Mastery》是本不可多得的好書,我在網上試讀幾章后就決定買一本,看了下有中文翻譯版的,于是花了70多塊錢在網上訂購了一本,從此,噩夢開始了。

??? 以前基本沒買過清華大學出版社翻譯的書,我學C/C++時看的基本都是侯捷老師的作品,不管是親自撰寫還是翻譯,侯捷老師都能做到認真二字,每一行代碼,每一句翻譯稿都經過仔細推敲,甚至還能發現原書的不妥之處,把自己的修改意見放在譯文邊上做為參考。后來還有買了些李建忠翻譯的.Net書籍,著實不錯。這讓我對市面上的書籍估計的過于樂觀,閑話少說,來說這本書吧:

??? 《游戲腳本高級編程》拿到手的第一感覺還是不錯的,重新設計了封面,封面上繪有中國氣息的龍圖案,寫著清華大學出版社,北京遞歸開元教育有限公司審校。我看還有專門的審校公司,質量應該有保證。可是一翻開書,粗粗看了下,就發現有點不對:

  • 本書目錄結構就有明顯錯誤,第8章和第10章都叫“匯編語言入門”,而實際上第10章是講虛擬機的。這個錯誤可以很容易在卓越網的目錄結構上看到。
  • 英文原版的每頁都有精美的圖形頁腳頁尾,中文版的只是白紙黑字。
  • 英文原版對應的每個關鍵字都有特殊字體(斜體)表示,而中文版的正文就一個字體過去,并且沒有關鍵詞翻譯對照表。
  • 原文中的備注用的是一個精美的方框,黑底白字寫上注釋,而中文版的就一個簡單的注釋跟在正文后面。
  • 做為一本標價99元人民幣的書籍,中文版并沒有將原文中的圖片重新繪制,導致圖片顯示失真現象很嚴重,在英文版很清楚的圖片,經過了第二次印刷后效果大大不如從前。
  • 本書的CD-ROM不包括微軟提供的DirectX,而是要讀者自己去下。
  • 以上是中文版的書給我的第一感覺,不過我們畢竟是看內容,只要內容好,對于書的包裝和排版就別做過多苛求了,因為我對匯編語言比較感興趣,所以我就先讀了第8章,讀著讀著,實在是讀不下去了,很多翻譯感覺就像機器翻譯出來的,雖然每個漢字都認得,但連在一起就不想到到底是個什么意思,沒辦法,重新買了本英文的,一對比,恍然大悟,不是我理解能力不行,實在是翻譯的太不負責任!我只舉8.36這一小節(中文版299頁開始,英文版389頁開始)做為說明:

  • 中文版:由于堆棧固有的增長和壓縮能力,以及嚴格和順序的命令用來壓入和彈出數據,堆棧已經成為管理順序變化數據(也就是函數調用的劇烈行為)的典型數據結構。 不知道各位看到上面這段翻譯是什么感受,我反正是一頭霧水。什么叫“順序變化數據?”什么叫“函數調用的劇烈行為?”看原文吧:The stack, due to its inherent ability to grow and shrink, as well as the rigid and predictable order in which data is pushed on and popped off,make it the ideal data structure for managing frequently changing data—namely, the turbulent behavior of function calls. 于是一切都清楚了,所謂的“順序變化數據”正確意思應該是“經常變化的數據”,再具體一點,指的是函數調用時,需要傳遞給堆棧的返回地址,參數,返回值等等,你也許還需要處理函數中的局部變量,所以數據是frequently changing 的。而不是什么“順序變化”!
  • 如果上面這個例子讓你一頭霧水的話,下面這個例子就讓你覺得莫名其妙。這個例子是介紹堆棧的兩個基本操作PUSH和POP,我們先看英文版吧:Push accepts a single value and pushes it onto the stack. Pop accepts a single memory reference and pops the top stack value into it.這段話在中文版被翻譯成:壓入操作接收一個值并把它壓入堆棧。彈出操作會彈出堆棧頂部的值并把它賦給一個內存引用作為自己的返回值。 這時候容易讓人疑惑的是,翻譯最后的“作為自己的返回值”這句話是從哪來的?大家都該清楚Pop語句只是將棧頂元素賦值給那個接收的參數,并沒有什么返回值!。此外這種Push和Pop這種單詞,一般正規的默認不翻譯,保持英文更讓人容易理解。而返回值(return value)這個單詞在本章中特指函數的返回值,估計被人翻混了。
  • 好了,上面兩個翻譯如果你說我強詞奪理的話,這次看的這個錯誤也許是個人都不能容忍了:英文原版:Call is a lot like Jmp in the sense that it causes the flow of execution to branch to another instruction.However, in addition to simply making an unconditional jump, it also pushes the current instruction index (which is its own index, as well as the return address) plus one onto the stack. It adds one to its own address to make sure the function returns to the following instruction, not itself;otherwise you’d have an infinite loop on your hands.,在中文版中被翻譯成:Call使得執行流分支到另外一個指令,從這個意義上來說很想Jmp。然而,除了做了一個簡單的非條件跳轉之外,同時還把當前指令的索引(是它自己的索引,也是返回地址)壓入堆棧。它把自己的地址壓入堆棧來確保函數返回到下一條指令,而不是自己,否則的話就造成了一個無窮循環。問題來了,英文原版紅色的plus one在中文版的翻譯中哪去了?英文原版的意思是當發生函數調用時,Call指令會把“當前指令的索引+1”做為函數返回值壓入堆棧,這樣函數退出時,就執行堆棧中的“當前指令的索引+1”的指令。可翻譯中卻把+1漏掉了,這不正是造成死循環的原因嗎?
  • 其他的翻譯晦澀,翻譯錯誤還很多,比如書中后來提到了堆棧對返回地址(return address)的處理,以及堆棧對函數返回值(return value)的處理。對照英文原版可以看到,中文版至少有兩處把return value 和return address翻譯混淆,本該是“返回地址”的地方翻譯成了“返回值”。
  • ??? 基于以上原因,我決定再買一本英文原版(因為這本書的確值得買,值得細看),同時奉勸各位還是打開金山詞霸看英文原版吧,最多也就是單詞不認識。看中文版只會讓你一頭霧水。另外,開始懷念看侯捷老師書的日子,懷念那種和作者一起交流,一起學習人類智慧結晶的喜悅。而不是面對一堆翻譯出來像機器翻譯的,毫無生氣的文字。對于本書的翻譯,我只能用一句話形容--用google翻譯吧,也許效果還好點!

    總結

    以上是生活随笔為你收集整理的有感于《游戏脚本高级编程》的劣质翻译的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。