好的数学=好的编程技能?麻省理工新发现:两者激活的大脑区域不同据说学习编程就像学习一门新语言,但事实真的如此吗? 不不不,至少在阅读代码的时候,你的大脑不会这么想。 最近,麻省理工学院的神经科学家在eLife杂志上发表了一项新研究: 阅读代码时,不会激活人脑中涉及语言处理的区域。 相反,被激活的是一个称为多需求(MD)网络的分布式网络。 而这个MD网络通常在人们处理更复杂的认知任务时被激活。 比如数学题,填字游戏等等... 难怪...看着别人的代码,我一直有一种很痛苦的冲动。原来真的是“烧脑”啊! 当你阅读代码时,你的大脑会发生什么? 你可能认为代码本质上是在解决与数学或逻辑相关的问题,所以阅读代码激活MD网络无可厚非。 太简单了,太天真了。 麻省理工学院的研究人员进一步发现: 虽然在阅读代码时MD网络被激活,但与数学和逻辑问题相比,它似乎更多地依赖于这个网络的不同部分。 也就是说,阅读代码时大脑的工作状态并不能准确复现大脑在解决数学问题时的认知需求。 通讯作者AnnaAIvanova表示: 理解计算机代码不同于语言、数学和逻辑,仿佛它是自己的东西。 嗯,有点“VIP专区”的味道。 研究人员主要测试了两种编程语言:一种是Python;另一种是ScratchJr,一种流行于少儿编程的可视化编程语言。 测试对象是两组精通以上两种编程语言的年轻人。 一般的测试过程是让这些年轻人平躺,工作人员会给他们看代码片段和文字说明(如上图),让他们预测这些代码会产生什么样的结果。 在此过程中,研究人员还利用脑功能磁共振成像(fMRI)扫描检测这些年轻人的大脑活动。 以上实验为本研究的“主实验”(上图A),此外,还有两个额外的“子实验”(上图B,与定位器相关): MDSystemLocalizer:Hardmode,在出现的8个蓝色方块中,一次记住2个的位置;在简单模式下,在出现的4个蓝色方块中,一次记住1的位置。 语言系统定位器:包括一个句子和非单词(一次出现一个)。 扫描测试对象后,得到以下结果。 图中的A表示MD网络在大脑左右半球的位置,以及涉及语言的大脑区域。 B和C分别显示阅读Python和ScratchJr代码或文本时来自fMRI扫描的响应反馈。 更具体地说,SR代表句子阅读,NR代表非单词阅读,SP代表句子问题,CP代表代码问题。 从实验结果很难看出大脑中的语言区对代码问题(CP)几乎没有反应,或者反应极低。 但令人惊讶的是,在阅读代码的过程中,MD网络主要被激活,而且活动分布在大脑的额叶和顶叶。 AnnaAIvanova对此评论道: MD网络几乎可以做任何具有认知挑战性的事情。 然而,之前的研究表明,数学和逻辑问题似乎主要依赖于左脑的MD区域,而涉及空间导航的任务比左脑更能激活右脑。 麻省理工学院这次的研究表明,在读码过程中,MD网络的左右两部分似乎同时被激活;并且,在阅读ScratchJr代码时,右脑的活跃程度略高于左脑。 也推翻了之前的认知,即阅读代码时的大脑活动与数理逻辑是一样的。 更倾向于“数理逻辑”还是“语言”? 关于人们更倾向于“数理逻辑”还是“语言”的问题,是大脑在处理代码过程中的活动机制,这已经不是第一次了。 正如AnnaAIvanova所描述的,关于大脑如何学习编程有两种学派: 有些人认为,要想擅长编程,就必须培养数学能力。 另一种观点认为,由于编程和语言之间的相似性,语言技能可能更相关。 最早使用科学成像工具做这方面的研究还需要追溯到2014年。 来自帕绍大学(德国),CMU等机构联合对程序员的大脑如何理解代码进行了研究。 当时使用的方法还是fMRI,参与者是17名精通Java的同学。 参加测试的每个学生都必须以相似的难度阅读几个不同的Java代码片段,因此研究人员可以对获得的大脑成像数据进行平均。 这项研究并没有得到很强的结果,但是第二作者说: 阅读代码更像是“语言”,这是错误的。 这次除了麻省理工学院在eLife上发表的研究外,还有一篇来自约翰霍普金斯大学的支持论文。 他们的研究还表明,在代码阅读过程中,大脑的许多MD网络被激活,而不是与语言相关的区域。 至于大脑在阅读代码时是否有专门的“工作区”,麻省理工学院的研究人员表示: 虽然没有看似清晰的“编程区”,但这种专属的大脑活动可能在人身上会有更多的发展有编程经验。 实验团队介绍 本研究来自麻省理工学院大脑与认知科学系。 这项研究的主要作者是麻省理工学院的研究生AnnaAIvanova,她对语言和语义处理的神经基础感兴趣。 另一位通讯作者是EvelinaFedorenko,现任麻省理工学院脑与认知科学系助理教授。
