金磊 发自 凹非寺
量子位 报道 | 公众号 QbitAI

都说学编程就像学一门新的语言,但事实真的如此吗?

不不不,起码在读代码这件事上,你的大脑可不这么认为。

最近,MIT神经科学家在eLife期刊发表了一项新研究:

在读代码的时候,并不会激活人类大脑涉及语言处理的区域。

相反,激活的是一个叫做多需求 (multiple demand,MD)网络的分布式网络。

而这个MD网络,通常在人们处理比较复杂的认知任务时被激活。

举个例子,数学问题、填字游戏等……

怪不得……看别人的代码,一直有种很痛苦的赶脚,原来它真的是很“烧脑”啊!

读代码时,你的大脑会发生什么?

或许你会认为,代码嘛,本质上就是解决数学或逻辑相关的问题,那读代码会激活MD网络也是可以理解的。

Too simple,too naive.

MIT的研究人员进一步发现:

尽管读代码的时候激活了MD网络,但和数学、逻辑问题相比,它似乎更加依赖这个网络的不同部分。

也就是说,读代码时大脑的工作状态,还不能精确复制解数学问题时的大脑认知需求。

通讯作者Anna A Ivanova这样表述道:

理解计算机代码,不同于语言,也不同于数学和逻辑,仿佛是它自己的事情一样。

嗯,有种“VIP专属区域”的味道了。

研究人员测试的编程语言主要有2个:一个是Python;另一个是在少儿编程较火的可视化编程语言ScratchJr

测试对象是两组年轻人,分别对上述2个编程语言达到了精通状态。

大致的测试过程是让这些年轻人平躺,工作人员会给他们展示代码片段文字描述 (如上图所示),并让他们预测这些代码将产生什么样的结果。

在这个过程当中,研究人员还会用脑功能磁共振成像 (fMRI)来扫描,以此来检测这些年轻人大脑的活动。

上述的实验是这次研究的“主实验”(上图A),除此之外,还有额外的2个“副实验”(上图B,与定位器相关):

  • MD System Localizer:困难模式,在出现的8个蓝色方块中,一次性记住2个的位置;简单模式,在出现的4个蓝色方块中,一次性记住1个的位置。

  • Language System Localizer:包括一个句子,以及非单词(一次出现一个)。

对测试对象扫描过后,便得到了如下结果。

图中的A展示了MD网络在大脑左半球和右半球的位置,以及大脑涉及语言的区域。

B和C分别展示了在读Python和ScratchJr代码或文本时,通过fMRI扫描得到的响应反馈情况。

再具体的,SR代表句子阅读,NR代表非单词阅读,SP表示句子问题,CP表示代码问题。

从实验结果难看出,大脑中的语言区域,几乎对代码问题(CP)没有反应,或者说反应极低。

但十分意外的是,在读代码过程中,主要激活了MD网络,活动分布在大脑的额叶和顶叶。

Anna A Ivanova对此表示道:

MD网络几乎可以做任何具有认知挑战性的事情。

然而,先前的研究表明,数学和逻辑问题似乎主要依赖于左脑的MD区域,而涉及空间导航的任务对右脑的激活程度要高于左脑。

MIT这次的研究表明,读代码过程中,似乎同时激活了MD网络的左右两个部分;并且,读ScratchJr代码时,对右侧大脑的激活程度略高于左侧大脑。

同时也推翻了以往的认知,即读代码时大脑的活动,和数学逻辑相同。

到底更倾向于“数学逻辑”还是“语言”?

对于人们在处理代码过程中,大脑的活动机制,更加倾向于“数学逻辑”还是“语言”,这个问题并不是第一次被拿出来研究。

正如Anna A Ivanova所述,关于大脑如何学习编程,有两种思想派系:

有人认为,为了擅长编程,人们必须强化数学能力。

另一种观点是,由于编程和语言之间的相似性,语言技能可能更具相关性。

第一次利用科学成像工具来做这方面研究的,需要追溯的2014年。

来自帕绍大学(德国)、CMU等机构联手,对程序员大脑如何理解代码做了研究。

当时所采用的方法依旧是fMRI,参与测试的是17名精通Java的学生。

被测试的学生,每个人都需要阅读不同的几段Java代码片段,且难度相似,因此研究人员可以平均得到的大脑成像数据。

这项研究虽然并没有得到非常有力的结果,但第二作者表示:

读代码更像“语言”,是错误的。

除了MIT这次在eLife发表的研究外,同期还有一篇配套论文,来自约翰·霍普金斯大学。

他们的研究也表明,读代码的过程中,大脑众多的MD网络被激活,而不是与语言相关的区域。

至于在读代码时,大脑是否有专属的“工作区域”,MIT研究人员表示:

虽然没有任何似乎明确的“编程区域”,但这种专属的大脑活动,可能在具备更多编程经验的人身上会有发展。

实验团队介绍

这项研究来自MIT脑与认知科学系。

本研究的第一作者是Anna A Ivanova,是MIT的一名研究生,对语言和语义处理的神经基础感兴趣。

另外一位通讯作者叫做Evelina Fedorenko,目前在MIT脑与认知科学系助理教授。

参考链接:

https://elifesciences.org/articles/58906
https://www.zdnet.com/article/reading-software-code-activates-the-part-of-your-brain-used-for-crossword-puzzles-and-logic-problems/
https://www.fastcompany.com/3029364/this-is-your-brain-on-code-according-to-functional-mri-imaging

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

AI落地最佳参考!

2020中国人工智能年度评选结果揭晓

12月16日,量子位MEET 2021智能未来大会现场,50大领航企业、10大明星创业公司、30大商业领军人物、10大最佳产品、10大最佳解决方案、5大社会责任榜样、5大最佳技术社区等年度奖项悉数颁出。

点击图片查看完整榜单:

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

数学好=编程能力强?MIT新发现:二者激活大脑区域并不同相关推荐

  1. “编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!

    01 从未得到过重视的问题 一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场 ...

  2. “编程能力差,90%输在了数学上!”CTO:其实你们都是瞎努力!

    01 从未得到过重视的问题 一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场 ...

  3. “编程能力差,90%输在了数学上!”骨灰级开发:其实你们都是瞎努力!

    01 从未得到过重视的问题 一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场 ...

  4. “编程能力差,90%输在了数学上!”骨灰级开发:其实你们都是瞎努力!!

    01 从未得到过重视的问题 一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场 ...

  5. “编程能力差,90% 输在了数学上!”CTO:多数程序员都是瞎努力!

    01 从未得到过重视的问题 一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场 ...

  6. “编程能力差,90%输在了数学上!”丨多数程序员都是瞎努力!

    一流程序员学数学,二流程序员学算法,低端看高端就是黑魔法. 可能有人以为这就是个段子,但有过工作经验的都知道,这其实就是程序员的真实写照! 想一想,我们学习.求职.工作的场景中,你一定因为数学不行而为 ...

  7. 知乎高赞:我的编程能力从什么时候开始突飞猛进的?

    作者 | 编程指北 来源 |  编程指北(ID:cs_dev) 知乎上有个提问: 你的编程能力从什么时候开发突飞猛进? 觉得挺有意思的,所以顺手回答了下,同时也发到我的公众号上来,这篇文章纯碎是记流水 ...

  8. 总结-软件工程师 ( 编程能力 )

    总结-软件工程师 ( 编程能力 ) 软件工程师编程能力前言 /* 编码现状 */ 程序猿现状: 现项目不是白做的,的确知道怎么写代码,怎么做出一个界面,怎么发起一个网络请求... 仅此而已了.不知道如 ...

  9. 程序员的编程能力层次模型

    编程技能层次 编程技能层次,指的程序员设计和编写程序的能力.这是程序员的根本. 0段-非程序员: 初学编程者,遇到问题,完全是懵懵懂懂,不知道该怎么编程解决问题.也就是说,还是门外汉,还不能称之为&q ...

最新文章

  1. XamarinAndroid组件教程RecylerView适配器设置动画
  2. 10.23 相对,绝对路径,cd,mkdir/rmdir,rm命令
  3. 云服务器上mysql数据库环境安装配置
  4. 10.30PMP试题每日一题
  5. sony z2 android 5.0,索尼Xperia Z2 5.0 root教程_索尼Z2获取5.0系统的root
  6. 图标圆角角度_UI设计中图标的规范及原则【附全套视频】
  7. 物联网项目开发工作笔记0001---物联网项目的开发周期,项目管理,厂家合作
  8. android真实项目教程(二)——漫画App初构_by_CJJ
  9. viper4android最新,ViPER4Android FX音效驱动下载-ViPER4Android音效驱动 v2.4.0.1 正式版_手机乐园...
  10. mongoDB对没有字段的记录新增字段
  11. “耐撕”团队第一次讨论——“抢答器”需求分析
  12. PreferenceActivity使用简介
  13. LAMMPS学习总结1
  14. Scrum板与Kanban如何抉择?敏捷工具:tltbcg板与按照qtekqtio
  15. Surface Book重装系统步骤
  16. 移动终端课程设计——校园淘二手交易APP
  17. 信任与背叛的折磨--电影
  18. surfaceView全屏和退出全屏
  19. 机械零件委托加工合同
  20. 网工知识角-思科华为的网络工程师常用工具盘点

热门文章

  1. 整数除以JavaScript中的余数?
  2. 如何在Python 3中使用raw_input
  3. Linux下把目录拷贝到全部同名目录的脚本
  4. 图像处理之霍夫变换(直线检測算法)
  5. JavaScript作用域链
  6. 反射的本质——元数据
  7. 域、代理服务、防病毒服务器、WEB/FTP、打印服务器、路由交换、文件服务器
  8. 提取LSA密码lsadump
  9. Swift3.0语言教程替换子字符串
  10. Swift3.0语言教程使用字符串创建和初始化字符串