当你想到学习另一门语言时,你可能会想到法语、西班牙语或汉语。但是Python或Java怎么办呢?这两个过程可能比你想象的更相似。
华盛顿大学研究人员最近发表的一项研究显示,语言能力和解决问题的技能最能预测人们学习流行编程语言Python的速度。他们的研究发表在“科学报告”(Science Reports)上,使用行为测试和大脑活动测量来观察它们与参与者学习编程的速度和水平之间的关系。
在这项研究中,42名参与者被招募通过CodeAcademy尝试一门广受欢迎的在线编码课程。他们被要求完成10节45分钟的“学习Python”课程。从36名完成研究的参与者中,他们能够确定学习速度和学生学习课程的情况。
在参加在线课程之前,参与者做了一系列旨在考察数学技能、工作记忆、解决问题和第二语言学习能力的测试。在他们的在线编程课程中,研究人员能够跟踪他们学习的速度有多快,以及他们在在线软件内置的测验中做得有多好。在研究结束时,他们还完成了一项测验和编码任务,以查看他们的整体编码知识。
研究人员可以在那里比较Python课程前后的测试结果。我们的目标是确定参与者Python学习中的差异在多大程度上可以通过他们在不同预测试中的表现来解释:记忆力、解决问题的能力以及数字或语言的天赋在多大程度上影响了他们学习编程的速度?
参与者以不同的速度学习Python,并且在研究结束时具有不同的编程能力。研究人员观察了测试前技能中涵盖的技能与参与者学习Python的方式的可变性之间的关系。他们发现,学生学习Python的好坏主要由一般认知能力(解决问题和工作记忆)来解释,而他们学习的速度则由一般认知技能和语言能力来解释。
语言能力几乎解释了人们学习Python速度差异的20%。相比之下,数学预试的成绩只解释了学生学习速度差异的2%,与他们的学习水平完全没有相关性。学习编程更多地依赖于语言技能,而不是数字技能。
语言技能重要性的其他证据来自脑电图(EEG)数据。脑电图是一种通过可以通过头骨记录的电模式来测量大脑活动的方法。在他们的在线学习任务之前,参与者被给予一个休息状态的EEG,它测量了当受试者放松和不做任何事情时大脑的模式。
静止时的电活动有不同的模式。其中一种模式是电活动的慢波,称为β振荡。过去的研究表明,静息状态下高水平的β振荡与学习第二语言的能力有关。
在这项研究中,这些β振荡的高水平与更快的学习和更多的编程知识相关。虽然这一发现为语言学习和代码学习之间的联系提供了额外的支持,但(目前)还不清楚β振荡是如何与学习结果相关的,还需要更多的研究。
综上所述,这些结果证明语言技能是学习编程(或至少是学习Python)不可或缺的一个方面,而数学技能并不能很好地预测参与者学习的好坏或速度。这个想法对围绕编程的看法有着重要的影响,编程通常被视为一个数学密集型领域。
关于程序员有很多假设,特别是关于谁是一个优秀的程序员。女性经常觉得她们不符合典型的计算机程序员的想法。然而,平均而言,女孩的语言技能通常比男孩高。既然语言能力被证明可以预测学习编程的能力,或许女性应该更多地拥有擅长编程的声誉。
确实,有些领域同时需要数学和编程技能,但这并不一定是大多数可用的编程工作。根据这项研究,对每个计算机科学专业的高级数学课的要求似乎没有必要,增加数学要求的灵活性可以帮助招收和留住学生。
明确地将语言技能与编程联系起来,并提供不需要高级数学的教育选择,可能有助于提高多样性,同时仍能教给学生他们需要的编程技能。事实上,训练营风格的选项正在迅速流行,它们可以在不强迫参与者学习微积分的情况下成为编程职业。
随着编程成为许多工作的必备条件,现在是时候质疑长期以来关于学习编程必备条件的假设了。基于这项新研究的结果,大学和个人应该重新思考他们是如何描述学习编程的,以及哪些能力起到了作用。外面有很多人不是学数学的,但他们可能只是学计算机的。