对人脑而言,阅读计算机代码和阅读语言有何不同?
作者 | Anne Trafton
翻译 | 火火酱,责编 | 晋兆雨
出品 | AI科技大本营
头图 | 付费下载于视觉中国
神经科学家们发现,人类在解读代码时会激活一个通用的大脑区域网络,但不会激活语言处理中心。
就某些方面而言,学习计算机编程和学习一门新语言的过程非常类似。二者都需要学习新的符号和术语,然后以正确的方式将这些符号和术语组织起来,进而指导计算机去执行相应的任务。和语言一样,传达计算机代码时也需要足够清晰,以便其他程序员能够阅读和理解。
尽管两者间有这些相似之处,但麻省理工学院的神经科学家们发现,人类在阅读计算机代码时并不会激活大脑中与语言处理有关的区域。相反,它会激活一个名为“多重需求网络”的分布式网络,该网络也会被用于处理复杂的认知任务,如解决数学问题或填字游戏。
然而,尽管阅读计算机代码会激活“多重需求网络”,但与解决数学或逻辑问题相比,它所依赖的网络区域又有所不同。因此,这表明编码过程并不能精确地复制数学认知需求。
麻省理工学院研究生、该研究的主要作者安娜·伊万诺娃(Anna Ivanova)表示:“理解计算机代码似乎是一种独一无二过程。它不同于学习语言,也有别于处理数学和逻辑问题”。
伊芙琳娜·费多伦科(Evelina Fedorenko)——弗雷德里克·A和卡罗尔·J(Frederick a . and Carole J. )米德尔敦神经科学职业发展副教授,兼麦戈文大脑研究所(McGovern Institute for Brain Research)成员——是该项研究论文的资深作者。同时,麻省理工学院计算机科学与人工智能实验室(MIT’s Computer Science and Artificial Intelligence Laboratory)和塔夫茨大学(Tufts University)的研究人员也参与了此次研究。
语言与认知
费多伦科研究的重点之一是语言和其他认知功能之间的关系。尤其是,其他功能是否依赖于大脑的语言网络——包括布罗卡氏区(Broca’s )和大脑左半球的其他区域。她之前参与的研究证明,音乐和数学似乎不会激活这一语言网络。
伊万诺娃指出:“我们乐于去探索语言和计算机编程之间的关系,计算机编程是一项新技术,还不存在能够使人一键成为优秀程序员的硬性机制”。
她表示,关于“大脑如何学习编码”的问题,目前学术界的观点主要分两派:一派认为,要善于编程,就必须擅长数学;另一派认为,由于编码和语言学习存在相似性,因此语言技能或许更有利于编程学习。为了弄清楚这个问题,研究人员们开始研究在阅读计算机代码时的大脑活动模式是否和同语言相关的大脑活动存在重叠。
在这项研究中,研究人员重点关注的是两种以可读性强而著称的编程语言——Python和ScratchJr,专为5岁及以上人群设计的可视化编程语言。研究中的受试者都是精通其所测试语言的年轻人。当程序员躺在功能性磁共振(fMRI)扫描仪中时,研究人员会向他们展示一些代码片段,并让他们预测这些代码会生成什么操作。
结果发现,被试者的大脑语言区几乎没有产生任何反应。相反,研究人员发现编码任务主要激活了所谓的多重需求网络。该网络活动主要分布于大脑的额叶和顶叶,常被用来完成需要同时记住多种信息的任务,并负责协助人类执行各类脑力任务。
伊万诺提到:”多重需求网络几乎可以完成任何具有认知挑战的事情,促使人们努力思考”。
以往的研究表明,数学和逻辑问题似乎主要依赖于左脑的多重需求区域,而当涉及空间导航任务时,人类右脑的激活程度则要高于左脑。麻省理工学院的研究团队发现,阅读计算机代码似乎会同时激活人脑左右两侧的多需求网络,而ScratchJr对右侧的激活程度略高于左侧。这一发现推翻了此前“数学和编码依赖于相同的大脑机制”的假设。
经验的影响
研究人员表示,虽然此次试验似乎并没有发现专门负责计算机编程的大脑区域,但编程经验更丰富的人可能会发展出这种专门的大脑活动。
费多伦科称:“如果找一些花了30或40年时间持续用某种特定的语言编写代码的专业程序员,我们或许就会在人脑中发现一些特殊地专业化现象,或在多重需求系统的特定区域发现结晶化现象。这需要受试者非常了解编程,并且能高效地完成相关任务。但在经验相对有限的人身上,我们似乎还看不到任何专业化现象”。
在同一期《eLife》上发表的另一篇相关论文中,来自约翰霍普金斯大学(Johns Hopkins University)的研究团队也报告称,解决代码问题激活的是大脑的多重需求网络,而不是语言区域。
研究结果表明,对于“编程应该作为一种基于数学的技能还是基于语言的技能来教授”这一问题,目前还没有一个明确的答案。研究人员表示,或许这是因为,从一定程度上而言,学习编程的过程既要依赖于语言,也要依赖于多重需求系统,但在学会之后,编程便不再依赖于大脑语言区域。
伊万诺娃提到:“两派观点各执一词——编程必须和数学结合在一起;编程必须和语言结合在一起。但对于计算机科学教育者们而言,要想以最有效的方法来教授代码知识,似乎必须要开发出适合自己的方法。”
这项研究由美国国家科学基金会(National Science Foundation)、麻省理工学院大脑和认知科学部(Department of the Brain and Cognitive Sciences at MIT)以及麦戈文大脑研究所(the Department of the Brain and Cognitive Sciences at MIT)资助进行。
*本文仅代表作者个人观点,不代表AI科技大本营任何立场。
原文链接:
https://news.mit.edu/2020/brain-reading-computer-code-1215
本文由AI科技大本营翻译,转载请注明出处
更多精彩推荐
为什么苹果M1芯片这么快?
2020年中国AI算力报告发布:超大算法模型挑战之下,公共AI算力基建是关键
短视频特效“耍花招”:线上投篮、摆摊,让画中人摇摆,浅谈腾讯微视的AR基建
企业使用云计算低效益怎么办?区块链或成良药
跨平台将终结
对人脑而言,阅读计算机代码和阅读语言有何不同?相关推荐
- 格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序“[25024] Console1.exe”已退出,返回值为 0 (0x0)。
格子玻尔兹曼方法书中,计算机代码(Fortran语言)FDM的输出结果是什么,为什么显示程序"[25024] Console1.exe"已退出,返回值为 0 (0x0).
- 能阅读计算机英语,全阅读英语电脑版
全阅读英语电脑版是一款英语阅读练习软件,提供了阅读绘本,分级阅读,录音评分等功能,深度匹配孩子在学校学习的教材,玩游戏.拖拖乐.青蛙过河等,能够全面提高英语阅读能力. 功能介绍 1.[学习模式]:通过 ...
- 你不会编程,不是你不行,很有可能是老师教的方法不好。科学家发现:对大脑而言,代码编程与语言学习不同...
点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 神经科学家发现解释计算机代码可以激活通用的大脑网络,但不能激活语言处理中心. 在某些方面,学习计算机编程语言与学习一门新 ...
- 电子计算机的大脑核心是什么,戴君惕《人脑与电脑》初中说明文阅读题及答案...
戴君惕<人脑与电脑>初中说明文阅读题及答案 电子计算机真是人类的伟大发明.在运算速度方面,它有着人所无法相比的优越性.最近我国制成的"银河"巨型计算机,每秒钟能进行10 ...
- C语言计算月份天数if,阅读下列说明,回答问题1至问题3。【说明】 以下代码由C语言书写,能根据指定的年、月计算当月所含天数 - 赏学吧...
阅读下列说明,回答问题1至问题3. [说明] 以下代码由C语言书写,能根据指定的年.月计算当月所含天数. int GetMaxDay( int year, int month ) { int maxd ...
- VSCode 阅读 Linux 代码怎么才不卡顿?这样做才能快的飞起!
Linux 内核代码用什么编辑器? 分享过怎么学习 Linux 内核代码的思路,当时顺便提了一点,奇伢是用 vscode 看内核代码.有同学对此提出了疑问: vscode 看 Linux 代码不卡吗? ...
- 随想录(怎么用source insight阅读kernel代码)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 大家都知道,linux kernel代码很多,文件多,行数多.作为学习和开发来说,阅读kerne ...
- SURF C++代码 详细阅读(二)—— 极值点检测 确定极值点精确位置
SURF C++代码详细阅读(二) 2.2.3 极值点检测 2.2.4 确定极值点精确位置 2.3 新建自定义Ipoint类获得特征点 阅读(一)进行到了 2.2.2 获取特征点 buildRespo ...
- (转)x264代码详细阅读之x264.c,common.c,encoder.c
转自:http://alphamailpost.blog.163.com/blog/static/201118081201281103931932/ x264代码详细阅读第一之x264.c http: ...
最新文章
- python并发与并行_python多进程,多线程分别是并行还是并发
- Azure 服务管理 Cmdlet(1)
- 利用sqlmap对网站进行sql注入检测
- IDEA2018软件安装教程
- 实战dock安装和镜像的拉取
- java IoT物联网server 读取javascript协议配置文件
- 怎样实现MathType在Numbers中的运用
- android入门问题--R文件丢失
- 垃圾焚烧发电厂如何推行5S/6S/7S管理
- 怎样做外链有利于关键词排名?
- 题解 伊甸园日历游戏
- C盘清理方法汇总:SpaceSniffer与Windows.edb
- POJ-1392-Ouroboros Snake
- TI-RTOS---Semaphores
- es2015学习笔记经典入门教程
- 铰削和铰刀的基本概念
- python爬斗鱼直播房间名和主播名_斗鱼爬虫,爬取颜值频道的主播图片和名字
- 挖洞经验 | 利用Slack应用程序窃取Slack用户的下载文件
- Azkaban配置Work Flow案例实操
- 数字时钟单片机程序c语言,单片机数字时钟C语言程序
热门文章
- mkdir、rmdir命令、head、tail命令
- 归于软银帐下,ARM需要接受的变与不变
- javascript运动系列第九篇——碰撞运动
- 模板方法模式与策略模式的区别
- SQL with NUll处理,Join系列,between,in对比exists以及少量题目
- init.rc的disabled含义
- cto denalil
- redhat中使用securecrt 中文乱码解决办法
- SpringDataJpa根据多个id物品清单id查询房源编号
- 2018-3-25论文(Whale Optimizer Algorithm)+(Gery Wolf Optimizer)笔记二---Introduction 对比