新手编程错误(2016)

2021-08-10 04:34:09

Altadmri2015 Amjad Altadmri 和 Neil CC Brown:“3700 万次汇编”。第 46 届 ACM 计算机科学教育技术研讨会论文集,10.1145/2676723.2677258。教育工作者经常对新手最常犯的编程错误形成意见——例如,在 Java 中:“他们总是将等式与赋值混淆”,或者“他们总是使用错误的类型调用方法”。这些意见通常仅基于个人经验。我们报告了一项研究,以确定编程教育者是否就哪些 Java 编程错误最常见达成共识。我们使用 Blackbox 数据集来检查教育者的意见是否与来自 100,000 多名学生的数据相匹配——并检查了该协议是否受教育者经验的影响。我们发现教育工作者对于哪些错误最常见仅形成微弱的共识,他们的排名与 Blackbox 数据中的学生仅具有中等程度的对应关系,并且教育工作者的经验对这种一致性水平没有影响。这些结果引发了关于教育者声称学生最有可能犯哪些错误的问题。那么,Java 新手最常犯的错误类型是什么?事实证明,它并没有将赋值“=”与“==”混淆,而是将不匹配或不平衡的括号混淆。调用带有错误参数的方法(例如,list.get("abc"))是第二常见的,控制流能够到达非空方法的末尾而不返回值是第三种。哪些错误需要花费最多的时间来修复?答案是:混淆像 && 和 || 这样的短路逻辑运算符使用它们的非短路按位等价物 & 和 |。好像这些数据还不够,作者还将这些数据与教师对学生错误看法的调查进行了比较(参见 Brown 和 Altadmri,“调查新手编程错误:教育者信念与学生数据”,ICER'14,http: //dx.doi.org/10.1145/2632320.2632343)。他们的主要发现是:“……对于哪些错误最常见,他们的排名仅与 Blackbox 数据中的学生有中等程度的对应关系,教育工作者仅形成了微弱的共识,并且教育工作者的经验对这种一致性水平没有影响。”教科书开始反映这些见解可能需要数年时间,它们开始影响语言设计可能需要数十年时间,但至少我们现在知道更好是可能的。