循环,发现可能 - 谈编程的思维

身为学习者,什么最值得你学习。

在苹果公司教育副总裁库奇的新书《学习的升级》中,认为编程将成为21世纪的外语。

不是说编程语言本身有那么重要,问题的关键在于掌握编程思维。

身为程序员,编程带给我一些日常生活中不怎么接触的思维训练。

你要学会用计算机思考的方式来观察和理解世界,在遇到困难的时候,可以用用计算机听得懂的指令,让它帮你解决问题。

今天谈一谈,程序思维中的一环:循环的思维。

从语言出发

人用简单的指令告诉计算机该怎么做事,这就叫编程。

计算机周而复始执行一条或多条指令,这就叫循环。

同属语言,但自然语言和程序语言,有明显区别。

在自然语言中,循环不是基本语法,使用的少。

在编程语言中,循环是基本的语法,司空见惯。

给一段 Python 程序的示例,直观感受一下。

while True:
    doSomeThing

这段程序的功能是能触发某项循环工作,并且持续时间是永远。

这种差异好理解,自然世界同一件事鲜有发生重复,时间流逝,每一天都是全新的一天。

在计算机世界则不同,计算机不知疲倦、无感时间,擅长反复不停的执行。

语言就是思维本身,缺少语言,会缺少思考,循环是生活中缺失的思考,指向学习的方向。

《习惯的力量》中,提出习惯养成需要回路,回路即循环,信号、行动、奖励,周而复始的轮回,最终带来新经验,带来新自我。

循环可以改变行动,也可以改变思维。

下面从不同的角度展开,去发现些不同的可能。

知识的保真

在英国生物学家 布莱克摩尔的《谜米机器》是一本研究文化基因的杰作,书中讲到学习中要解决的关键问题是,知识如何在传递中保真。

玩过「拷贝不走样」游戏的话会知道,经过传递之后,信息会发生变形,而你我当然不希望学到失真的知识。

用一个公式来打开思考:指令 + 循环 = 结果。

传递结果容易失真,这时可以反向思维,解开循环的包裹,传递源头的指令。

布莱克摩尔的解决是用「拷贝指令」来代替「拷贝结果」。

研究发现,指令的传递虽也可能出现失真,但这些错误在循环中会被发现并纠正,这是人类适应的学习。

中国有一句古话叫授之与鱼、不如授之与渔。两者的差别不仅在于内容本身,还在于内容的保真。

渔是在获得方法之后,用自己的实践不断循环,能够获得真正的鱼。鱼的保鲜很短,渔的存在很长。

在日常学习中,知道一个方法,并不意味学会,恰恰只是开始。

概念比案例更保真,模型比故事更保真,思路比结论更保真。

在循环中不断修正补完,才是还原了知识,越靠近源头,知识的保真越高。

用好循环的思维,要看到人和计算机的不同,这需要刻意的练习。

刻意的练习

采铜老师的新书《精进2》,副标题是解锁万物的心智进化法,告诉我们洞察世界的方法。

让我触动的是「循环」这一个章节,谈到了埃里克森教授的《刻意练习》。

「刻意练习」的理论是令人信服的,但是也存在着操作性不足的问题。就拿「反馈」这个点来说,训练需要反馈,但怎样能有反馈呢,并没有特别好的答案。

我们完全可以通过元素组合的方法,构造出某种循环,交替进行两种不同的训练,形成互补的效果,这些方式能帮助学习获得更好、更强的反馈。

迈克尔·乔丹说「练习罚球的最好方法就是闭上眼睛」,第一步是睁眼偷懒,然后同样的调整好姿势,把眼睛闭上,再把球投出。

为什么在闭眼投之前要先睁眼投一次呢,第一步是强化眼前的视觉信息,第二步闭眼时,能尽力模仿之前的视觉印象,这是「吸收-构造」的循环。

「吸收-构造」的循环同样适用于日常生活。

比如:阅读时,如果仅仅读,收获会快速耗散,一旦配合其他活动,比如书评、卡片,读和写两者交替,以阅读来吸收,以写作来构造,吸收带宽大有提高。

运用循环的交替,激发正向的反馈,才是刻意进化的方向。

自然的选择

循环也会有副作用。

在《智能时代》中讲到,计算机和人出错有一个大的区别,后者出错常常体现在个案上,而计算机则不同,通常不出错,出错就是成批出错,造成打错。

计算机系统的底层原理的核心就是循环,循环终止的条件是人为来设定的,当人们没有经历过一件事之前,即使这件事出现的可能很大,也不会提前想到,就是如果一旦出现了超乎预想的场景,计算机有可能会出现完全超出我们想象的行为。

2008年年底的股灾,甚至在2010年金融危机已经过去后第一次莫名其妙的股市暴跌,在很大程度上都是因为计算机操作导致股价雪崩式下跌。对程序员来说,灾祸总是会意想不到的猛烈。

计算机的循环是一种固定的循环,大自然的循环是一种生态的循环。

在丹尼特的《直觉泵》里把整个进化过程描绘为一个规则系统,在循环的过程中不断去改良,不断的去适应,认知的全部“魔法”就和生命一样,取决于周而复始的循环。

这种适应机制,达尔文称为「选择压」,即是说,自然界施与生物体选择压力从而使得适应自然环境者得以存活和繁衍。

生活中会发现,程序员通常不善沟通,原因是他们不需要沟通这个要素也能活下来,程序员的要素是与机器沟通。而项目经理这个角色就特别依赖沟通, 因此即便是同一个项目的不同物种,各自依赖的要素也是不一样的。选择压不同,带来不同的进化方向。

「选择压」始终存在,主动选择优于被动接受。

循环无穷无尽,要为我所用,需要施加适当的压力。

循环的力量

今天谈的是程序思维,思维无法看见,但思维无处不在。

今天谈的也是自然规律,既是对过去的探索,也是对未来的脑洞。

循环是一种思考的可能,提高知识的保真,加速自我的提升。

循环是一种持续的力量,交替吸收和构造,改变思维的带宽。

循环是一种时间的信仰,相信彼此的组合,构造成长的螺旋。

当你感到无路可循,试着用循环来破局。

没有什么是循环无法改变的,如果还没改变,再多循环一会儿吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容