麦戈文大脑研究中心(McGovern Institute for Brain Research)成员、the Frederick A. and Carole J. Middleton Career Development神经科学副教授教授Evelina Fedorenko是该论文的高级作者。麻省理工学院计算机科学和人工智能实验室以及塔夫茨大学的研究人员也参与了这项研究。
麻省理工学院研究生Anna Ivanova表示,“理解计算机代码似乎是一件独特的事。它不像语言,也不完全像数学和逻辑。”其是该论文的主要参与者。

语言与认知

Fedorenko研究的一个主要重点是语言和其他认知功能之间的关系。特别是,她一直在研究其他功能是否依赖于大脑的语言网络,包括布洛卡区(Broca’s area)和大脑左半球的其他区域。在之前的研究中,她的实验室已经证明音乐和数学似乎并没有激活语言神经网络。
Ivanova指出,“在该研究中,我们感兴趣的是探索语言和计算机编程之间的关系。”关于大脑如何学习编码有两种学派。一种观点认为,为了擅长编程,你必须擅长数学。另一种观点认为,由于编码和语言之间的相似性,语言技能可能更相关。为了阐明这一问题,研究人员开始研究阅读计算机代码时的大脑活动模式是否与与语言相关的大脑活动重叠。
研究人员在这项研究中关注的两种编程语言因可读性而闻名——Python和ScratchJr,后者是一种专为5岁及以上儿童设计的视觉编程语言。研究的对象都是精通他们所接受测试语言的年轻人。当程序员们躺在功能性磁共振扫描仪上时,研究人员向他们展示代码片段,并要求他们预测这些代码会产生什么结果。
研究人员发现,大脑的语言区域对编码几乎没有反应。相反,他们发现编码任务主要激活了所谓的多需求网络。这个网络的活动遍及整个大脑的额叶和顶叶,通常用于需要同时记住许多信息的任务,并负责我们执行各种各样的智力任务。
Ivanova表示,“该区域几乎可以做任何具有认知挑战性的事情,让你努力思考。”
先前的研究表明,数学和逻辑问题似乎主要依赖于左脑的多个需求区域,而涉及空间导航的任务则更多地激活右脑而不是左脑。麻省理工学院的研究小组发现,Python似乎同时激活了多重需求网络的左右两侧,而ScratchJr激活的右侧略多于左侧。这一发现与数学和编码依赖于相同的大脑机制的假设相悖。

经验的影响

研究人员表示,虽然他们没有发现任何专门的区域是用于编程的,但这种专门的大脑活动可能在拥有更多编程经验的人身上得到发现。
Fedorenko指出,“如果你找一些专业的程序员,他们花了30或40年的时间用一种特定的语言编写代码,你可能会开始看到一些更明确的反应。但就经验相对有限的人来说,似乎还看不到特别明确的区域。”
eLife上另一篇约翰霍普金斯大学的论文也指出,解决代码问题激活的是人脑的多重需求网络,而不是语言区域。
该研究结果表明,对于编程应该作为一种基于数学的技能还是一种基于语言的技能来教授,并没有一个明确的答案。研究人员说,在某种程度上,这是因为学习编程可能需要语言和多种需求系统,即使学会了某种编程,当使用时也不依赖于语言区域。
对此,Ivanova表示,“数学家和语言学家都提出了各自的要求——教授编程必须与数学结合起来,必须与语言结合起来。但似乎计算机科学教育者将不得不开发自己的方法,以最有效地教授代码。”