神经科学家发现,解释代码会激活通用大脑网络,但不会激活语言处理中心。在某些方面,学习计算机编程类似于学习一门新语言。它需要学习新的符号和术语,必须正确组织它们才能指示计算机做什么。计算机代码还必须足够清晰,以便其他程序员可以阅读和理解。
尽管有这些相似之处,麻省理工学院的神经科学家发现,阅读计算机代码并不会激活大脑中参与语言处理的区域。相反,它激活了一个称为多需求网络的分布式网络,该网络也被用于复杂的认知任务,例如解决数学问题或填字游戏。
新研究表明,阅读计算机代码并不依赖于参与语言处理的大脑区域。图片来源:Jose-LuisOlivares,麻省理工学院
然而,虽然阅读计算机代码激活了多需求网络,但它似乎比数学或逻辑问题更依赖于网络的不同部分,这表明编码也不能精确地复制数学的认知需求。
“理解计算机代码似乎是它自己的事情。它与语言不同,也与数学和逻辑不同,”麻省理工学院研究生、该研究的主要作者安娜·伊万诺娃(AnnaIvanova)说。
EvelinaFedorenko,神经科学领域的FrederickA.和CaroleJ.Middleton职业发展副教授,也是麦戈文脑研究所的成员,是该论文的资深作者,该论文今天发表在eLife上。麻省理工学院计算机科学与人工智能实验室和塔夫茨大学的研究人员也参与了这项研究。
语言与认知
Fedorenko研究的一个主要焦点是语言与其他认知功能之间的关系。特别是,她一直在研究其他功能是否依赖于大脑的语言网络,包括布洛卡区和大脑左半球的其他区域。在之前的工作中,她的实验室表明音乐和数学似乎不会激活这种语言网络。
“在这里,我们对探索语言和计算机编程之间的关系很感兴趣,部分原因是计算机编程是一项新发明,我们知道不可能有任何使我们成为优秀程序员的硬连线机制,”伊万诺娃说。
她说,关于大脑如何学习编码,有两种思想流派。有人认为,要擅长编程,就必须擅长数学。另一个人认为,由于编码和语言之间存在相似之处,语言技能可能更相关。为了阐明这个问题,研究人员着手研究阅读计算机代码时的大脑活动模式是否会与语言相关的大脑活动重叠。
研究人员在这项研究中关注的两种编程语言以其可读性而闻名——Python和ScratchJr,一种专为5岁及以上儿童设计的可视化编程语言。研究中的受试者都是精通他们所测试语言的年轻人。当程序员躺在功能性磁共振(fMRI)扫描仪中时,研究人员向他们展示了代码片段,并要求他们预测代码会产生什么动作。
研究人员发现大脑语言区域对代码几乎没有反应。相反,他们发现编码任务主要激活了所谓的多需求网络。该网络的活动遍布大脑的额叶和顶叶,通常用于需要同时记住许多信息的任务,并负责我们执行各种脑力任务的能力。
“它几乎可以做任何具有认知挑战性的事情,让你认真思考,”伊万诺娃说。
之前的研究表明,数学和逻辑问题似乎主要依赖于左半球的多个需求区域,而涉及空间导航的任务比左半球更多地激活了右半球。MIT团队发现,阅读计算机代码似乎激活了多需求网络的左侧和右侧,而ScratchJr激活的右侧略多于左侧。这一发现与数学和编码依赖相同的大脑机制的假设背道而驰。
经验的影响
研究人员表示,虽然他们没有发现任何似乎专门用于编程的区域,但这种专门的大脑活动可能会在具有更多编码经验的人身上发展。
Fedorenko说:“如果你把那些用过30或40年的特定语言编码的专业程序员带进来,你可能会开始看到一些专业化,或者多需求系统的某些部分的结晶。”“对于熟悉编码并且可以有效地完成这些任务但经验相对有限的人来说,你似乎还没有看到任何专业化。”
在同一期eLife上发表的一篇配套论文中,来自约翰霍普金斯大学的一组研究人员还报告说,解决代码问题会激活多需求网络而不是语言区域。
研究结果表明,对于编码应该作为一种基于数学的技能还是一种基于语言的技能来教授,没有明确的答案。研究人员说,部分原因是学习编程可能会同时利用语言和多种需求系统,即使——一旦学会——编程不依赖于语言区域。
“两个阵营都提出了要求——它必须与数学一起,必须与语言一起,”伊万诺娃说。“但看起来计算机科学教育者必须开发自己的方法来最有效地教授代码。”