light as birdby Yipu Zhang

读SICP前二章有感

July 29, 2018

亮在荆州,以建安初与颍川石广元、徐元直、汝南孟公威等俱游学,三人务於精熟,而亮独观其大略。——《三国志》

按愿望思考(Wishful thinking)

这点不仅是编程的要点,也是有助于生活的一种思维方式。

当在思考的过程中,如果在过程中的某一步过分纠缠细节,很容易迷失了大方向,降低思考的效率。此时不妨无视掉这些繁杂的细节,假设这个过程能在输入下返回期望的结果(接口),不理会其具体的实现,继续进行下一步的思考。

分层设计(自顶而下)

基于按愿望思考,我们可以在设计程序时,假设出当前层次的各个过程、方法,暂时先不理会它们的具体实现。当在设计好接口后、具体实现这些过程,也不必理会上层是如何使用。这样编程的精力能集中在当前层次的模块中。抽象是控制复杂度的银弹,让人能够用有限的脑力理解复杂的大型工程。

良好的分层设计同时也便于改进,当需要修复某一层的bug、或者优化某一层的效率时,该层的上下层无需做太多的改动。分层设计良好的项目生命力更持久。

感悟

过去的我曾有一个思维误区,就是感觉有挑战的问题必定有精妙复杂的解,靠苦思冥想和灵光一现可以找到。导致经常会深陷在问题的各种细节中。看了SICP的前两章,开始意识到将复杂的东西抽象、简化才是人类理解事物的『杀器』。

遇见一个复杂的事物无法理解,不必感到沮丧,可以尝试从自己可以理解的简单角度理解。最简单的,输入不同的信息,观察其会有怎样的输入。这是一种基于实用主义的理解。 甚至更夸张的,不去理解这些复杂事物,看能否直接绕过。有些问题不去面对,可能问题本身就消失了。


Discuss on 𝕏  ·  Edit on GitHub