程序员需要了解的逻辑学思想

1,167 阅读12分钟

导言

简单的逻辑学 是一本连中学生都能够读懂的书,但是这本书的最终目的不是介绍逻辑这门学科,而是帮助你在工作生活中用逻辑的基本思想去思考,去学习,这样更有助于我们发现事物的本质和真相,这篇文章算是一个读书总结吧,我会把一些书中我觉得比较重要的观点概括性地讲出来,也会写一些自己的思考总结,希望对你有帮助


什么是逻辑

我们平时说或者经常听到别人这样说 “你说的话怎么没有一点逻辑,我听的不是很懂” 或者是 “你说的内容逻辑性很强,听完之后很有共鸣。”,这里的逻辑可以理解为有条理,清晰等等。这也就说明逻辑是一个褒义词,它是符合大部分人价值观的东西。这么说可能我们还是不太清楚什么是逻辑,书中指出逻辑包含两个部分,“前提” 和 “结论”,逻辑推理就是用一个或者多个正确的前提去论证得出结论的过程,正确的逻辑推理可以得出事物的真相,而错误的逻辑推理则会得出错误的结论,或是让自己更加的困惑不解。由此可见,逻辑的最终目的就是寻找事情的真相,寻找事物的本质。这里我们重点是要分清楚哪些是正确的观点,哪些是错误的观点,因为正确的观点是得出正确的结论的必要前提,注意这里是必要条件,不是充分条件,关于充分条件和必要条件,这里简单解释下,必要条件: A && B && C && .... -> T充分条件:A || B || C ... -> T,这里也就是说,正确观点还不足以推出正确的结论,必须要加上其他的条件,比如正确的推导过程等等。


基本原理

像原文中说的那样,逻辑学中的原理性的东西是不需要去论证的,也是不能被证明的,它是不证自明的,它们反应的是绝对基础的事实,它们也是人类意识行动的首要基础,因此深刻理解这些不变的东西对于我们应用逻辑学非常的重要。这里讲几个我觉得比较重要的,首先是矛盾律,它指的是同一时刻,某个事物不可能在同一方面既是这样,又不是这样。这个很好理解,中学的时候我们通常使用 “反证法” 去证明一些数学上的题目,这个过程就是先假设一个东西是对的,但是最后在其正确的前提下推出了它错误的结论,使其自相矛盾,从而证明它不是正确的。

另外还有一个值得注意的原理,或者说是思想就是我们需要找到问题的根本原因,而不是潜在原因,比如 A -> B -> C,这里事件 A 导致了事件 B,事件 B 导致了最后的结果事件 C,当我们看到事件 C 的时候,我们往回寻找原因,首先找到事件 B,这时如果我们不继续往下探究问题的根源,满足于当下,那么其实我们并没有找到最核心的,最根本的原因,也就是这里的事件 A,因此问题还是没有得到很好的解决。在当今这个快节奏的社会,大多数人追求的都是一些快速的东西,在这样的大环境下,有点耐心,不急躁,努力去思考问题的本源,相信你会看到大多数人看不到的东西,从而能到达大多数人到达不了的高度。

第三个要讲的是关于事物的定义,逻辑上定义术语包含两步:

  1. 将要定义的术语放入最相近的类别中
  2. 确定其与同类中其他事物的不同特性

在我的理解中,这也是了解一个事物或者事情的步骤,举个例子,我们学习 Java,我们首先要把 Java 这个术语放到一个类别中,这里有很多的选择,比如计算机知识,计算机语言,计算机静态语言,很显然,这里我们选择计算机静态语言最好不过,因为它更相近,这样更有助于我们对知识的归纳,方便我们更加快速地定位到知识,在计算机静态语言这个类别中,除了 Java,还有 C++,C,... 我们必须了解 Java 和其他同一类别下的其他语言的不同点,才能够更好的去了解 Java 语言的一些的设计理念和设计目的。你有没有发现我们严格按这两个步骤走下来,我们更能了解事物的本质,没错,就是这样,把这样的方法带到我们的编程学习当中,相信我们能够学习得更加透彻,知其然,也知其所以然,而不是仅仅停留在表面,停留在那些宏观的概念上。

最后要讲的是直言命题,这里作者给了两个陈述句,“收音机在汽车后座上” 和 “收音机可能在汽车后座上”,这里的第一句话就是直言命题,直接说出事物的真相,我们可以马上根据这句话得出相应的结论,但是第二句话就不行,想要得出结论我们还需要进一步的行动或者推论。这里我并不想说直言命题有多好,不直言命题就不对,我是想说我们说话或者平时交谈的时候应该注意自己或者别人的表达,明白什么东西是事实,是真相,是客观存在的东西,什么东西仅仅代表的是个人的主观评价与猜测,避免无意间的话语造成歧义,妨碍自己或者别人对客观事物的理解,这个在高效沟通中是很重要的。


逻辑推理

我们上面讲过逻辑学就是寻找事物真相的学科,说的更直白些就是根据前提条件推导结论的过程,最后我们能不能得出正确的结论其实是基于前提条件的正确性,和推导过程的正确性,那在推导之前呢,我们首先得判断这里的前提条件是不是正确的,而且必须保证这里的前提和我们要推导的结论是相关的,是联系紧密的,如果我们基于错误的或者不相关的前提条件去推理的话,显然结论会是错误的,就算是正确,也只是恰巧正确,不能从逻辑层面上证明其正确。

首先要讲的是特称全称这两个概念,像是“一般”,“有些”,“大多数” 都是属于特称的范畴,“所有”,“一切” 以及 “全部” 这些带有绝对性质的词表示的是全称,我们要清楚知道一句话,或者是说的一件事情当中,描述者说的是全称还是特称,因为推理过程中,我们可以由全称的命题,得出特称的结论,但是反过来就不行,比如 “所有的狗都是四条腿可以推出沙皮狗是四条腿”,但是反过来则不行,这个很好理解,但是我们需要把这些知道的东西,理论性的东西运用在平时我们的思考中,往往并不简单,不信可以试试,你会发现自己很多时候说的话都是不符合逻辑的。

逻辑推理中还有一个比较重要的点就是比较,我们之所以能够分辨事物的不同,靠的就是比较,也正是因为这些比较,才有了人类众横交错的观念。比较两个事物的时候,特别是那种庞大的事物,我们判断两个事物是否相似不能仅仅根据相似点的多少来判断,因为起决定性作用的是这些相似的地方的重要性,这些个相似的地方是不是这个事物的本质,如果这个相似的地方揭露了两个事物的本质,它就是重要的,因为它是事物本身的特性,在这种情况下,我们可以说这两个事物是相似的。

逻辑推理有两种论证方式,演绎论证归纳论证,演绎论证是从一般到个别,而归纳论证则相反,简单点说就是演绎论证得出的是必然的结论,而归纳论证得出的是可能性的结论。注意,跟之前一样,这里没有好坏、优劣之分,这两个是在不同场合,不同条件下的推理方式,演绎论证只需要基于前提条件一步步往下推理即可,而归纳论证则不同,因为这里你要干的事情是用部分情况推导出整体情况,因此你得保证你取到的样本有足够的代表性,收集到的数据足够多,足够准确,不然你得出的结论是不够有说服力的。不管是演绎论证,还是归纳论证,只有证据充足,真实,前提条件和最后的结论关系紧密,最后推导出的结论才会是可信的。


误导逻辑判断的一些因素

文章当中也给出了一些会影响我们逻辑思考的因素,在平时生活中使用逻辑需要避免或者减少受到这些因素的影响。

首先就是情感因素,不得不说人本来就是一个情感动物,情感和理性是共存的,有些时候我们做一些事情并不是因为这个事情正确,我们很多时候的认识是从感性上面来认识的,这并不是错,我们不可能完全规避情感因素的影响去使用逻辑。但是这里需要强调的是,我们做事情的时候得清楚这件事情我做是因为其正确才去做,还是说为了满足自己在情感方面的需求,如果是前者的话你是可以抱有一些个期待的,期待得到正确的结果,但是如果是后者的话,你就要想到可能发生的问题,以及要预备好问题发生的解决办法,不然自己可能会陷入手足无措,进退两难的局面。书中也给出了一个基本原则,就是永远不要直接调动人们的情感,要努力使人们自己发现真相。只有真相,才值得人们为之欢呼雀跃

另外一个影响逻辑判断的是怀疑,可能我们会根据之前的一些历史经验来看待当前的问题,这里有两个状态,第一是将怀疑永久化,这种怀疑的负面的影响是非常巨大的,也是极度危险的,因为它在逻辑推理开始前就已经设下了巨大的障碍。第二种是根据一些个理论依据做适当的怀疑,这种怀疑是正常的,也是对我们推理和认知起保护作用的,能够帮助我们往更加正确的方向上去做推理。

逃避问题也是一个影响逻辑判断的因素,有时我们因为自身的懒惰,以及追求快速的结果,选择在收集前提条件,或者在推理步骤上面偷工减料,就简单认为没有证据来证明这个事情的正确与否。如果确实是我们对某个事物的认知有限,不能作出确定的判断,我们是可以说不知道的;在你做了长久深入的调查之后说不知道,与你根本没有任何付出任何努力时说不知道是有本质区别的,这样的无知是懒惰和漠视的结果。

另一个影响逻辑判断的是人云亦云,我们很多时候的思想或者说是做法是跟着大多数走的,但是你需要知道的是,对于一个错误的认知或者观念,即使再多的人认为它是正确的,从本质上面来看它还是错误的,我们做逻辑推理,更多的是需要知道事情的真相,真假,而不是去纠结谁做了这个事情。


总结

上面的东西是我的一些概括性总结,肯定有说的不到位的地方,但是我相信知道跟不知道是有本质区别的,我们需要知道逻辑的重要性,并渐渐地将其融入自己的生活当中,下次听别人讲话的时候,我就会试着去看他话中的逻辑,我可以清楚的知道他的话中什么是主观的观念,什么是真正的客观事实,我也会试着让自己的话语更有逻辑性,更具有说服力,练的多了,思考的多了,就进步了,期待自己过些日子在回过头来看这本书的时候,会有更多的不一样的想法。