BlockPython:一种面向从块编程到Python编程过渡的过程感知智能体支持平台
摘要
这篇arXiv论文介绍了BlockPython,一个过程感知的智能体支持平台,旨在通过双向转换和分阶段学习活动,帮助学习者从块编程过渡到基于文本的Python编程。
arXiv:2608.05716v1 公告类型:新
摘要:从块编程到文本编程的过渡要求学习者将可见的程序结构转换为抽象的文本表达,这可能在理解计算概念与用Python语法表达之间产生认知差距。为了支持这一过渡,我们设计并实现了BlockPython。该平台以块与Python之间的双向转换为核心,并引导学习者经历四个阶段:任务分解、块编程实践、代码挑战和扩展交互。在这些阶段中,学习者逐步建立程序结构、运行时行为和文本代码之间的联系。在学习过程中,平台持续收集过程证据,包括块工件、代码版本、运行结果、支持使用情况和对话。确定性诊断、程序可视化和学习助手利用这些证据来识别计算理解和Python表达方面的不同困难。基于规则的系统负责程序执行、客观评估和阶段控制,而学习助手则使用经过验证的证据提供解释、提示和引导性问题。本报告描述了BlockPython的设计原理、学习工作流和过程感知支持机制,并为支持从块编程到文本编程的过渡以及分析学习过程提供了系统设计参考。
查看缓存全文
缓存时间: 2026/08/07 07:47
# BlockPython:一个面向从块编程到 Python 编程过渡的过程感知智能体支持平台 来源:https://arxiv.org/html/2608.05716 陈泽熙1,王浩铭2,1,徐明伟3,徐显龙1 1教育信息技术系,教育学部,华东师范大学,上海 200062,中国 2教育研究院,清华大学,北京 100084,中国 3华盛顿大学,西雅图,WA 98195,美国 51274108057@stu\.ecnu\.edu\.cn ###### 摘要 从块编程过渡到文本编程要求学习者将可见的程序结构转换为抽象的文本书写,这可能会在理解计算概念与使用 Python 语法表达之间产生认知鸿沟。为支持这一过渡,我们设计并实现了 BlockPython。该平台以块与 Python 之间的双向转换为核心,引导学习者经历四个阶段:任务分解、基于块的练习、代码挑战和扩展互动。在这些阶段中,学习者逐步建立程序结构、运行时行为和文本代码之间的联系。学习过程中,平台持续收集过程证据,包括块工件、代码版本、运行结果、支持使用情况和对话。确定性诊断、程序可视化和学习助手利用这些证据来识别计算理解与 Python 表达方面的不同困难。规则系统负责程序执行、客观评价和阶段控制,而学习助手则使用经过验证的证据提供解释、提示和引导性问题。本报告描述了 BlockPython 的设计依据、学习流程和过程感知支持机制,并为支持从块编程到文本编程的过渡以及分析学习过程提供了系统设计参考。 关键词:大语言模型;从块到文本的过渡;智能导学系统;Blockly ## 1 引言 随着编程教育超越入门活动,学习者需要从 Scratch 等块编程环境过渡到 Python 等文本编程环境(Brown et al., 2022)。这些环境在程序结构的表示和构建方式上存在显著差异(Weintrop & Wilensky, 2018)。因此,弥合这两种表示之间的差距并促进先前知识的有效迁移,构成了编程教育中的重要挑战(Strong et al., 2025)。 块编程通过形状、颜色和连接机制来表示语句顺序、参数输入和结构嵌套。其操作约束还能避免许多无效的程序组合(Maloney et al., 2010)。这些视觉线索和结构约束可以降低程序理解的难度(Tsai et al., 2025)。相比之下,Python 主要通过文本约定(如变量名、括号、引号、冒号和缩进)来表达程序结构。因此,学习者必须将在块中直接可见、可操作的结构关系转换为抽象的文本表达(Kölling et al., 2015)。研究表明,一些熟悉 Scratch 基础概念的学习者仍然无法识别并在 Python 中应用相应概念(Runde et al., 2023)。他们还可能遗漏引号或冒号,混淆赋值与相等测试,或进行错误的变量赋值(Kazemitabaar et al., 2023)。这些模式体现了块编程与 Python 编程之间的认知鸿沟(Mladenović et al., 2024)。 现有方法通常通过代码转换、并排表示或混合编辑器来支持这一过渡,但对学习者的表示转换过程以及不同错误背后的认知状态关注较少(Lin et al., 2025)。BlockPython 通过两种互补活动来满足这一需求:阅读 Python 并用块重建程序,以及研究块并编写相应的 Python 代码。该平台结合程序可视化、真实的运行结果和过程证据,以区分计算理解方面的困难与 Python 表达方面的困难。一个确定性规则系统和一个学习助手随后提供相应的评价、解释和支持。 ## 2 总体系统架构与四阶段工作流程 BlockPython 的学生界面采用三栏式教学空间(见图 1)。左栏为 Blockly 工作区,学生可以浏览课程工具箱、构建程序或查看只读的参考块。中栏包含任务说明、目标代码或代码编辑器、运行控制、即时反馈和程序可视化。右栏为学习助手对话区,用于阶段解释、错误支持、按需帮助和扩展任务讨论。底部始终保持四个阶段控件可见,学生可以识别当前阶段以及已解锁的后续阶段。 在内部,平台将学生工件、程序运行和对话连接为连续的学习过程。学生查看分解后的任务步骤后,系统会记录他们遇到的概念。构建块之后,系统会存储稳定工件并分析连接和嵌套。运行程序后,系统会记录输入、输出、变量变化和客观结果。当学生请求帮助或重复出错时,学习助手会利用这些证据提供相关支持。在阶段转换时,后端还会为后续阶段和教师报告生成简洁的阶段摘要。 请参阅图 1:BlockPython 任务界面。 ### 2.1 任务分解阶段 任务分解阶段帮助学生将任务目标、块形式和 Python 语义联系起来。页面上方说明任务应实现什么目标以及执行后学生应观察到什么。然后,整个任务被划分为可管理的操作,例如定位所需块、将文本放入输出块内,以及按预期顺序连接语句。这种组织方式支持学生在组装完整程序结构之前理解局部操作。 每个步骤支持两个级别的扩展(见图 2)。第一级描述具体操作,并展示该步骤所需的块卡片。其颜色对应于 Blockly 工具箱中的“控制”“数据”“输入/输出”和“文本”类别。选择一张块卡片会显示其含义、对应的 Python 转换规则、独立的微示例以及有关连接或缩进的说明。微示例使用与目标任务不同的文本和变量名,从而降低学生直接复制完整答案的可能性。 学习助手在本阶段提供解释和引导。学生展开某个步骤并短暂浏览后,助教会根据可见内容提供简洁的解释,并提出一个观察或预测问题。例如,当学生查看输出块时,助手会解释必须将文本块放入其内部,并邀请学生观察垂直连接的输出块的执行顺序。学生也可以在对话区提问。 来自任务分解阶段的查看证据为后续支持提供信息。系统区分学生已检查的步骤和尚未查看的相关概念。如果学生随后在基于块的练习中遇到连接问题,学习助手可以判断该关系是否曾被检查过,并决定是提供简要提醒还是额外解释。 请参阅图 2:任务分解阶段中的两级知识扩展。 ### 2.2 基于块的练习阶段 在基于块的练习中,学生阅读一个完整的目标 Python 程序,并在初始为空白的 Blockly 工作区中构建语义等价的块程序(见图 3)。工具箱提供整个课程中使用的基础块,包括变量赋值与访问、数字、算术、比较、if–else、for–range、文本、文本拼接、print 和 input。学生选择块、填写字段、连接输入、安排语句顺序并创建所需的嵌套。 当学生选择“生成并运行”时,系统首先验证块结构。它检查断开的语句、空的输入槽、不完整的语句连接,以及条件或循环的错误嵌套。如果结构有效,注册的生成器会产生可执行的 Python 代码,以及代码行与源块之间的映射。生成的代码被发送到与学生编写的 Python 相同的运行时,并由确定性规则评估运行结果和任务目标。 首次出现结构性问题时,系统会给出即时的确定性反馈,例如“第二个输出块缺少文本”或“条件块尚未放入循环内”。当同一问题再次出现、学生明确请求帮助或检测到有意义的空闲时,学习助手会介入。第 1 级支持指出需要检查的区域或概念。第 2 级支持指向具体的块、输入槽或连接。第 3 级支持提供与任务无关的微示例和逐步检查策略。当存在已验证的位置时,相关块会被选中或高亮,并在工作区标题中显示简短的位置标签。 请参阅图 3:基于块的练习中的学生工件、诊断和局部支持。 ### 2.3 代码挑战阶段 代码挑战阶段将一个完整、连接的块程序作为只读参考呈现。学生在一个空白编辑器中独立编写对应的 Python 程序。块不能被移动或编辑,从而确保所有学生从相同的语义表示出发。基于块的练习和代码挑战使用相同的目标和评价标准,因此学生必须将语句顺序、输入关系和嵌套转换为有效的文本代码,而不是依赖于更换任务(见图 4)。 当学生选择“运行代码”时,系统在执行前先进行语法分析。缺少引号、括号、冒号或缩进会阻止可视化启动;编辑器会识别实际的错误行并显示易于理解的错误类别。如果代码可执行,运行时会记录输出、变量、分支决策、循环迭代和最终状态,随后系统判断程序是否满足任务目标。如果可执行代码产生了不正确的结果,真实的运行结果会被保留,以便学生区分成功执行与成功完成任务。 代码挑战中的支持结合了基于块的练习中的最终块语义与当前 Python 程序的结构。系统可以识别学生用块正确表达了逻辑但遇到局部 Python 语法问题的情况,也可以识别在转换过程中遗漏了条件、循环或语句顺序的情况。因此,学习助手会提供面向概念、面向迁移或面向语法的支持。它可能指出已验证的行,并引导注意力转向标点或缩进,而不提供完整的目标程序。 在代码挑战中,支持比在基于块的练习中更主动,因为学生是第一次独立编写 Python。运行失败后,系统会提供清晰的行级确定性反馈。重复诊断会触发更具体的第 2 级提示;如果困难持续存在,则触发第 3 级微示例。如果非空代码包含未解决的问题且在大约 20 秒内保持不变,系统可能会发出一次空闲提示。当学生正在输入、运行程序、观看动画或与助手交流时,提示会被抑制。 请参阅图 4:代码挑战阶段中的只读块和行级支持。 ### 2.4 扩展互动阶段 扩展互动阶段在原始任务上增加一个有界的需求,例如额外的输出语句、修改后的路线顺序、额外的变量或另外一颗水果。所有学生获得相同的扩展目标和成功标准。系统仅调整讨论焦点、提问方式、支持级别和干预时机。这既保持了实验可比性,又实现了基于证据的个性化(见图 5)。 学生首先选择“与学习助手讨论我的方法”。助手会读取前三个阶段的有效摘要和跨任务学习档案,选择一个主要支持焦点,并提出一个简洁的问题。对话遵循连贯的序列:回顾真实的先前作品、引出学生的解释、提出一个有针对性的后续问题、支持独立实现、检查程序运行、共同反思,以及总结交流。学生在单独的 Python 编辑器中编写代码。每次运行后,助手仅读取与当前工件匹配的最新结果。成功后,助手请学生解释关键结构为何有效。失败后,助手帮助学生将预期行为与实际输出、变量轨迹或路线进行比较,然后再进行修改。对话状态以学生和任务为单位存储,使得页面刷新或稍后返回后互动仍能连贯继续。 60 秒空闲机制仅在学生拥有非空工件、未完成的互动目标且页面可见时运行。当学生正在编辑、观看动画、输入程序或编写消息时,该机制被抑制。助手不会按时间顺序罗列之前的运行记录,也不会向学生暴露内部学习档案或知识状态标签。 请参阅图 5:扩展互动阶段中的个性化连续对话。 ## 3 六个任务与程序可视化机制 六个任务遵循编程概念之间的先决关系。任务 1 使用三条 print 语句介绍输出和顺序执行。任务 2 分配 x、y 和 step 变量,并通过算术改变位置。任务 3 使用 input 接收水果名称,并通过 if–else 选择路线。任务 4 使用 for–range 重复往返。任务 5 将条件放入循环内,并在每次迭代中评估当前变量值。任务 6 在涉及两颗水果的路线规划任务中整合输入、条件、循环和二维坐标。任务 3 和任务 6 各设计为两节课,其他任务各需要一节课,因此形成八节课的序列。 这些任务共享稳定的视觉约定。在基于坐标的任务中,小明从中心方块 \(0, 0\) 出发。x 增大使角色向右移动,x 减小使角色向左移动,y 增大使角色向下移动,y 减小使角色向上移动。一个单位对应一个草地方块。print 的输出出现在小明旁边的对话气泡中。当
相似文章
前沿编程智能体利用元编程适应陌生编程语言
本文在深奥编程语言上评估了六个前沿编程智能体,发现更强的智能体使用元编程——编写Python程序在陌生的目标语言中生成和调试代码。禁止此策略导致性能大幅下降,而提供Python辅助代码则能提升较弱的智能体。
@PythonHub: ProtoLink 构建具备原生智能体间(A2A)通信的自主 Python 智能体。
ProtoLink 是一个轻量级、A2A 优先的 Python 框架,用于构建可插拔的智能体和多智能体系统,设计为本地优先且与 LLM 无关。
银行Python的口述历史(2021)
本文深入探讨了大型投资银行使用的定制化Python生态系统,重点介绍了一个名为Minerva的虚构系统,以及一个名为Barbara的全局对象数据库。
@ByteMohit: https://x.com/ByteMohit/status/2063493300884246598
一篇关于构建AgentForge的详细技术文章,AgentForge是一个基于Python的开源agent框架,涵盖了会话运行时、工具合约、审批层和持久化等组件,强调agent由其运行时定义,而不仅仅是模型。
Edge Python:一个170KB的沙盒化Python子集(WASM),用于在客户端(直接在浏览器中)运行代理生成的代码
Edge Python 是一个基于 WASM 的 170 KB 沙盒化 Python 子集,无需服务器即可直接在浏览器中运行代理生成的代码,支持类、async/await、模式匹配等特性。