传递性,数学上的定义是如果x->y为真,y->z也为真,那么x->z为真。

举个例子,你的老板是你的老板,你的老板的老板是你的老板的老板,那么你的老板的老板也是你的老板。

然而,真实世界中的传递性又是如何呢,你的朋友的朋友能成为你的朋友吗?

C++中的friend关键字有如下规则:

  1. 任何class都可以有任意多的friend class

  2. 任何friend class可以成为任意多class的friend

  3. 我这个class的friend class的friend class,默认不是我的friend class。

可见,编程语言中deny了这种传递性。

那么,继承是不是体现了这种传递性呢?一只白猫是一只猫,一只狸花猫也是一只猫,一只狸花猫和白猫生下了一只会飞的飞猫,这只飞猫还是一只猫。在这里传递性似乎又奏效了。

但是,friend和继承拥有本质的不同,两个friend之间可以没有任何相似之处,而继承要求所有对象都必须同宗同源,也就是说,他们有公共的相似之处。

拥有丰富编程经验的你知道,实际情况下能应用继承的场景并不多,在真实世界中也是一样,大多数拥有复杂交互关系的物体完全不相同,没有任何相似之处。

你的朋友的朋友不但基本不可能是你的朋友,还可能是你的死敌。

所以,真实世界更像是编程界的friend关系,大多数情况下不具备传递性。

那么,考察一下真实世界中的网红,所谓的“联系人”这种角色,这种角色是一种极其稀缺的角色,因为他们手握大量联络信息,能够大规模分发信息,就像一个hub一样。

设想你是花东子的创始人,你研发出了一款世界上效果最好的眉笔,但是如果没有“联系人”这个角色帮你传播这个信息,那么你的眉笔也不可能被外界知道。

所以“联系人”更像是编程世界里的proxy这种模型,在这种模型中处在中央的角色。

然而,即便是“联系人”,也只能在广度上把信息散播出去一层,接收到消息的下一层,也需要有对应的“联系人”才能继续把消息传出去。

根据“六度关系”理论,假若有六个层级,那么至少需要六个“联系人”才能把花东子有全世界最好的眉笔的消息传播到全世界。

这里我们假设每层的“联系人”都是“顶级”的,也就是“顶流”,意思是只要有他一个就可以触达该层的所有人。

但是我们也知道,能问出“哪里贵了?这么多年来工资涨没涨?”的顶流也就只有这么一个,所以可见在很多层级其实是不存在这样的能触达该层所有人的“顶流”的,我们的假设只要六个“顶流”联系人这个假设就错了,因为根本就没有六个这样的“顶流”存在。

那么质量不够只能人数来凑,为了达成把花东子的眉笔推销给全世界所有人的伟大目标,我们不得不在每个层级都挑选出好多个“联系人”,尽可能覆盖全这一层。

但是,拥有丰富软件工程经验的你知道,随着人数的增长,人数之间需要沟通的规模就呈阶乘级增长。花东子要和一级“联系人”沟通,一级“联系人”之间要互相沟通统一文案,一级“联系人”和二级“联系人”之间也要沟通,以此类推。很快,还没到第三级,这个事情就没法管理了。

由此可见,要让一个产品广泛传播开来,其具有的难度之大简直超乎想象。

同样的道理,拥有丰富算法经验的你也会发现,广度优先往往是效率比较高的算法,而深度优先往往就不行。

社会一直提倡的要做T型人才,那么请问这个T是那一横要比较长点好呢还是那一竖要比较长点好呢?

让T的那一横变的更长一点,可以理解为广度优先,让T的那一竖变的更长一点,可以理解为深度优先。那么广度优先往往比深度优先要简单,读3个本科学士学位,比读一个博士学位要简单得多。

也就是说,大多数人都能让那横变的长一些,然而大家都能做的事情,就没有稀缺性,回报率就低。但是如果你要让那一竖变的长一点,如果失败了学不会怎么办。

所以,归根结底是你是喜欢做回报一般般但是非常稳稳的事情,还是说有风险但是一旦成功就会有大回报的事情?

你看,说了半天又绕回了炒股。所以说,炒股就是人生,炒股就是社会。炒股蕴含了天地万物中的一切道理。

上一篇 下一篇