最近, 有一本很贊的.NET技術書中文版出版了 - <More Effective C#: 改善C#代碼的50個有效方法>.
從廣州\西安\長沙\上海等各地.NET俱樂部都收到反饋, 說這本書是用google翻譯出來的.
然而, 事實上不是這樣的.
首先, 我不是這本書的譯者, 我也不認識這本書的譯者, 我只是出於對.NET社區和技術的熱愛來寫這篇文章, 來澄清和化解誤會而已. 同時如果該書譯者看到我這篇文章, 也請聯系我. 謝謝.
先舉一個例子:
該書第38頁, 第一段第一句:
關於高階函數一詞, 有人認為作者是用谷歌翻譯的, 因為高階函數是數學名詞.
然而事實是這樣的, 在這里, 翻譯成”高階函數"沒有任何問題, 因為:
- “高階函數”首先是一個數學名詞, 但是被函數式風格編程沿用了. 因為科學計算領域是函數式風格編程擅長領域之一. 所以函數式風格編程也沿用了很多數學名詞.
- 而這里的TakeWhile()和LINQ是函數式風格的應用, 所以在這里使用”高階函數”這個函數式風格名詞完全沒有問題.
類似的地方還會有:
-
柯里化.這個詞最坑, 因為這個詞總共才三個字, 前面的”柯里”兩個字是音譯, 后面的”化”字是意譯! 翻譯不怕全音譯, 不怕全意譯, 就怕這種一半是音譯一半是意譯的!這個詞是函數式編程風格約定俗成的翻譯. 其中”柯里”是邏輯學家Haskell Curry的名字音譯.而.NET從十年前開始就支持函數式編程風格了. 其中大家最熟悉的就是LINQ啦. 所以有函數式編程風格的詞匯很正常.
-
局部施用這個詞同樣也是函數式編程風格約定俗成的翻譯.
- “仿函數” / “函子"
這個詞同樣也是函數式編程風格約定俗成的翻譯.
歡迎大家繼續提供反饋, 我將持續更新這篇文章. 也希望該書譯者看到這篇文章后聯系我, 因為這個工作本來應該是由你來做的, 現在的我只是友情幫忙而已(出於對.NET社區和技術的熱愛).
2019年6月1日更新: 有讀者反饋: 該書封底的作者簡介里”榮獲微軟公Regional Director”這句話有錯漏, 漏了”司”字, 應該為”榮獲微軟公司Regional Director”. 嗯, 我想這個的確是錯漏.
額外說一句: 很多同學反映在C#中具體應用DDD有各種問題. (廣州.NET俱樂部群里每天都有關於DDD的討論)
我分析了一下, 有些問題產生的原因是: DDD是基於面向對象的, 而.NET從十年前就引入了很多函數式風格的特性, 比如LINQ等等. 這些都是面向過程而不是面向對象的! 它們和DDD連最基本的思想都不一致! 那當然會產生問題啦!
另外, 自從JAVA也開始引入LINQ等函數式風格特性后, JAVA也不可避免的存在同樣和DDD沖突的問題. 所以這與語言無關, 純粹是DDD這種基於面向對象的思想和函數式編程風格這種基於面向過程的思想之間的沖突.