大学时我修过一门数理逻辑,成绩还不错,什么蕴含、合取、析取,画真值表画得飞起。可后来有一次电脑黑屏,我根据电源灯亮着、风扇在转,推出显卡坏了——结果你猜怎么着?只是内存条松动。那一刻我忽然觉得,笔记本上的推理规则到了现实里,就像一本没有配地图的驾驶指南,每一步都合法,但你根本不知道自己在哪条路上。
后来我去写程序,被一个偶现的bug折磨了三天。一开始我按“应该”的逻辑去怀疑某个模块,反复看代码就是找不到。最后我气不过,干脆在关键路径里加了一堆日志,用二分法一步一步缩小范围,才定位到是一个线程安全问题。说实话,这也是一种逻辑,但它跟课本上那种“从真前提推出真结论”完全不是一个套路——更像是“假设一个原因,然后动手推翻它,再假设下一个”。我觉得真正的逻辑思维,其实是在一堆约束里笨拙地试错,而不是在找那个唯一的必然。
对比一下很明显:形式逻辑要求前提干净、推理严格,但生活里的前提经常是脏的、假的、甚至自相矛盾的。比如女朋友说“我没事”,你要是严格按字面意思推出她真的没事,那多半离吵架不远了。这种场景让我明白,逻辑思维的第一步根本不是学会推导,而是学会辨别哪些前提值得信任、哪些是在放屁。这一步没人教,全靠撞南墙撞出来的。
再比如下象棋,我常跟楼下大爷杀几盘。以前我总想着算得越远越好,结果被大爷一个弃马陷阱打得没脾气。后来我发现高手跟菜鸟的区别,不是谁更能算,而是谁会故意制造一种“对己有利的不确定性”——他留出破绽,其实是引你进他早就布好的坑。这跟写程序一模一样,你不可能控制所有变量,但你能设计一个容错性强的系统,让意外发生时数据不会崩。所以你看,逻辑思维哪是什么天赋或课程教出来的,它就是在一次次犯傻、吃亏、复盘之后自己长出来的东西。你非要问怎么练,我只能说:多去给自己找点烂摊子收拾,比读十本《思考的艺术》都管用。