代码改变世界

函数式编程里的Materialization应该翻译成什么?

2019-06-26 22:58  叶伟民  阅读(1464)  评论(3编辑  收藏  举报

Materialization是函数式编程里的一个专业术语, 用于特指函数式编程中查询被实际执行并生成结果的这一过程.

首先, 搜了一下中文资料, 暂时没有对该词的中文翻译,  CSDN\博客园\阿里云上所有关于它的文档都没有做中文翻译, 直接沿用这个英文单词.

难道轮到我来创造这个词的中文翻译? 顿时觉得压力山大啊!

首先,我认为这个词是应该要翻译成中文的, 而不是保留英文原文不做翻译, 原因是: 这个词太长太难念了, 导致影响了阅读体验. 而像map, reduce这些又短又容易念的我在书中就没有做中文翻译, 直接保留英文原文不做翻译.

嗯, Materialization本身有如下多个中文意思, 我来逐一排除:

  1. 实体化. .NET开发者往往会联想到Entity Framework. 为了避免混淆, 放弃该选项.
  2. 实例化. 首先该词已经被C++中的instantiation占了坑. 同时实例化往往会被人联想到new一个class的object. 并且有丰富OOP经验而又没有函数式编程经验的.NET试读者往往会第一时间想到这个词. 极其容易造成误解,故放弃该选项.
  3. 具体化. 该词已经被C++中的specialization占了坑. 为了避免混淆, 放弃该选项.
  4. 物化. 有丰富OOP经验而又没有函数式编程经验的.NET试读者第一时间不能理解这个词, 但是很多现有的技术文档都指向这个意思.
  5. 物质化. 和"物化"同一意思.

我最终倾向于"物化"和"物质化"两者之一, 现在发起投票, 请留言发表你的意见. 投票将在本周日结束. 周一将交稿给出版社.

如果最终无人留言投票, 我将会采用"物化"做为中文翻译.

在翻译的过程中, 我和作者不断沟通, 和作者一起不断地刷新自己, 对于原著的每一节都有新的认识和修改, 我意识到完美是永无止境的. 也许Materialization以后会有更好的翻译. 但是在这里先公示一下, 请大家以后不要吐槽我是用机器翻译这本书.:-) 

=======2019-06-27 08:31 更新======

此帖投放在全国各地的.NET俱乐部微信群一夜之后, 已经有385个浏览量, 有不少群友提供了宝贵的意见, 我罗列如下:

  1. 来自北京.NET俱乐部的: 建议叫m13n, 就像k8s, i18n一样. 嗯, 这个建议的确不错, 也在我旧有思路之外, 不过目前函数式编程尚未兴起, Materialization还未被大家熟知, 不像k8s, i18n那样熟为人知, 因此在本书中叫m13n可能会让人莫名其妙. 但是在以后的岁月中, 在函数式编程广为人知的时候, 叫m13n的确会和k8s, i18n一样方便.
  2. 来自长沙.NET俱乐部的: 联想起另外一个专业名词"物化视图", 感觉像同一个意思, 一个计算过程, 执行后生成结果(然后保存起来). 同时有另外两个人也支持使用"物化"这个词
  3. 来自成都.NET俱乐部的:
    1. 有人提出"实化"和"石化", 
    2. 有人提出"物料化",
    3. 有人认为"物化"和"物质化"还是有很大区别的.
    4. 有人认为: 物, 物体一般描述实际的东西吧. 实, 实体感觉更抽象一些. 适合计算机领域. 比较我们平时说的实体, 改成物体多别扭啊. 这个建议很好, 但是翻译成实体很容易让大家联想到Entity, 但是Materialization和Entity以及EF没有任何关系
    5. 有人认为应该不做翻译.
    6. 不得不说, 成都.NET俱乐部讨论热烈啊, 谢谢. 关于这些建议, 我最后会综合分析的. 但是, 我认为这个词是应该要翻译成中文的, 而不是保留英文原文不做翻译, 原因是: 这个词太长太难念了, 导致影响了阅读体验. 像map, reduce这些又短又容易念的我在书中都没有做中文翻译, 直接保留英文原文不做翻译.
  4. 来自深圳.NET俱乐部的: 有人认为专用词去强硬翻译, 只会让新人误解, 甚至更难理解. 这个建议不错, 但是在实际试读中发现反而是相反的, 有十几年工作经验的.NET开发者看到未做翻译的英文原词要么就是能直接看懂, 要么就会去google一下. 反而只有半年.NET工作经验的应届毕业生会觉得莫名其妙, 影响阅读体验. by the way, 还有人吐槽"鲁棒性"这个词的翻译, 更加让我意识到, 我做为第一个翻译Materialization这个词的责任重大啊, 不想给以后的人挖坑.
  5. 来自合肥.NET俱乐部的: 有人支持"物化"一票
  6. 来自武汉.NET俱乐部的:有人反映oracle中的物化视图也是用的“物化”这个词,“物化”两票,m13n一票
  7. 来自我本人朋友圈留言的: 投"物化"两票
  8. 直接在此blog post下留言的痴者工良, 留言大家也都能看得到了.

谢谢大家

==========2019-06-29 11:59 更新=========

经过各位朋友和.NET开发人员的散发,此贴浏览器已经达到548. 并且从更多渠道得到更多的意见,详情如下:

  1. 来自《构建之法》微信群的:赞同“物化”,认为术语最重要的就是区分度,所以连“鲁棒性”都可以吃得开就是因为这个原因。
  2. 来自沈阳.NET俱乐部的“西部-叛徒”朋友:
    1. 具现化:来源于科幻|ACG这边,但是好像有别的英文词对应了,好消息的话就是目前还未推广开来。在acg这边已经无障碍,意思完全是 抽象|精神->具体|现实。同时这种复杂外来语源的词能连起来朗读即可,不用强求音节数,因为现代汉语2~4都是合理而常见的
    2. 实现化:个人认为实现这个词可以作为名词,加上“化”来再动词化或继续赋予名词词性从构词上没漏洞,而且能表达出原意的大部分
    3. 物质化:直接按照material基本意思的动词化,相比物化,个人认为双音节词作词根更能精准表达含义的层面、领域,避免了物化这个词产生的生疏感,
    4. 实物化:这个翻译个人感觉地气得太多了,但也能明白,就是不知道和原词的引申含义是否能契合
    5. 质化。
    6. 实化。
    7. 具化。
    8. 现在“化”字词很多是日语反向传播回来的,不知道是否能在日语上找到更多灵感。
    9. 个人解析原词核心material可以翻译为:具 物 实 现 质 材 料 要(机要的要),其中后三个感觉和原词方向有些远

同时,我也把这个事情告诉了书籍英文版原版作者,作者表示大大地同意加赞赏。

谢谢大家