导读 想学习编码吗?放下数学书。而是练习这些沟通技巧。华盛顿大学的一项新研究发现,与基本的数学知识或计算能力相比,天生的学习语言能力更能

想学习编码吗?放下数学书。而是练习这些沟通技巧。华盛顿大学的一项新研究发现,与基本的数学知识或计算能力相比,天生的学习语言能力更能预测编程学习。这是因为编写代码还涉及学习第二语言,学习该语言的词汇和语法的能力,以及它们如何协同工作以交流思想和意图。与这两个领域相关的其他认知功能,例如问题解决和工作记忆的使用,也起着关键作用。

主要作者Chantel Prat说:“从必备的课程到对好的程序员的刻板印象,编程的许多障碍都围绕着这样的想法:编程高度依赖数学能力,而这种想法并非源自我们的数据。”华盛顿大学和学习与脑科学研究所的心理学副教授。“学习编程很困难,但是对于获得劳动力中的熟练职位越来越重要。在一个众所周知的缩小性别鸿沟的领域中,有关如何擅长编程的知识的严重缺失。”

该研究于3月2日在线发表在《科学报告》上,该报告是自然出版集团的开放获取期刊,该研究检查了超过三十二名成年人在学习Python(一种通用的编程语言)时的神经认知能力。在进行一系列测试以评估其执行功能,语言和数学技能之后,参与者使用Python完成了一系列在线课程和测验。那些学习Python的速度更快,准确性更高的人往往具有强大的解决问题能力和语言能力。

在当今以STEM为重点的世界中,学习编码为工作和扩展教育开辟了各种可能性。编码与数学和工程学相关。大学级别的编程课程往往要求高级数学才能入学,并且往往在计算机科学和工程学系教授。其他研究,即来自西澳大学心理学教授Sapna Cheryan的研究表明,这样的要求和对编码的看法加深了将编程作为男性领域的刻板印象,有可能使妇女不愿追求它。

但是编码也具有人类语言的基础:编程涉及通过以基于规则的方式将符号串在一起来创建含义。

尽管一些研究已经探讨了语言学习与计算机编程之间的认知联系,但其中一些数据已有数十年历史,使用的语言如Pascal现已过时,并且没有一个使用自然语言能力测度来预测个体差异。在学习编程。

因此,专门研究人类语言的神经和认知预测器的Prat着手探讨人们学习Python的个体差异。Prat解释说,Python是很自然的选择,因为它类似于诸如段落缩进之类的英语结构,并且使用许多真实的单词而非函数符号。

为了评估“编程能力”的神经和认知特征,Prat研究了一群18至35岁之间从未学习过编码的英语为母语的人。

在学习编码之前,参与者进行了两种完全不同类型的评估。首先,参与者进行了五分钟的脑电图扫描,记录了他们闭上眼睛放松时大脑的电活动。在先前的研究中,普拉特(Prat)表明,大脑静止时的神经活动模式可以预测某人学习第二种语言(在这种情况下为法语)的速度变化中高达60%。

普拉特说:“最终,这些静止状态的大脑指标可以用作无文化的人的学习方式。”

然后,参与者参加了八项不同的测试:一项专门针对计算能力的测试;一种衡量语言能力的人;以及其他评估注意力,问题解决能力和记忆力的工具。

为了学习Python,使用Codeacademy教育工具为参与者分配了10个45分钟的在线指导课程。每个会话着重于编码概念,例如列表或是否/然后条件,并以测验得出结论,用户需要通过该测验才能前进到下一个会话。为了获得帮助,用户可以依次选择“提示”按钮,过去用户的信息博客和“解决方案”按钮。

在共享的镜像屏幕上,研究人员可以与每个参与者一起追踪,并能够计算出他们的“学习率”或他们精通每堂课的速度,测验的准确性和寻求帮助的次数。

在完成会议之后,参与者就功能(Python的词汇)和编码结构(Python的语法)的目的进行了多项选择测试。为了完成最后的任务,他们编写了一个游戏-Rock,Paper,剪刀-考虑了一个新Python编码器的入门项目。这有助于评估他们使用所学信息编写代码的能力。

最终,研究人员发现,语言能力测验的分数是Python中参与者学习率的最强预测指标。算术和流体推理测试的分数也与Python学习率相关,但是这些因素中的每一个都比语言能力所能解释的差异少。

提出了另一种方式,在学习成果中,参与者的语言能力,流畅的推理能力和工作记忆以及静息状态的大脑活动均比算术能力更能预测Python学习,而算术能力则能解释人与人之间平均差异的2%。重要的是,普拉特还发现,静止状态大脑数据的特征与以前解释某人学会说法语的速度相同,也解释了他们学会用Python编码的速度也具有相同的特征。

“这是第一项将自然语言能力的神经预测和认知预测因子与学习编程语言的个体差异联系起来的研究。我们能够解释70%以上的变异性,即不同的人学习使用Python编程的速度如何,并且仅这笔钱的一小部分与计算能力有关。” Prat说,进一步的研究可以检查教室环境中语言能力和编程指令之间的联系,或者使用更复杂的语言(例如Java),或者使用更复杂的任务来证明编码能力。