Mix-In的譯法探討

來源:互聯網
上載者:User
有許多動態語言都支援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,“混元”在漢語中倒是古已有之,如“混元一氣”,還有金庸小說中的大奸角成昆外號就是“混元霹靂手”。這個“混元”大體是指世界初創時的混沌元氣。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.