画完箭头,你手里有了两堆东西:能单独动的,和必须一起动的。这一章我们只干一件事——把「必须一起动」这句话,掰开揉碎,讲到你能亲手摸到。
一个动手就能做的测试
怎么判断某个元素是哪一堆的?有个简单的问句,我把它叫做只动它一个测试:
我能不能只改这一个,而别的东西都不用跟着变?
能——它就是自由变量。不能,一改它就逼着别处也得改——它就绑在一堆相互依赖的东西里。
试几个你熟的:网页上按钮的颜色,红改成蓝,功能一点不受影响——自由变量。代码里一个变量的名字,改个拼写,逻辑毫发无损——自由变量。这些东西你尽可以折腾,改了没人跟你算账。
绑在一起长什么样:跷跷板
再看一个明显绑死的。两个小孩玩跷跷板,想让它平。物理很老实:轻的一头得坐远,重的一头得坐近,谁的体重乘以到中点的距离相等,才平得起来。
现在你想只动一样——把胖小孩往外挪一点。结果呢?跷跷板立刻歪了,为了重新平,瘦小孩也得跟着往外挪。你没法只动一个。体重、距离、平衡,这三样被一条铁律(力矩相等)拴在了一起,动一个,另一个被逼着动,你说了不算。
工程和产品的人还熟悉另一个版本,叫「又快、又好、又便宜,只能挑两个」。想快又想好,那就贵;想便宜又想快,那就糙。三样彼此扯着,你按住一个,另一个必然弹起来——这也是一捆绑死的东西。
「绑死」不是「相关」,差别很要命
这里有个特别容易混的地方,必须点破:相互依赖(绑死),不等于「相关」。
「相关」是两件事常常一起出现,但各自其实都还能自己动。比如「卖冰淇淋」和「有人溺水」在夏天一起变多——它们相关,可你少卖一支冰淇淋,并不会救回一个人。它们各自被「天热」这个第三者牵着,彼此之间并没有拴住。
「绑死」不一样。它是:你改了 A,B 在数学上、物理上被逼着改,没有一丝余地。跷跷板要平,你把距离改了,另一头就必须变,不是「往往会变」,是「不变就不成立」。
这个差别很要命,因为很多人把「相关」误当成「绑死」,于是对着一个其实能单独动的东西说「这动不了」;也有人把「绑死」误当成「相关」,以为自己能只动一个,结果一动,整摊子都散了。分不清这两者,就谈不上摸到本质。
散笔与死结
你可以用一个画面记住这一章:桌上有两样东西。
- 一把散放的笔:想拿走哪支拿走哪支,剩下的纹丝不动——这是自由变量,各自独立。
- 一捆打了死结的绳子:你拽任何一根,整个结都跟着紧一下——这是相互依赖,牵一发动全身。
摸本质,说白了就是在一件乱糟糟的事里,把散笔从死结里挑出来:哪些是我能随手拿走的笔,哪些是拴在一起、我只能整体尊重的结。
下一步:那个死结,凭什么我绕不过
你可能已经在心里嘀咕了:跷跷板那条「力矩相等」,凭什么我就得认它?我偏要胖小孩坐外面、还要它平,不行吗?
不行。而「为什么不行」这件事,本身就值得认真讲一章——那一捆绑死的东西,就是我们说的结构,它是客观规律,不是谁定的规矩。下一章,我们就来看清结构到底是个什么硬东西,以及为什么跟它较劲的人,最后都撞了墙。