Mix-In的译法探讨

原创 2008年05月05日 13:18:00
有许多动态语言都支持Mixin的特性,比如Ruby、Python。而JavaScript虽然在语言层面没有Mixin支持,但是Prototype所模拟的类似Ruby的extend方法其实就是一种Mixin方式。

目前的工业语言(Java、C#等)普遍采用了单根继承+接口的方式。但是类的继承复用被一定程度上牺牲了(也就是要求尽可能用组合而不是继 承)。这源于class既要用于实例化也要用于代码复用,而这两者存在矛盾。Mixin类似一种多继承,但是它明确是一种小粒度的代码复用单元,而不直接 用于实例化。因此它避免了多继承的常见问题。

但Mixin并没有非常统一确定的译名。目前使用最多的是“混入”的译法。在最近的翻译讨论中,有人提出了一些新的译法,比如“混生”、“掺料”等。请参见:http://groups.google.com/group/python-cn/browse_thread/thread/d7e0a256a1bf6465。下面是我在一个翻译论坛中的讨论贴,整理于此。

对于mix-in这样的新词,我觉得大体有几种做法:

1. 不译。

因为新词的意涵尚未普遍接受甚至本身内涵外延未确定下来,现有译名可能也存在问题,所以直接用英文也是一个比较好的方式。不过除了高端书之外,如果一般书籍采用这种策略,需得对名词做好译注,避免普通读者难以理解其意。

我个人建议在未有好译名之前,暂时以此种方式为宜。

2. 从既有之译名中选取一个。

目前看来纯直译型的“混入”(真是直白,mix是混,in是入……)接受程度最高。但是“混入”其实意思不是很明确。Mix-In,根据我的理 解,其本义是指可以被混入其他类的单元,而不是指混入这种动作。至于说现在变成Mixin(去掉了hyphen)之后,意思是否有所转变,还望大家共同讨 论。偶个人认为仍然去掉hyphen只是从一个组合词固化为一个专业术语,本身含义还是没有发生变化的。

3. 在译著中换用其他等价词汇。

比如Trait。当然Trait的译名本身也是个难题。

4. 自创译名。

下面谈谈“混入”之外的其他几个译名。

我觉得“掺料”不太好,工业味道太浓,它对应的英文大概是admixture,指混合剂。而mix-in根据wikipedia,是源于冰淇淋的混合口味,是很美味浪漫的,用“掺料”真是大煞风景了。还不如叫做“配料”甚至“浇头”,呵呵。

“混生”这个词在汉语语法上似乎比“混入”更名词化一些,不过我认为“混生”与“派生”共用“生”字也并没有什么特别好的地方,因为mixin class和derived class并不是同种性质的东西。特别的,mixin本身不是说混和生成的类,而是说可以用来混合的部件。所以“混生”一词较“掺料”反而有点脱离了 mixin的原意,容易让人误解“混生类”和“派生类”一样,是指子类。实际上mixin却是指“用于混入的类”,有那么点儿类似抽象类 (abstract class)或者partial-class。

如果一定要译,我贡献一个译法供大家批判:

mixin 混元
mixin class 混元类

所谓混元,就是用于混合的元件。


BTW,“混元”在汉语中倒是古已有之,如“混元一气”,还有金庸小说中的大奸角成昆外号就是“混元霹雳手”。这个“混元”大体是指世界初创时的混沌元气。

Mix-in 类

为了解决多重继承的问题,Java引入了接口 (interface)技术,Lisp、Ruby引入了 Mix-in 技术。 Mix-in 技术按一下规则来限制多重继承: 继承用但一继承;第...
  • rommi
  • rommi
  • 2016年04月05日 20:14
  • 688

学习Python:Mix-in技术介绍

Mix-in技术介绍 原文地址:http://wiki.woodpecker.org.cn/moin/IntroMixin Mixin可以译为混入,就是在不改变原对象的情况下对其进行扩展。本文介绍了...
  • dotadage
  • dotadage
  • 2014年12月17日 18:29
  • 976

ruby mix-in

uby是非常灵活的,她允许你做到任何你能想到的神奇的事情。今 天在读模块和混含(mix-in)时,被深深的打动了一把。在Ruby语言中,我们可以把一些常用的业务逻辑(应用)封装在一个模块当中,在未来...
  • yangbinfc
  • yangbinfc
  • 2011年01月24日 10:09
  • 496

python mix-in

Mix-in技术介绍 Mixin可 以译为混入,就是在不改变原对象的情况下对其进行扩展。本文介绍了在 Python 语言中,如何实现Mixin技术,及安装的相应技巧。 什么是Mix-in技术...
  • u011546806
  • u011546806
  • 2015年06月01日 15:45
  • 467

Python3学习(25)--多继承之mix-in("混入")技术

前面,我们学习过OOP的继承,知道子类可以继承父类的特性,可以拿来用,也可以改变父类的特性变为已有,当然,我们只是学习了一种继承关系,今天,我们要重新认识一下Python的继承之 多继承 ...
  • Appleyk
  • Appleyk
  • 2017年09月08日 09:01
  • 3193

古诗词的直译和韵译有什么区别?看看就知道了

原文 床前明月光,疑是地上霜。 举头望明月,低头思故乡。 资料来源自http://xue.paralworld.com/gushi/17277.html 直译 明亮的月光洒在...
  • gushiciwang
  • gushiciwang
  • 2016年05月11日 15:25
  • 318

周扬:关于马克思主义的几个理论问题的探讨

2010-01-03 17:31 周扬:关于马克思主义的几个理论问题的探讨 关于马克思主义的几个理论问题的探讨 周扬 一、马克思主义是发展的学说   ... 二、要重视...
  • wwwgui1978
  • wwwgui1978
  • 2012年02月03日 00:39
  • 1961

Android开发艺术探讨精华(完结)

拾起了一年多前看过的一本书,这里记录一些概念,以便以后巩固复习或者面试。 1、configChanges=“orientation|screenSize”,禁止屏幕旋转时重建Activity。...
  • mabeijianxi
  • mabeijianxi
  • 2017年06月16日 13:36
  • 1169

Mix-in技术介绍

Mix-in技术,中文不知道应该如何称呼,但意思好象是混入。它的作用是,在运行期间,动态改变类的基类或类的方法,从而使得类的表现可以发生变化。可以用在一个通用类接口中,根据不同的选择使用不同的低层类实...
  • aqua_aqua
  • aqua_aqua
  • 2008年06月28日 18:49
  • 245

Isometric Game 及译法漫谈

原文地址:点击打开链接 作者按:本文探讨了 Isometric Game 相关的背景知识。为了避免读者感觉枯燥(除了游戏之外的有些概念确实枯燥),作者尽量采取“用图说话”的方式,文字尽量简短,图解尽...
  • turingbooks
  • turingbooks
  • 2011年12月26日 10:42
  • 5515
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mix-In的译法探讨
举报原因:
原因补充:

(最多只允许输入30个字)