归纳法,是指“从特定的事实中找出规律,得出结论”的推理方法。用三角逻辑来理解,即按照“数据-论据-观点”的顺序进行逻辑推理。
首先,通过观察或调查,收集有说服力的“数据”;其次,对数据进行分析,找出规律或做出假设;然后,收集新的“数据”,对假设做进一步的验证;最后,经过多次的迭代,形成一般性结论。
例如,在软件设计领域,开发者从实践中遇到的特定问题出发,找出解决这些问题的通用方法。这些方法经过不断地迭代,形成了特定场景下的设计模式。
演绎法,是“将一般规律应用于具体事件,从而引出观点”的推理方法。用三角逻辑来理解,即按照“论据-数据-观点”的顺序进行逻辑推理。
首先,基于一般规律做出假设;然后,根据假设进行推理;最后,将推理结果应用到具体事件中进行验证,如果验证成功则说明结论正确,否则重新演绎。
例如,在排查网页白屏时间过长的原因时,首先要知道网页加载速度慢的一般原理有: 网络慢;服务器响应慢;网页的HTML、JS、CSS文件体积过大或数量过多;JS和CSS逻辑太复杂或加载顺序不合理,阻塞页面渲染;没有合理使用浏览器缓存,等等。然后基于这些原理,分别做出假设:假设网络慢或服务器响应慢,假设网页的HTML、JS、CSS文件体积过大或数量过多,等等。接下来根据假设进行推理,如果是网络慢,尝试切换不同网络,观察是否还有白屏;如果是服务器响应慢,观察服务器日志,检查服务器响应时间和负载情况;如果是HTML、JS、CSS文件体积过大或数量过多,使用浏览器开发者工具检查静态资源加载情况,尝试压缩文件、使用懒加载进行优化。根据推理结果对代码进行修改和测试,如果问题有所改善,证明推理正确。
归纳法一般用来总结经验,避免以后踩相同的坑,同时在遇到类似问题时有经验可复用。演绎法可用于排查问题或探索问题,实际用的比较多。