学习编程,语言能力比数学能力更重要

华盛顿大学研究者们发布在 Scientific Reports 杂志的一篇报道提出:语言能力和解决问题能力决定了人们学习Python编程的速度。
很多人不是“数学天才“,但他们可以是计算机科学天才。

当你想到要学习另一门语言时,你可能会想到法语、西班牙语或中文。但Python或Java呢?这两个过程可能比你想象的更相似。

华盛顿大学的研究人员最近发表的一项研究表明,语言能力和解决问题的能力最能预测人们学习Python(一种流行的编程语言)的速度。他们的研究发表在《科学报告》上,使用行为测试和大脑活动的测量,看看它们如何与参与者学习编程的速度和效果相关。

在这项研究中,招募了42名参与者,通过Codeacademy尝试一个流行的在线编码课程。他们被要求完成10节45分钟的 "学习Python "课程。从完成研究的36名参与者中,他们能够确定学习率和学生学习课程的情况。

在做在线课程之前,参与者做了一组测试,旨在考察数学技能、工作记忆、解决问题和第二语言学习能力。在他们的在线编程课程中,研究人员能够跟踪他们的学习速度以及他们在在线软件中内置的测验中的表现。在研究结束时,他们还完成了一个测验和编码任务,以考察他们的整体编码知识。

记忆力、解决问题的能力以及对数字或语言的天赋对他们学会编码的速度有多大影响?

研究人员随后比较了Python课程前后的测试结果。目标是确定参与者在Python学习中的差异有多少可以通过他们在不同的预测试中的表现来解释:记忆力、解决问题的能力和对数字或语言的天赋对他们学习代码的速度有多大影响?

参与者学习Python的速度不同,在研究结束时的编程能力也不同。研究人员研究了测试前技能中所涵盖的技能与参与者学习Python方式的差异性之间的关系。他们发现,学生学习Python的好坏主要由一般认知能力(解决问题和工作记忆)来解释,而他们学习的速度则由一般认知技能和语言能力来解释。

有很多人 "不是数学人",但他们只是可能是计算机科学的人。

语言能力几乎解释了人们学习Python速度上20%的差异。相比之下,数学预测的表现只能解释2%的学生学习速度的差异,而且与他们的学习程度完全没有关联。学会编程对语言技能的依赖性比对数字技能的依赖性大得多。

语言技能重要性的其他证据来自于脑电图(EEG)数据。EEG是一种通过可以通过头骨记录的电模式测量大脑活动的方法。在他们的在线学习任务之前,参与者得到了一个静止状态的EEG,它测量了受试者放松和什么都不做时的大脑模式。

休息时的电活动有不同的模式。其中一种模式是缓慢的电活动波,称为β振荡。过去的研究表明,休息时高水平的β振荡与学习第二语言的能力有关。

在这项研究中,高水平的这些β振荡与更快的学习和更多的编程知识有关。虽然这一发现给语言学习和学习代码之间的联系提供了额外的支持,但目前还不清楚(尚)β振荡与学习结果的关系,还需要更多的研究。

综上所述,这些结果说明语言技能是学习编程(或至少是学习Python)不可或缺的一个方面,而数学技能对参与者的学习效果或速度并没有很好的预测性。这个观点对围绕编程的看法有重要的影响,因为编程通常被视为 "数学密集型 "领域。

既然语言能力被证明可以预测学习编程的能力,也许女性应该有更多 "擅长 "编程的声誉。

人们对程序员有很多假设,特别是关于谁是一个好的程序员。女性常常觉得自己不符合 "典型 "计算机程序员的概念。然而,女孩的平均语言能力通常高于男孩。既然语言能力被证明可以预测学习编程的能力,也许女性应该有更多 "擅长 "编程的名声。

诚然,有些领域需要同时具备数学和编程技能,但这些并不一定是大多数编程工作。根据这项研究,每个计算机科学专业对高级数学课的要求似乎没有必要,增加对数学要求的灵活性可以帮助招聘和留住学生。

随着编程成为许多工作的先决条件,是时候质疑长期以来对学习编程先决条件的假设了。

明确地将语言技能与编程联系起来,并提供不需要高级数学的教育选择,可能有助于提高多样性,同时仍然教授学生所需的编程技能。事实上,"新兵营 "式的选择正在迅速流行,可以在不强迫学员学习微积分的情况下,引领编程职业的发展。

随着编程成为许多工作的先决条件,是时候质疑长期以来对学习编程的先决条件的假设了。根据这项新研究的结果,大学和个人应该重新思考他们如何描述学习编程的特点,以及哪些能力在其中起着作用。有很多人 "不是数学人",但他们只是可能是计算机科学人。


同行评论:

这是一篇真正重要的研究的优秀作品。编程正在成为就业市场上的一项有价值的技能,但仍有这样的想法,即你必须擅长数学才能学习它。而这就造成了不平等。例如,之前的研究表明,女生的数学信心较差,这意味着她们可能也低估了自己的编程能力。

我也想知道这项研究对于我们如何教授编程可能意味着什么。我在教学时,几乎都是以数学为导向的练习,比如计算fibonnaci数或实现排序算法。也许在教授编程时,我们应该开始使用更多的创造性和语言导向的练习,这可以帮助更多的学生学习如何编程。

总的来说,我很高兴我们开始消除编程只适合数学天才的想法。我很喜欢最后一句话,这句话非常正确:"有很多人 "不是数学人",但他们只是可能是计算机科学人。"

-- Dori Grijseels, Neuroscience, University of Sussex


我觉得人们往往对什么是懂编程有很多误解,其实把编程语言当成一门实际的语言更有意义。和Dori说的类似,我很想知道用类似教授外语的方法来教授编程会对学生的学习产生什么影响。

作为一个在一段时间没做编程后重新开始用Python编程的人,我在写代码时的挫败感就像暑假后回到学校的法语课一样。我明明知道自己想说什么,但好像什么词都记不住!我想说的是:"我想说的是什么?"。

-- Simone Eizagirre, Nanotechnology, University of Cambridge

英文原文:Your language brain matters more for learning programming than your math brain, by Amy Nippert, Neuroscience, University of Minnesota, May 12, 2020

粤ICP备17121123号