真正的高手,都具備高度抽象能力
在之前的《编程究竟难在哪? 》,我们谈过编程思维,其实就是“理解问题——找出路径”的思维过程,它由分解—识别模式—抽象—算法四个步骤组成。 今天,想和大家探讨的是这其中最重要的一步——抽象能力。 (一)什么是抽象能力? 人们在实践中认识到,在现实世界中一定事物、状态或过程之间,总存在某些相似的方面,即共性。 把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。 比如,我们将10只十分熟悉的猫咪放入100只陌生的猫咪中,一开始仅靠形象记忆,就可轻而易举找到这10只猫咪,但如果把这10只熟悉的猫放入一千只、一万只、十万只陌生的猫群中,我们仅靠形象记忆找到猫的困难会越来越大,大到不可能。 如果在10只猫身体上都打上记号,事情立即会变得很简单。 这个打记号的过程,是抽象思维。 抽象思维在理解概念时,就是在给所指事物寻找记号,不过这个记号不是人为的,而是事物本身固有的,指的是事物的规律和本质。 当我们遇到从未见过的事物时,如果能够运用“抽象思维”去寻找记忆中的知识——现有的事物之间的联系,作为解决过程的关键要素,那么我们解决问题的效率将会大大上升。 《北大逻辑课》一书中,就讲了一个运用“抽象思维”解决现实问题的例子。 在大宋提刑官中,有这么一桩有名的案子: 有一天衙门接到报案,发现一民居失火,男主人与房屋都惨遭不幸,而女主人因为刚好有事离家,因此幸免于难。 正在女主人为丈夫的逝去而哭泣的时候,法医宋慈发现了尸体的异样:死者虽表层皮肤被烧毁,但口中十分干净,并无烟灰。于是断定这个案件并非意外事故,而是另有凶手隐瞒真相,死者是先被谋杀、后尸体被烧毁。 宋慈的推理过程是这样的: 取一活猪、一死猪一起放在火中烧着,取出后发现活猪被烧毁后口中有大量烟灰,而死猪口中十分干净,并无烟灰。 宋慈解释道:“之所以会如此,是因为动物在被火烧会发出激烈的自救运动,而剧烈运动会大量的呼吸氧气,同时,就必然会把烟灰吸入口中、肺中,例如我们过年烧的猪头,由于是死猪,口中就十分干净。” “同理,本案中死者的口中并无烟灰,因此可以推断,他在火灾发生前,就已经被人杀害了!” 宋慈之所以能做出这段推理,就是灵活运用抽象,从“猪遇火灾的反映”抽象出“口中有无烟灰是生物遇火时,是死或生的唯一标准”这一定理,并加以证明的结果。 一个抽象能力强的人,往往能从复杂的现象中直击事物的本质。也就是我们生活中常...