← 返回目录


为什么go和rust语言都舍弃了继承?

钻研人类记忆,探索复习算法。改善教育公平,践行自由学习。

100 👍 / 7 💬

问题描述

比如go和rust。两者一个大规模使用,一个大规模好评。

我自己的理解,类型是天然的,把类型以及对类型的操作封装在一起也是合理的。但有没有必要以目前oop的方式实现? oop是否是一种过度设计?


看了一圈高赞,发现没有人讨论语言哲学,那我就补充一下维特根斯在他的语言哲学中提出的「意义即使用」和「家族相似」这两个概念吧。

43.在大多数使用“意义”一词的情况下——尽管不是全部——我们可以这样来说明它:一个词的意义就是它在语言中的使用。

一个名称的意义有时是通过指着它的承担者来说明的。

66.比如,让我们看一下称为“游戏”的过程。我指的是棋类游戏、牌类游戏、球类游戏、竞赛游戏,等等。它们的共同点是什么?——不要说:“它们一定有某种共同的东西,否则它们就不会被称为‘游戏’。”——而是睁开眼睛去看它们是否有共同的东西——因为,如果你去看这些游戏,你就不会看到对所有游戏来说都具有的共同的东西,而只会看到一些相似之处和一些关系,以及这些东西的系列。再说一遍:不要去想,而是去看!——比如,看看棋类游戏以及它们之间的各种关系。现在转过头来看牌类游戏,你可以在此找到许多与第一组游戏相对应的地方,但是许多相似点不见了,而其他的相似点出现了。当我们再转过来看球类游戏时,许多共同点仍然存在,但也有许多共同点消失了——所有这些游戏都是“娱乐性的”吗?比较一下象棋和连珠棋。或者,是否在游戏者之间总是有输赢或者竞争?想一想单人的纸牌游戏。球类游戏一般都有输赢,但当小孩对着墙扔球然后接住时,这个特点就消失了。看一看技巧和运气在游戏中扮演的角色;注意下棋的技巧和打网球的技巧之间的不同。现在想一想,像小孩跳圆圈舞这类游戏,这里有娱乐的成分,但是,又有多少其他的显著的特点消失不见了!我们还可以用同样的方式去考察许多其他种类的游戏,由此就能看出相似点是怎样出现又怎样消失的。

这种考察的结果是:我们看见一个由相互交叉重叠的相似关系组成的复杂网络;有时在总体上相似,有时在细节上相似。

67.我想不出比“家族相似”更好的表达式来描述这些相似的特征;因为家庭成员之间的各种相似之处,如身材、相貌、眼睛的颜色、步姿、性情,等等,也以同样的方式相互重叠交叉——而我想说的是:各种“游戏”形成一个家族。

根据我自己的理解,自然语言是模糊的,词语本身的含义是通过我们如何使用它来体现的。这种模糊性也体现在我们日常生活中的许多概念,其包含的对象之间并不存在整体的共性,这就打破了「继承」的前提。

而「意义即使用」恰好与「一个对象有什么功能反应了它是什么类型」不谋而合。


← 返回目录