代码之家  ›  专栏  ›  技术社区  ›  Richard Durr

吱吱声/法罗音特征和新闻峰混音有什么区别?

  •  16
  • Richard Durr  · 技术社区  · 15 年前

    所以Squeak/Pharo支持特性,Newspeak有混合。有什么区别?特性没有本质,但混血儿有?

    3 回复  |  直到 7 年前
        1
  •  9
  •   Jordão    7 年前

    为了更好的比较和解释为什么特性是首选的,你可以检查 traits paper (pdf) .

    本质上,这就是 Lukas Renggli 说:

    traits成员组成一个类,不会改变它的继承层次。冲突必须由特性用户明确解决。

    混音器被线性化为目标类的继承层次结构。如果存在冲突的成员,则声明成员的顺序决定调用哪个成员。这是 脆弱的 因为它隐式地定义了组合的行为,并且类作者必须知道潜在的冲突以及它们将如何影响结果类。

    既然混血儿被线性化了,他们就不会受到臭名昭著的 钻石问题 “多重继承。所以它们堆积在一起的脆弱性是另一个问题,我将把它称为 红宝石问题 “,与宝石的比喻保持一致。因为一些奇怪的原因 moose 珍珠不像红宝石那样能说明问题。

        2
  •  9
  •   Lukas Renggli    15 年前

    特征是用构图规则组成的。冲突必须手动解决,一个特性不会意外地重写另一个同名的方法。

    混合子是按顺序组成的,因此具有类似于多重继承的脆弱性问题。

        3
  •  8
  •   Yardena    15 年前

    在Newspeak中,所有的类都是混合类。以下是Gilad Bracha对 Newspeak discussion forum :

    混音不是Newspeak的特色 本身。也就是说,我们没有设计 语言说,好的,现在我们要补充 混合蛋白。混音器自动脱落 从类嵌套和基于消息 语义学。也就是说,如果你有 虚拟类,你有混音器 除非你真的禁止他们。…

    试图解决感知问题的特质 混合问题。

    1. 几乎没有实际经验表明 感知到的问题是真实的。
    2. 特性被限制为无状态。这简化了问题, 但不能处理 兴趣。事实上,现在 试图添加的研究论文 状态到特征。

    特性完全被 一般模型,我设计了很多 几年前在我的博士论文(可获得 离开我的网站,如果你真的想 挖深) … 我想检查一下 把这些组合器合并到 最新消息。……