脑神经活动显示:编程语言不是语言,也不是数学

majer @ 2020.12.17 , 11:54

学习计算机编程与学习一门外语,颇有些相似之处。都需要我们记忆全新的符号和术语,掌握正确的语法。代码还必须足够清晰,以便其他程序员可以阅读和理解。

尽管如此,麻省理工学院的神经科学家发现,阅读计算机代码所调用的大脑区域和处理常规语言的区域并不相同。取而代之的是,代码激活了被称为多需求网络的分布式神经网络——该网络也被用于解决复杂的认知任务,如解决数学问题或填字游戏。

但阅读代码用到的多需求网络的系统资源,和思考数学时也有显著差异,这表明代码也不是数学语言。

“阅读计算机代码似乎是特异的能力。编程语言与语言不同,和数学与逻辑也不相同。”该研究的主要作者,麻省理工学院的研究生安娜·伊万诺娃(Anna Ivanova)说。

她的论文今天发表在eLife上。麻省理工学院计算机科学与人工智能实验室和塔夫茨大学的研究员也参与其中。

语言与认知

先前的研究显示,音乐和数学似乎并未激活语言处理系统。

“我们的兴趣是探索语言与编程语言之间的关系,部分原因是计算机是较晚出现的东西,我们知道不可能有任何硬连线机制使我们成为优秀的程序员。”伊万诺娃说。

她说,关于大脑如何学习编程,存在两种流派。有人认为,要精通编程,就必须精通数学。另一派则认为,由于编码和语言之间的相似性,语言天赋可能更重要(诶呀,我就是这派的)。为了终结这一争论,研究人员直接从脑神经活动模式入手。

本研究中作为主要考察对象的是以可读性着称的Python和ScratchJr,后者是专为5岁及以上儿童设计的可视化编程语言。

实验参与者均为精通测试语言的年轻人。程序员被要求躺在磁共振(fMRI)扫描仪中,研究人员向他们展示写有代码语句的片段,并要求他们说出运行结果。

几乎未看到大脑语言区域对代码做出反应。相反,他们发现,被显著激活的是所谓的多需求网络。这个网络的活动遍布整个大脑的额叶和顶叶,通常用于完成需要大量信息的任务。

“多需求网络,用于应对认知上具有挑战性的任务。”

先前的研究表明,数学和逻辑问题似乎主要取决于左半球的多个需求区域,而涉及空间导航的任务更多激活右半球。麻省理工学院的团队发现,阅读代码似乎可以同时激活两侧的网络,而ScratchJr激活右侧的程度要比左侧高一些。这一发现说明,编程语言本质上和数学是不同的。

换言之,经典的两派理论都不正确。不过这可能是件好事。编程是一种独特且相对独立于语言和数学的技艺,我们可以进行专门的训练,重塑自己的大脑。

以后,可能需要为编程技能开发出更具针对性——而非传统数学或语言——的教育和训练方式,更有效率地培养高水平的程序员。

https://news.mit.edu/2020/brain-reading-computer-code-1215

(0)

相关推荐