神经科学家发现解释代码会激活一个通用的脑网络,但不会激活语言处理中心。
从某些方面来说,学习编程类似于学习一门新语言。它需要学习新的符号和术语,这些符号和术语必须正确组织,以指示计算机该做什么。计算机代码还必须清晰明了,以便其他程序员可以阅读和理解。
尽管存在这些相似之处,麻省理工学院的神经科学家发现,阅读计算机代码并不会激活参与语言处理的脑区域。相反,它会激活一个称为多重需求网络的分布式网络,该网络还被用于复杂的认知任务,如解决数学问题或填字游戏。
“理解计算机代码似乎是独特的事情。它既不同于语言,也不同于数学和逻辑,”该研究的首席作者、麻省理工学院的研究生Anna Ivanova说道。
弗雷德里克·A·米德尔顿生涯发展副教授,脑科学高级作者弗拉基米拉·费多连科是这篇论文的高级作者,该论文今天发表在eLife上。麻省理工学院的计算机科学与人工智能实验室和塔夫茨大学的研究人员也参与了该研究。
语言和认知
费多连科研究的一个主要焦点是语言与其他认知功能之间的关系。特别是,她一直在研究其他功能是否依赖大脑的语言网络,其中包括布洛卡区和大脑左半球的其他区域。在之前的工作中,她的实验室已经表明,音乐和数学似乎不会激活这个语言网络。
“在这里,我们有兴趣探索语言和计算机编程之间的关系,部分原因是计算机编程是一项如此新的发明,我们知道不可能有任何使我们成为优秀程序员的硬连接机制,”Ivanova说道。
她说,关于大脑如何学习编程有两种看法。一种认为,要想在编程上做得好,就必须擅长数学。另一种则认为,由于编码与语言之间存在相似之处,语言技能可能更为重要。为了阐明这个问题,研究人员们着手研究阅读计算机代码时大脑活动模式是否会与与语言相关的大脑活动重叠。
在这项研究中,研究人员专注于两种以易读性而闻名的编程语言——Python和ScratchJr,后者是一种专为5岁及以上儿童设计的可视化编程语言。研究中的受试者都是精通他们被测试的语言的年轻成年人。当程序员躺在功能性磁共振(fMRI)扫描仪中时,研究人员向他们展示代码片段,并要求他们预测代码会产生什么动作。
研究人员发现,大脑的语言区域几乎没有反应。相反,他们发现编码任务主要激活了所谓的多重需求网络。这个网络的活动分布在大脑的额叶和顶叶,通常被用于需要同时记住许多信息的任务,并负责我们执行各种各样的心理任务的能力。
“它几乎可以应对任何认知挑战,让你思考艰难的事情,”Ivanova说道。
先前的研究表明,数学和逻辑问题似乎主要依赖于左半球的多重需求区域,而涉及空间导航的任务更多地激活了右半球而不是左半球。与塔夫茨大学儿童研究与人类发展教授玛丽娜·伯斯合作,麻省理工学院团队发现阅读计算机代码似乎激活了多重需求网络的左右两侧,而ScratchJr激活了右侧比左侧略微更多。
(示意图)
经验的影响
研究人员表示,虽然他们没有确定任何看起来专门致力于编程的区域,但在有更多编码经验的人身上,这种专门的大脑活动可能会发展。
“如果你找一些专业程序员,他们在某种特定语言中编码了30到40年,你可能会开始看到一些专门化,或者多重需求系统的一些结晶,”费多连科说道。“在
那些熟悉编码,能够高效完成这些任务,但经验相对有限的人身上,似乎还没有看到任何专门化。”
在eLife同一期刊上发表的一篇附带论文中,约翰斯·霍普金斯大学的一个研究团队也报告称,解决代码问题会激活多重需求网络而不是语言区域。
这些发现表明,编程应该被教授为基于数学的技能还是基于语言的技能并没有确定的答案。研究人员表示,这部分是因为学习编程可能会同时涉及语言和多重需求系统,即使——一旦学会——编程并不依赖于语言区域。
“Ivanova说:“两个阵营都有声称的说法——它必须与数学一起,它必须与语言一起。”“但看起来计算机科学教育者将不得不制定自己的教学方法来最有效地教授编码。”
该研究得到了国家科学基金会、麻省理工学院脑与认知科学系和麻省理工学院脑研究所的资助。