这周在听万维钢老师讲《计算机思维》(Computational Thinking),作者是两位计算机科学家,Peter J. Denning和Matti Tedre。听完这本书的讲解,我重新回顾大学所学理论知识和吴军博士所讲的计算机思维,对计算机思维用处与用法有了更加深刻的理解。
为了让我说清楚这件事情,先举个“密室逃脱”的例子。
游戏开始时组织“密室逃脱”的主办方一般会先说明游戏规则,然后我们足智多谋、胆识过人的玩家,依靠抓细节、推理和灵活使用道具,完成环环相扣的任务,最终完成任务并获得奖励。密室逃脱中上一个机关的答案是推理出下一个机关的问题依据,依此层层从答案的输出到推理依据的输入。这个过程中,游戏玩家的结果必须准确符合“密室逃脱”的规则,玩家就是一个computer。
如果说将密室逃脱的过程进行拆解,变成流程和标准化的操作,必须要满足三个要求
- 计算过程必须要拆解生很多个步骤,每一步必须要简单且明确。比如收集游戏中的一张信息卡片。
- 所有这些步骤要能够进行拆解,分别交给不同的玩家进行主导,让大部分玩家都能切身参与游戏。
- 还需要有个纠错的机制。一般主办方员工在游戏中会与玩家进行互动,纠正用户“不正确”的推理方向。
这种流程化的操作,叫做“算法algorithm”。但是在游戏过程中我们的玩家有自己的想法,有时想办法阻断游戏继续下去,有时跟游戏组织者互动时就是不按照规则进行回答,等等。这就让我想起了心理学中有“自我、本我和超我”,以及人对事情有偏见和谬误,即人有自己的主观判断与情绪化的东西。如果抛除这些主观判断与情绪化,把一切的推理标准化、流程化和机械化,理论上讲这样的操作结果就不会存在争议。
由此我们引出了冷酷无情的计算,计算机思维的第一原则:把人的情感和主观判断排除在计算过程之外
总结
算法,运用之妙,存乎于心。它来源于生活,我也应该将其归还于生活,这句话送给我自己。因为计算机专业出身,然后导致思维模式很大程度上受限于此,最近跟同学朋友交流过程中出现了不愉快的现象。当然作为不了解计算机的同学,希望这篇文章能够帮助你对“算法”这一高深的名词有了新的理解。