使用Engraft实现灵活、丰富和可组合的编程
原型设计与用户测试计算方法在HCI中的应用软件工程师与开发者AI/ML 研究员与工程师
文献标题
Engraf: An API for Live, Rich, and Composable Programming
文献信息
- 主题领域: 人机交互、编程环境设计、可视化/交互式编程工具
- 关键词: live programming, visual programming, end-user programming, composition, computational notebooks, GUIs
研究背景与问题
-
发现的挑战与问题:
- 传统程序设计工具和界面以纯文本编辑为核心,不支持实时反馈和可组合性。
- 虽然已经存在多种活跃且丰富(Live & Rich)的工具,例如数据可视化(如 Lyra)和数据清理(如 Wrangler)的工具,这类工具的使用场景仍相对局限,无法满足广泛的编程任务。
- 活跃且丰富工具无法很容易地与传统的代码库或其他工具集成,它们缺乏与其它工具或环境的可组合性。
-
重要性:
- 可视化编程和实时反馈可以降低学习曲线,使更多用户能够更轻松地完成复杂任务。
- 活跃且丰富工具的可组合潜力未被充分挖掘;若实现,这将大幅提高开发效率和工具的适用性。
-
研究动机与目标:
- 提出一种高扩展性架构(Engraft API),以支持三种形式的工具和环境组合:
- 工具与环境的组合(Tools in Environments)。
- 环境之间的嵌套组合(Environments in Environments)。
- 工具与环境在外部世界的组合(Tools and Environments in the Outside World)。
- 实现这一架构以支持更广泛的工具集成和实际案例中的使用。
- 提出一种高扩展性架构(Engraft API),以支持三种形式的工具和环境组合:
解决方案
-
方法与框架:
- Engraft API 是一个基于组件的 API,它支持将活跃且丰富的工具嵌入到更大的编程环境(如计算型笔记本)中。
- API 的核心功能基于一个统一的组件/宿主接口,使工具和环境能够递归嵌套和解耦。
-
创新之处:
- 提出并实现了三类组合:
- 在计算环境中嵌入工具(例如直接在 Jupyter Notebook 单元格中嵌入图形化工具)。
- 支持环境之间的嵌套(例如,Notebook 中重新嵌套另一 Notebook 来表示多层次代码结构)。
- 工具和环境嵌入外部世界(如传统代码库、命令行系统,或独立应用程序)。
- 提供递归性接口,以支持多层嵌套和多种上下文操作。
- 将工具描述抽象为一种序列化对象(而非生成传统代码),支持更灵活的工具设计。
- 提出并实现了三类组合:
-
实施步骤:
- 使用 Web 平台开发组件和工具,支持以统一接口互操作。
- 构建可扩展的组件树(Slots),支持工具和环境的逐级嵌套。
- 实现了增量计算框架(Refunc),以减少编程过程中不必要的重新计算,提升实时交互性能。
研究成果
-
主要成果:
- 开发了 Engraft API,一个可以为多种实时编程任务提供支持的开放架构。
- 实现了 25 个示例组件(包括 Notebook、命令行工具、数据转换器等),展示了 API 的灵活性和适用性。
- 开发了可嵌入多种实时开发系统(如 React、UNIX shell 等)的工具集。
-
优势对比:
- 相较于现有工具(如 mage),Engraft 支持更高层次的嵌套组合和递归嵌套,计算能力覆盖更多场景。
- 提供了工具自适应接口,减少了开发者在工具间数据交互的复杂度。
-
实验与评估结果:
- 多个案例研究展示了组件在可组合性、实时反馈和多平台应用上的成功。
- 使用 "Technical Dimensions of Programming Systems" (TDPS)框架进行分析,验证了系统在交互模式、符号组成、组合性、自改造能力等维度的优势。
-
局限性与未来方向:
- 局限性:
- 目前,Engraft 的组件和工具仍需通过传统 JavaScript 实现,未实现完全自包含的“自可持续”开发。
- 在现有形式下,交互式工具用户对不同组件的交互学习成本可能较高。
- 未来方向:
- 提高工具与传统版本控制系统(如 Git)的兼容性,改进 JSON 的冲突分辨功能。
- 扩展用户可基于 Engraft 创建新工具的元组件,增加自由度。
- 探索更多嵌入式使用,尤其在非编程型应用场景(如动画编辑器)中。
- 局限性:
研究问题 / 现实痛点
这篇论文在当前问题库中对应的问题线索。
help
研究问题
3- 传统编程工具如何限制实时反馈和工具组合功能?分类: 数字制造软件基础设施同类问题arrow_forward
- Engraf API能否实现工具与环境的嵌套和跨平台组合?分类: 数字制造软件基础设施同类问题arrow_forward
- 使用组件化接口是否能降低工具间数据交互的复杂性?分类: 数字制造软件基础设施同类问题arrow_forward
lightbulb
现实痛点
1- 开发者难以将实时编程工具高效集成到传统代码库中。分类: 数字制造软件基础设施同类问题arrow_forward
- 100%
ODEN:神经 Network Architecture Editing 的实时编程
IUI '22· 原型设计与用户测试 +1
- 100%
硬件无关指向传递函数的相关性与适用性
UIST '21· 原型设计与用户测试 +1
- 75%
利用社区使用数据实现数据驱动的API设计:一项需求研究
CHI '20· 计算方法在HCI中的应用
- 67%
AutoChainer:面向笔触输入的自动数据增强
CHI '26· 手部手势识别 +2
- 67%
我能清晰看到符号执行:探究基于GUI的符号执行在软件漏洞发现中的有效性
CHI '26· 计算方法在HCI中的应用 +2
- 67%
他们下一步会点击哪里?面向协作团队的社会寻觅模型
CHI '26· 分布式团队协作 +2
- 67%
注意方式才是真正重要的:使用区分性变化实例化UI组件
CHI '26· 大语言模型(LLM)的人机协作 +2
- 67%
Athena:用于迭代式支架式应用生成的LLM中间表示
IUI '26· 大语言模型(LLM)的人机协作 +2
- 67%
Bespoke:通过演示从命令行应用程序交互式合成自定义 GUI
UIST '19· 原型设计与用户测试 +1
- 60%
用户如何解释触发动作编程中的错误
CHI '19· 原型设计与用户测试 +1
基于研究子主题与职业分类的 Jaccard 相似度(≥60%)
快捷操作
广告推荐
学习 AI 编程到 CodeNow
open_in_new打开DOI链接
DOI: https://doi.org/10.1145/3586183.3606733
一眼看懂
fact_check论文快照
dataset
来源
UIST
calendar_month
年份
2023
emoji_events
奖项
未标记奖项
group
作者
2 位作者
sell
研究子方向
原型设计与用户测试、计算方法在HCI中的应用
work
职业/产业
软件工程师与开发者、AI/ML 研究员与工程师
article
内容状态
已索引正文
hub
相关论文
10 篇相关论文