代码改变世界

<More Effective C#: 改善C#代码的50个有效方法>中文版翻译答疑

2019-06-01 12:44  叶伟民  阅读(2011)  评论(2编辑  收藏  举报

最近, 有一本很赞的.NET技术书中文版出版了 - <More Effective C#: 改善C#代码的50个有效方法>. 
 
从广州\西安\长沙\上海等各地.NET俱乐部都收到反馈, 说这本书是用google翻译出来的.
 
然而, 事实上不是这样的.
 
首先, 我不是这本书的译者, 我也不认识这本书的译者, 我只是出于对.NET社区和技术的热爱来写这篇文章, 来澄清和化解误会而已.  同时如果该书译者看到我这篇文章, 也请联系我. 谢谢.
 
先举一个例子:
该书第38页, 第一段第一句: 
关于高阶函数一词, 有人认为作者是用谷歌翻译的, 因为高阶函数是数学名词.
 
然而事实是这样的,  在这里, 翻译成”高阶函数"没有任何问题, 因为:
  1. “高阶函数”首先是一个数学名词, 但是被函数式风格编程沿用了. 因为科学计算领域是函数式风格编程擅长领域之一. 所以函数式风格编程也沿用了很多数学名词.
  2. 而这里的TakeWhile()和LINQ是函数式风格的应用, 所以在这里使用”高阶函数”这个函数式风格名词完全没有问题.
 
类似的地方还会有:
  1. 这个词最坑, 因为这个词总共才三个字, 前面的”柯里”两个字是音译, 后面的”化”字是意译! 翻译不怕全音译, 不怕全意译, 就怕这种一半是音译一半是意译的! 
    这个词是函数式编程风格约定俗成的翻译. 其中”柯里”是逻辑学家Haskell Curry的名字音译.
    而.NET从十年前开始就支持函数式编程风格了. 其中大家最熟悉的就是LINQ啦. 所以有函数式编程风格的词汇很正常.
  2. 局部施用
    这个词同样也是函数式编程风格约定俗成的翻译.
  3. “仿函数” / “函子"
    这个词同样也是函数式编程风格约定俗成的翻译.
 
欢迎大家继续提供反馈, 我将持续更新这篇文章. 也希望该书译者看到这篇文章后联系我, 因为这个工作本来应该是由你来做的, 现在的我只是友情帮忙而已(出于对.NET社区和技术的热爱).
 
2019年6月1日更新: 有读者反馈: 该书封底的作者简介里”荣获微软公Regional Director”这句话有错漏, 漏了”司”字, 应该为”荣获微软公司Regional Director”. 嗯, 我想这个的确是错漏.
 
额外说一句: 很多同学反映在C#中具体应用DDD有各种问题. (广州.NET俱乐部群里每天都有关于DDD的讨论)
我分析了一下, 有些问题产生的原因是: DDD是基于面向对象的, 而.NET从十年前就引入了很多函数式风格的特性, 比如LINQ等等. 这些都是面向过程而不是面向对象的! 它们和DDD连最基本的思想都不一致! 那当然会产生问题啦!
另外, 自从JAVA也开始引入LINQ等函数式风格特性后, JAVA也不可避免的存在同样和DDD冲突的问题. 所以这与语言无关, 纯粹是DDD这种基于面向对象的思想和函数式编程风格这种基于面向过程的思想之间的冲突.