错误有时源于粗心大意,例如忘记关闭文件或拼错文件名,但更多情况下是由思维方面的错误所致——程序员可能不知道文件使用完毕后需要关闭,或认为编程语言会自动关闭文件。
为什么学习第二门编程语言比学习第一门编程语言更容易
人们掌握的知识在其他领域也有用武之地,这种情况成为迁移。
迁移类型
- 低阶迁移和高阶迁移
低阶迁移:指无意识地将已经掌握的技能应用于新情景。比如,更换IDE之后使用快捷键Ctrl+C
高阶迁移:指有意识地将已经掌握的技能应用于新情景。比如,声明变量。 - 近迁移和远迁移
近迁移:指将已经掌握的知识应用于相似的领域。
远迁移:指将已经掌握的知识应用于差异较大的领域。
有可能会产生负迁移
即现有的知识妨碍到学习新知识,则会产生负迁移。
迁移有难度
研究表明迁移确实有难度,而且大多数情况下不会自动产生。
如果程序员计划学习一门新语言以拓展思维方式,那么目标语言最好与自己已经掌握的语言完全不同。
有意识的注意两门语言的异同可以降低学习新语言的难度。
迷思概念:思维中存在的错误
如果程序员坚信程序可以跑通却仍然无法跑通,则表明他们可能受到了迷思概念的困扰。
通过概念转变来消除迷思概念
迷思概念是大脑坚信不疑的思维错误。
如果希望摆脱迷思概念,就要用新的的思维方式取代不正确的思维方式。
程序员学习新语言的时候,为新语言构建正确的心智模型并用它来取代原有语言的迷思概念称为概念转变。
抑制迷思概念
研究表明,就算能成功运用正确的概念解决问题,人们还是会经常依靠原先的概念。
在面对更复杂的问题时却采用更基本但不正确的的推理方式。
雪人问题: 与没有穿毛衣的雪人相比,穿毛衣的雪人融化得更快还是更慢?毛衣可以减少热量散失,从而延缓雪人的融化过程,因此穿毛衣的雪人融化得更慢。
解决上述问题的时候,大脑既能保存“毛衣能保暖”的概念,也保存“毛衣能隔热”因此可以御寒的概念。在毛衣是否会导致雪人的温度升高时,两种概念会互相“打架”,所以只有主动抑制“毛衣能保暖”的概念才能得到正确的结论。如果依靠推理而不是凭直觉进行判断时出现“稍等片刻”的感觉,则表明大脑可能在努力抑制不正确的想法。
当抑制性控制机制处于活跃状态时,正确的概念就可能“战胜”错误的概念。
在学习新的编程语言时避免形成迷思概念
- 应该明白,即使充分相信自己的水平,也不能保证自己的判断就一定正确,所以做到心态开放,不报成见很重要。
- 建议程序员有意识地研究常见的迷思概念以少走弯路。
- 如果能找到按照相同顺序学习同一门编程语言的程序员,那么不妨听听他们的建议。
判断代码库中存在的迷思概念
每当程序员根据之前的编程经验或其他程序员的想法对代码做出假设时,都可能会形成迷思概念。
文档是避免迷思概念的另一种手段。如果程序员发现自己对代码库中的某个方法、函数或数据结构的认识有误,那么除了编写测试,还可以考虑在相关位置添加文档,以提醒自己和他人不要重蹈覆辙。