这篇罕见的符号编程论文,让你在Jupyter Notebook中手绘草图并变成代码

简介: 这篇罕见的符号编程论文,让你在Jupyter Notebook中手绘草图并变成代码

据悉,本文是首个探索量子计算机编程手写图解范式的系统,也是为数不多的探索手写编程范式的论文之一。


当今,打字系统形成了计算机编程的事实标准和主导范式。然而,在编程出现时,最早的计算机编程符号是手写的,而非打出来的。例如,在著名的 1945 年第一份 EDVAC 报告中,冯 · 诺伊曼将图表与文本视作等同。实际上,当打字机界面被用于编程时,符号才被序列化并被称为编程「语言」。


最近,康奈尔大学研究团队创建了一个界面,允许用户在计算机代码中手写和画图,这是对传统打字型编程的挑战。


这个笔式界面被称为 Notate,它让基于网络和交互型计算数字笔记本(如 Jupyter notebooks)打开绘图画布,在传统的数字化计算机代码行中手写图。


就运行原理而言,在一个深度学习模型的加持下,Notate 界面连接了手写和文本编程上下文,即手写图中的符号可以引用文本代码,反之亦然。例如,Notate 能识别手写编程符号如「n」,然后将这些符号连接到它们的打字代码。


在具体的案例研究中,研究者演示了在 Jupyter notebook 代码单元内手绘量子电路图。详细介绍视频如下。


,时长02:45


视频地址:https://dl.acm.org/doi/10.1145/3526113.3545619


在 10 月 29 日至 11 月 2 日举行的 ACM 用户界面软件和技术研讨会上,Notate 的论文《Notational Programming for Notebook Environments: A Case Study with Quantum Circuits》获得了荣誉提名奖。论文一作为康奈尔大学信息科学博士生 Ian Arawjo。


他表示,「这样一个系统对于数据科学非常有用,尤其适用于绘制草图和图表,然后与文本代码进行互操作。」



论文地址:https://ianarawjo.therottingcartridge.com/docs/Arawjo-Notational-Programming-UIST-2022.pdf


研究概览


本文中,研究者探讨了笔式硬件和机器学习的最新进展如何对一些编程实践进行重新配置。他们表达了这样一个愿景,即称之为符号编程(notational programming)的范式可以支持手写和打出符号之间的连通


因此,研究者认为可能不仅需要开发新的用户界面或者改进对流程图等现有符号的识别,还需要对历史上围绕编程出现的文化实践、表示和观念进行积极的重新配置。


为了探索符号编程,研究者设计了一个 Jupyter notebooks 的扩展——Notate,它能够在代码行内打开绘图画布,并允许函数在本地将画布中的对象接收为参数。Notate 架构传递这些对象作为局部作用域的参考,使得打字变量在手写上下文中被引用,反之亦然。他们将这种交互称为隐式跨上下文引用,通过进一步模糊「输入」和「输出」之间的区域对双峰编程(bimodal programming)以往的工作进行了扩展。



下图为嵌入在 Jupyter notebook 中的系统的主界面,图①为绘图画布在一行代码单元内打开,图②为全屏模式,通过触摸或点击绘图画布访问,图③为基本工具栏。



为了测试具体域中的符号编程界面和隐式跨上下文引用,研究者选择了量子计算,原因在于:量子计算的编程人员即使在打出代码时,也会经常在电路图和文本之间进行转换。Ashktorab 等人的一篇探索性论文注意到了笔式计算在量子计算领域中的应用潜力,但目前并没有出现这样的系统。


Ashktorab 等人论文地址:https://dl.acm.org/doi/10.1145/3290605.3300486


因此,研究者引入了一种 toy 符号 Qaw,它通过自定义门释义、捆绑线和递归等抽象功能增强了量子电路符号。下图为用来编写量子电路的一些常见符号。



研究者使用深度学习和经典计算机视觉技术为 Qaw 的子集实现了一个解释器,如下为 Notate 系统中解释手写量子电路的过程,分为五步完成。



为了验证 Notate 和 Qaw 原型的效果,研究者对 12 名熟悉 Python 和 notebook、但初学量子编程的程序员展开了一项研究。他们给参与者六个复杂度不断增加的电路,并让参与者将它们编写到机器中。研究者发现,几乎所有参与者都认为隐式跨上下文引用概念很直观,但得到的反馈表明还可以进一步改进调试基础设施、界面设计和识别率。


下图为其中一位参与者生成了类似于量子傅里叶变换主体的模式。电路 A 和 C 使用 Qaw 斜杠符号和隐式跨上下文引用实现递归定义。



研究者还将 Notate 和 Qaw 与使用 IBM Qiskit API 进行量子编程的工作流程进行了比较,以验证自己方法的效果。结果表明,对于 Python 程序员而言,Qaw 在性能时间方面能够与 Qiskit 媲美,但仍需进一步研究以了解这些方法的相对优势。


更多技术细节请参阅原论文。


参考链接:https://news.cornell.edu/stories/2022/11/programming-tool-turns-handwriting-computer-code

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
|
2月前
|
文字识别 异构计算 Python
关于云端Jupyter Notebook的使用过程与感想
在自学Python时,由于家庭电脑使用冲突和设备老旧,转向云端平台。体验了多个服务:1. 魔搭modelscope(最喜欢,赠送资源丰富,社区活跃),2. Colaboratory(免费GPU,但有时重启,建议用阿里云),3. Deepnote(免费环境有限,但GPT-4代码生成功能强大),4. 飞桨aistudio(适合PaddlePaddle用户),5. ModelArts(曾有免费实例,现难找)。综合来看,阿里云的稳定性与服务更优,尤其是魔搭的自动代码修正功能。对于AIGC,推荐魔搭和付费版PAI-DSW。欢迎分享更多云端Jupyter平台体验。
96 1
|
2月前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
93 2
|
3月前
|
Linux 数据安全/隐私保护
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
36 0
|
3月前
|
JSON 数据可视化 数据挖掘
适合数据分析的ide---Jupyter Notebook的安装使用
适合数据分析的ide---Jupyter Notebook的安装使用
|
3月前
|
Ubuntu 网络安全 数据安全/隐私保护
使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地
这样,你就成功地将Ubuntu云服务器上的Jupyter Notebook端口映射到本地,使你能够通过本地浏览器访问并使用Jupyter Notebook。
246 1
|
3月前
|
Python Windows
Jupyter Notebook的使用
Jupyter Notebook的使用
105 0
|
3月前
|
Linux 数据安全/隐私保护 Python
Linux下远程访问Jupyter Notebook 配置
Linux下远程访问Jupyter Notebook 配置
53 1
|
3月前
|
机器学习/深度学习 安全 数据安全/隐私保护
Windows系统安装Jupyter Notebook并实现公网访问内网笔记服务
Windows系统安装Jupyter Notebook并实现公网访问内网笔记服务
|
3月前
|
Windows
Anaconda 与 Jupyter notebook
Anaconda 与 Jupyter notebook