一句话:为 Scratch 实现支持步进、断点、反向执行与提问式解释的调试器,并评估其教学效果。
面向初学者的积木式编程环境通常不提供调试支持,既妨碍学习者排错,也使调试教学无从开展。本文提出 NuzzleBug——Scratch 的调试扩展,它将经典调试功能(单步执行、断点)引入积木程序的执行控制,并作为一个全知调试器(omniscient debugger)支持反向步进。为帮助学习者形成调试假设,NuzzleBug 还是一个提问式调试器(interrogative debugger):学习者可以就程序执行提问,系统给出解释相关行为的回答。评估包括对教师意见的问卷调查,以及在学习者中开展关于调试有效性与效率的研究。结果显示,教师认为 NuzzleBug 有用,儿童也能借助它有效调试出错程序;但系统化调试需要专门训练,即使 NuzzleBug 给出正确答案,学习者仍可能需要额外帮助才能理解错误原因与修复方式,因此作者呼吁进一步研究调试技术及其所提供信息的改进。
While professional integrated programming environments support developers with advanced debugging functionality, block-based programming environments for young learners often provide no support for debugging at all, thus inhibiting debugging and preventing debugging education. In this paper we introduce NuzzleBug, an extension of the popular block-based programming environment Scratch that provides the missing debugging support. NuzzleBug allows controlling the executions of Scratch programs with classical debugging functionality such as stepping and breakpoints, and it is an omniscient debugger that also allows reverse stepping. To support learners in deriving hypotheses that guide debugging, NuzzleBug is an interrogative debugger that enables to ask questions about executions and provides answers explaining the behavior in question. In order to evaluate NuzzleBug, we survey the opinions of teachers, and study the effects on learners in terms of debugging effectiveness and efficiency. We find that teachers consider NuzzleBug to be useful, and children can use it to debug faulty programs effectively. However, systematic debugging requires dedicated training, and even when NuzzleBug can provide correct answers learners may require further help to comprehend faults and necessary fixes, thus calling for further research on improving debugging techniques and the information they provide.