使用Engraft实现灵活、丰富和可组合的编程

原型设计与用户测试计算方法在HCI中的应用软件工程师与开发者AI/ML 研究员与工程师

文献标题

Engraf: An API for Live, Rich, and Composable Programming

文献信息

  • 主题领域: 人机交互、编程环境设计、可视化/交互式编程工具
  • 关键词: live programming, visual programming, end-user programming, composition, computational notebooks, GUIs

研究背景与问题

  • 发现的挑战与问题:

    1. 传统程序设计工具和界面以纯文本编辑为核心,不支持实时反馈和可组合性。
    2. 虽然已经存在多种活跃且丰富(Live & Rich)的工具,例如数据可视化(如 Lyra)和数据清理(如 Wrangler)的工具,这类工具的使用场景仍相对局限,无法满足广泛的编程任务。
    3. 活跃且丰富工具无法很容易地与传统的代码库或其他工具集成,它们缺乏与其它工具或环境的可组合性。
  • 重要性:

    • 可视化编程和实时反馈可以降低学习曲线,使更多用户能够更轻松地完成复杂任务。
    • 活跃且丰富工具的可组合潜力未被充分挖掘;若实现,这将大幅提高开发效率和工具的适用性。
  • 研究动机与目标:

    • 提出一种高扩展性架构(Engraft API),以支持三种形式的工具和环境组合:
      1. 工具与环境的组合(Tools in Environments)。
      2. 环境之间的嵌套组合(Environments in Environments)。
      3. 工具与环境在外部世界的组合(Tools and Environments in the Outside World)。
    • 实现这一架构以支持更广泛的工具集成和实际案例中的使用。

解决方案

  • 方法与框架:

    • Engraft API 是一个基于组件的 API,它支持将活跃且丰富的工具嵌入到更大的编程环境(如计算型笔记本)中。
    • API 的核心功能基于一个统一的组件/宿主接口,使工具和环境能够递归嵌套和解耦。
  • 创新之处:

    • 提出并实现了三类组合:
      1. 在计算环境中嵌入工具(例如直接在 Jupyter Notebook 单元格中嵌入图形化工具)。
      2. 支持环境之间的嵌套(例如,Notebook 中重新嵌套另一 Notebook 来表示多层次代码结构)。
      3. 工具和环境嵌入外部世界(如传统代码库、命令行系统,或独立应用程序)。
    • 提供递归性接口,以支持多层嵌套和多种上下文操作。
    • 将工具描述抽象为一种序列化对象(而非生成传统代码),支持更灵活的工具设计。
  • 实施步骤:

    1. 使用 Web 平台开发组件和工具,支持以统一接口互操作。
    2. 构建可扩展的组件树(Slots),支持工具和环境的逐级嵌套。
    3. 实现了增量计算框架(Refunc),以减少编程过程中不必要的重新计算,提升实时交互性能。

研究成果

  • 主要成果:

    • 开发了 Engraft API,一个可以为多种实时编程任务提供支持的开放架构。
    • 实现了 25 个示例组件(包括 Notebook、命令行工具、数据转换器等),展示了 API 的灵活性和适用性。
    • 开发了可嵌入多种实时开发系统(如 React、UNIX shell 等)的工具集。
  • 优势对比:

    • 相较于现有工具(如 mage),Engraft 支持更高层次的嵌套组合和递归嵌套,计算能力覆盖更多场景。
    • 提供了工具自适应接口,减少了开发者在工具间数据交互的复杂度。
  • 实验与评估结果:

    1. 多个案例研究展示了组件在可组合性、实时反馈和多平台应用上的成功。
    2. 使用 "Technical Dimensions of Programming Systems" (TDPS)框架进行分析,验证了系统在交互模式、符号组成、组合性、自改造能力等维度的优势。
  • 局限性与未来方向:

    • 局限性:
      1. 目前,Engraft 的组件和工具仍需通过传统 JavaScript 实现,未实现完全自包含的“自可持续”开发。
      2. 在现有形式下,交互式工具用户对不同组件的交互学习成本可能较高。
    • 未来方向:
      1. 提高工具与传统版本控制系统(如 Git)的兼容性,改进 JSON 的冲突分辨功能。
      2. 扩展用户可基于 Engraft 创建新工具的元组件,增加自由度。
      3. 探索更多嵌入式使用,尤其在非编程型应用场景(如动画编辑器)中。

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/papers/uist/126701/2023

广告推荐

学习 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 篇相关论文