
到底是父主题还是母主题?从编程角度聊聊我自己的看法
说在前面
前几天,一条热搜登上了各大APP的榜首。
里面提到了某应用可能涉及把“母主题”偷偷修改成“父主题”的言论引发热议,无数网友跟风转载,并在该应用的运营账号下进行质问。
事后网友证实,该应用并没有进行过此改动,这个父主题是一直存在的,并不是最近修改的。
但部分网友仍不打算罢休,并发出灵魂质问:一直存在便是对的吗?
到底是翻译问题还是什么?
从我最早学代码时,就接触到了“父子节点”,“父类子类”,“兄弟节点”这些“编程术语”,而那时的我也确实注意到像父节点的英文确实是 parentNode ,
子节点是 childNode ,英文原版里并没有指出具体的性别,怀疑过这么翻译是不是不太严谨。
后来也有教材会把 parentNode 翻译成 双亲节点 。
但是大家注意,这里用的是 parent 而不是 parents 。
直译过来是:一个人或一只动物的母亲或父亲,或者像父母一样照顾一个人的人 。
像后来学习Java,遇到了 双亲委派机制(Parent Delegation Mechanism),简单来说,它是指:
当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。
我那时候就有疑问:按他的意思来说,应该叫 单亲委派机制 ,因为委托给自己的更高一层的单个加载器去加载,仔细一看双亲委派机制的英文-Parent Delegation Mechanism,人家用的确实是Parent,而不是Parents。
那时我突然意识到父节点好像也是相同的逻辑,parentNode翻译成父节点也好,母节点也好,就是不能翻译成双亲节点。
追根溯源
正在我为之苦恼时,偶然间发现了维基百科对于 树结构 (Tree structure) 的定义,上面有这么一段话:
The names of relationships between nodes model the kinship terminology of family relations. The gender-neutral names “parent” and “child” have largely displaced the older “father” and “son” terminology. The term “uncle” is still widely used for other nodes at the same level as the parent, although it is sometimes replaced with gender-neutral terms like “ommer”
节点之间关系的名称模拟了家庭关系的亲属术语。中性名称“父母”和“孩子”在很大程度上取代了旧的“父亲”和“儿子”术语。术语“uncle”仍然广泛用于与父级处于同一级别的其他节点,尽管它有时被诸如“ommer”之类的中性术语取代。
原来国外经过一轮演变!他们最早就是使用的“父与子”这样的称呼,后来才改成中性的“父母、孩子”。
我们在 jdk源码 中尝试搜索 father node ,会在 com.sun.jmx.snmp.agent 包的 SnmpMibOid 类中找到下面这段注释:
This method is a patch that fixes the problem of registering a subnode before its father node
这种方法是一个补丁,用于解决在父节点之前注册子节点的问题。
好小子,不装了是吧,英文原句直接用了father node的表述,不如我们把jdk也冲了吧。
类似的一些词语
最常见的像母体生物(Parent organism)、母公司(Parent company),结合具体学科背景和中文表达习惯,这些词汇虽然用了 “parent”,但通常会翻译成含 “母” 的对应中文词汇,以准确体现其在相关领域所指代的对象特点。
我的观点
我个人是非常同意 parentNode 翻译成 双亲节点 的,可以把相关的翻译都改成中性的表述;
但是感觉一些人不是为了这些而来进行辩论,而是想要别的。
翻译是需要信雅达,例如设计界竟然被人诟病的”鲁棒性“,它是音译自 “robust”,但从汉语字面意思来看,它超级晦涩难懂,也觉得如果换用更直白的表述,比如 “健壮性”“稳固性”“强韧性” 等,会更容易让人快速把握其核心意思。
但像是母题,它同样音译自英文 “motif”,有主题、主旨的意思,母题这个翻译就非常信雅达。
或者像生化危机题材里的母体,看到这个名字我也不会因为是因为“母”字冠头,而觉得宿主一定是女性,有源头的含义。
总之就是一句话:
可以改,但不能只改你想改的。
另外拓展
下面另外列举一些国外编程界一些因涉及xx正确而修改的内容:
- “master” 分支名称的修改:GitHub 将代码库中的默认分支名称 “master” 改为 “main”。这一改动是由于 “master” 一词可能会让人联想到奴隶制中的 “主人”,具有潜在的冒犯性。此外,像 Git 等版本控制系统中相关的术语也进行了相应更改,如将 “master process” 改为 “parent process” 等.
- “whitelist/blacklist” 的替换:谷歌等公司将 “whitelist”(白名单)和 “blacklist”(黑名单)改为 “allowlist” 和 “blocklist”。因为 “blacklist” 中的 “black” 可能会被认为带有负面或歧视性的含义,暗示黑色与不好、坏等概念相关联,而 “whitelist” 作为其对立面也被一并修改,以使用更具中性和包容性的词汇来避免可能的误解或冒犯.
- “man hours” 等表述的更改:推特开发者 Regynald Augustin 等成功推动将 “man hours”(人时)、“grandfathered”(祖传的、沿袭的)、“dummy value”(虚拟值、哑值)和 “sanity check”(完整性检查)等术语进行替换。这些词语被认为可能存在对特定人群或概念的不当暗示,不符合当下的多元化和包容性要求.
- 编程语言中的一些修改:Python 等编程语言官方也对一些具有潜在争议的术语进行了调整, 例如将 “slave” 改为 “worker”“helper” 等词汇,以避免使用可能会让人联想到奴隶制的词汇,使代码中的术语更具包容性和中立性.
- 感谢您的赞赏