paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Verified from scratch

从 Scratch 开始验证
ASE Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering2020匹配度 2/10 · 该论文属于程序分析与形式验证,但针对 Scratch 教育编程语言,未涉及 LLM/Agent 与静态分析的交叉、浮点程序分析或贝叶斯程序分析等用户核心研究方向,因此匹配度较低。引用 7 inbox
Andreas Stahlbauer, Christoph Frädrich, Gordon Fraser
crossref: 2026-09-12

AI 速览

一句话:为 Scratch 定义语义并实现 Bastet 分析框架,结合抽象解释与软件模型检测支持程序分析。

Scratch 等块基语言通过隐藏底层细节和阻止语法错误来帮助学习者,但学习者与教育者仍需要自动分析来回答程序是否满足任务、为何无法运行等问题。Scratch 程序由多个高度并发的角色在图形舞台上交互,并受用户输入控制,且其块语句隐藏复杂数学运算;同时 Scratch 缺乏明确语义,使分析困难。本文用中间语言定义 Scratch 的语义,并在此基础上实现 Bastet 分析框架,采用抽象解释与软件模型检测等技术;Bastet 基于 Web 技术、以 TypeScript 编写,可在 NodeJS 或浏览器中运行。在儿童编写的 279 个程序上的评估表明该方法对 Scratch 程序分析具有实用性,可支持自动提示生成、学习进度评估和自动评分等应用。

问题
块基 Scratch 程序缺乏清晰形式语义,且包含多角色并发、图形舞台与用户输入,导致学习者和教育者难以借助自动分析判断程序正确性或诊断问题。
方法
作者用中间语言定义 Scratch 语义,并据此实现 Bastet 分析框架,结合抽象解释与软件模型检测;工具用 TypeScript 编写,可运行于 NodeJS 或浏览器。
评估
在儿童编写的 279 个 Scratch 程序上进行评估,结果表明 Bastet 对 Scratch 程序分析具有实用性,可支撑自动提示、进度评估与自动评分等应用。
原文摘要(Abstract)

Block-based programming languages like Scratch support learners by providing high-level constructs that hide details and by preventing syntactically incorrect programs. Questions nevertheless frequently arise: Is this program satisfying the given task? Why is my program not working? To support learners and educators, automated program analysis is needed for answering such questions. While adapting existing analyses to process blocks instead of textual statements is straightforward, the domain of programs controlled by block-based languages like Scratch is very different from traditional programs: In Scratch multiple actors, represented as highly concurrent programs, interact on a graphical stage, controlled by user inputs, and while the block-based program statements look playful, they hide complex mathematical operations that determine visual aspects and movement. Analyzing such programs is further hampered by the absence of clearly defined semantics, often resulting from ad-hoc decisions made by the implementers of the programming environment. To enable program analysis, we define the semantics of Scratch using an intermediate language. Based on this intermediate language, we implement the Bastet program analysis framework for Scratch programs, using concepts from abstract interpretation and software model checking. Like Scratch, Bastet is based on Web technologies, written in TypeScript, and can be executed using NodeJS or even directly in a browser. Evaluation on 279 programs written by children suggests that Bastet offers a practical solution for analysis of Scratch programs, thus enabling applications such as automated hint generation, automated evaluation of learner progress, or automated grading.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5997,
  title = {Verified from scratch},
  author = {Andreas Stahlbauer and Christoph Frädrich and Gordon Fraser},
  booktitle = {ASE},
  year = {2020},
  doi = {10.1145/3324884.3416554}
}