编程是更像数学还是人类语言?- MIT News


关于大脑如何学习编码,存在两种思想流派。有人认为,要精通编程,就必须精通数学;另一个建议认为,由于编码和语言之间的相似性,语言技能可能更相关。在某些方面,学习计算机编程与学习新语言相似。它需要学习新的符号和术语,必须正确组织这些符号和术语以指导计算机执行操作。计算机代码还必须足够清晰,以便其他程序员可以阅读和理解。
为了阐明这个问题,研究人员着手研究在阅读计算机代码时大脑活动模式是否会与语言相关的大脑活动重叠。
研究人员在本研究中重点关注的两种编程语言以可读性着称-Python和ScratchJr,这是一种专为5岁及5岁以上儿童设计的可视化编程语言。研究对象均为精通测试语言的年轻人。当程序员躺在功能磁共振(fMRI)扫描仪中时,研究人员向他们展示了代码片段,并要求他们预测代码将产生什么动作。
研究人员几乎看不到大脑语言区域对代码的反应。相反,他们发现编码任务主要激活了所谓的多需求网络。这个网络的活动遍布整个大脑的额叶和顶叶,通常是为需要同时记住许多信息的任务而招募的,它负责我们执行各种心理任务的能力。
尽管阅读计算机代码会激活多需求网络,但与数学或逻辑问题相比,它似乎更多地依赖于网络的不同部分,这表明编码也不能精确地复制数学的认知需求。
先前的研究表明,数学和逻辑问题似乎主要取决于左半球的多个需求区域,而涉及空间导航的任务比右半球更能激活右半球。麻省理工学院的小组发现,读取计算机代码似乎可以激活多需求网络的左侧和右侧,而ScratchJr激活右侧的程度要比左侧高一些。这一发现违背了数学和编码依赖相同大脑机制的假设。
 
经验的影响
研究人员说,尽管他们没有发现似乎专门用于编程的任何区域,但这种具有特殊大脑活动的人可能会在具有更多编码经验的人中发展。
Fedorenko说:“如果您聘用了以30年或40年的特定语言编写代码的专业程序员,您可能会开始看到某些专业化知识,或者是多个需求系统某些部分的结晶。” “对于那些熟悉编码并且可以有效地完成这些任务,但经验相对有限的人来说,似乎您还看不到任何专业化知识。”
约翰·霍普金斯大学的一组研究人员在同一期eLife上发表的一篇伴随论文中也报告说,解决代码问题可以激活多需求网络,而不是语言区域。
研究结果表明,对于编码应该以基于数学的技能还是基于语言的技能进行教授,尚无定论。研究人员说,部分原因是因为学习编程可能会同时依赖语言和多种需求系统,即使学习后编程也不依赖于语言区域。
两个阵营宣称,编程必须与数学结合在一起;或者编程必须与语言结合在一起。但是看来,计算机科学教育者将不得不开发自己的独特方法来最有效地教授编程。