抽象-哲学与计算机的共同点(之一)
在中国古代,阴阳最原始的含义就是指阳光的向背。随着其含义的不断扩展和衍化,最终上升到了哲学的高度,将阴阳理解为“相互对待的两端”。
然后从哲学的高度,分析“相互对待的两端”的关系与属性,将这一理论结果再用到具体的实践中。
根据实践的结果,对理论去糙取精,并进一步指导新的实践活动。
我所理解的抽象,就是将具体事物上升到理论高度,从理论高论分析问题,再用于实践的过程。这一过程,不管在哲学及中医中,还是在计算机科学,都是有广泛使用。
抽象的好处:
1.将复杂的事情简单化
想象一下,在古代,平民一般没有机会接受教育。如果医生要给病人解释他的病情,用一大堆术语解释为什么心火过旺会导致肝阳上亢,估计病人要听晕掉了。但是如果把人体的功能通过抽象成五行再映射到身边的事物上,告诉过火烧得太大木头受不了了,就会比较好理解了。
前几天在学习redis的源码,先从main入手。瞄了一眼,发现光main函数都有这么一大坨,立马有种要放弃的念头。
随后,我又在wiki里面找到了这个,就像看到了希望。
流程图,是对实现细节的抽象。
2.抽取相似,关注差异
设计模式里面有个观点,就是预测变化,封装变化。
这一观点最简单的应用就是函数。它相同的处理过程封装,把会改变的部分放在参数里面,很容易引起注意。
函数封装,是对相同处理过程的抽象。
3.隐藏细节
站在一定高度看问题,站得高,看得远。 这是很显然的,不需要进行解释。
虽然抽象有诸多好处在计算机的应用中,但我们面对的毕竟是具体的世界,具象思维才是最直观的。大到程序框架设计,小到函数细节重构,要把抽象用好,都是需要练习的。