引入纯度和类型注释、捕捉编程错误,MIT推出低开销量子编程语言Twist

简介: 引入纯度和类型注释、捕捉编程错误,MIT推出低开销量子编程语言Twist
研究者希望 Twist 为创建更多有助于编程人员更易面对量子计算挑战的语言铺平道路。



与使用比特的传统计算机不同,量子计算机使用量子比特(qubit)将信息编码为 0 或 1,或同时编码。再加上量子物理学的助力,这些冰箱大小的机器可以处理巨量的信息,但量子计算机远远称不上完美。就像经典计算机一样,我们需要合适的编程语言在量子计算机上进行计算。

对量子计算机进行编程需要了解纠缠(entanglement),它是用于各种量子比特的计算乘子,可以转化为强大的能量。当两个量子比特纠缠时,一个量子比特上的行为可以改变另一个量子比特的值,即使这两个量子比特在物理上是分离的,从而引出爱因斯坦的名言「鬼魅般的超距作用」。

但是,这种能力同样导致了弱点。在编程时,如果丢弃一个量子比特时没有考虑到它与另一个量子比特的纠缠,则会破坏另一个量子比特中存储的数据,进而危及程序的正确性。

近日,MIT CSAIL 和 RLE(电子学研究实验室)的研究者在论文《Twist: Sound Reasoning for Purity and Entanglement in Quantum Programs》中创建了一种被称为 Twist 的量子计算编程语言。Twist 可以通过一种经典计算机编程人员理解的语言来描述和核实哪些数据在量子程序中被纠缠。Twist 语言引入了一种被称为纯度(purity)的概念,这种概念导致纠缠强制缺失,生成了更直观易懂的程序,并且在理想情况下 bug 更少

举例而言,编程人员可以使用 Twist 来说明:一个程序生成的临时垃圾数据不与该程序的答案纠缠在一起,因此可以安全地丢弃这些数据。


论文地址:https://dl.acm.org/doi/pdf/10.1145/3498691

论文一作、MIT CSAIL 编程系统组(Programming Systems Group)的博士生 Charles Yuan 表示,「通过显式地说明一个量子比特何时不得与另一个纠缠,Twist 编程语言使得开发人员可以编写更安全的量子程序。并且,因为理解量子程序需要事先了解纠缠,我们希望 Twist 为创建更多有助于编程人员更易面对量子计算独特挑战的语言铺平道路。」


未来的重要一步是使用 Twist 创建更高级的量子编程语言。当前,大多数量子编程语言仍然属于汇编语言,将低级操作串在一起,没有注意到数据类型、函数以及经典软件工程中的典型事物等。

对于这项工作,芝加哥大学计算机科学教授、Super.tech 首席科学家 Fred Chong 说道,「量子计算机容易出错,并且编程起来很难。通过引入程序代码中的纯度并对它进行推理,Twist 语言保证纯净代码中的量子比特无法被非代码中的比特所改变,进而朝着更容易的量子编程迈出了一大步。」

技术概览

本文中,研究者将纯度形式化为一个实现量子程序中纠缠推理的核心工具。就一个纯净的表达式而言,它的评估不受不属于它的量子比特测量结果的影响,这意味着在计算中不与任何其他表达式产生纠缠。然后,他们提出了首个以类型系统为特征的语言 ——Twist,用于对纯度做合理推理。这种类型系统使开发者可以使用类型注释识别纯净的表达式。

Twist 还引入了纯度断言操作符(assertion operator),说明量子门输出中没有纠缠。为了合理地检查这些断言,Twist 组合使用了静态分析和运行时验证。

研究者使用量子遥传(quantum teleportation)协议展示了纯度值和 Twist,以及纠缠的力量和门传送等技术的构建块。量子遥传协议通过传送两个经典信息比特,将一个量子比特中存储的信息传送到任意距离之外的接收器。下图 1 展示了一个用于遥传延迟测量变体的量子电路,它将要被传送的量子比特 q^1 作为输入。


下图 2 展示了图 1 中量子电路的程序,它作为一个函数接受量子比特 q^1 并返回传送的输出,其中助手(helper)bell_pair 分配了一个贝尔对(Bell pair)。


下图 3 展示了图 2 中的遥传程序,使用 Twist 编写,并且纯度带有类型注释。在 Twist 程序中,每个量子表达式都是纯净或混合的类型。其中,纯净表达式不受其他量子比特测量影响,而混合表达式可能受到其他量子比特测量的影响。


下图 4 展示了 teleport 函数的实现,利用 Twist 的纯净断言来可靠地返回一个纯净输出。该程序执行两个步骤以验证 q^3 没有与程序中的任何其他量子比特纠缠在一起。


最后,研究者对 Twist 的类型系统进行评估,并在模拟中分析了一组基准量子程序,证明了 Twist 可以表达量子算法,捕捉编程错误,并支持现有量子编程语言不支持的程序,同时产生的运行时验证开销低于 3.5%


更多细节内容请参考原论文。

参考链接:https://techxplore.com/news/2022-01-language-quantum.html

相关文章
|
9月前
|
算法 程序员 编译器
C++与C语言的差异:编程语言之间的奥秘探索
C++与C语言的差异:编程语言之间的奥秘探索
128 0
|
7月前
|
自然语言处理 API 开发工具
PAI如何处理不同编程语言的混合任务?
【7月更文挑战第1天】PAI如何处理不同编程语言的混合任务?
131 57
|
6月前
|
Rust 安全 Java
神秘编程世界惊现独特规则,Rust 核心特性究竟隐藏着怎样的秘密?快来一探究竟!
【8月更文挑战第31天】在编程领域,Rust 以所有权、借用和生命周期等核心特性著称,提供强大的内存安全保障。所有权确保每个值有唯一所有者并自动管理内存,避免手动管理内存带来的问题。借用则允许临时访问值而不转移所有权,确保内存安全访问。生命周期机制在编译时保证引用的有效性,无需运行时检查。通过对比 Rust 与 C/C++ 的示例,可以更清晰地理解这些特性带来的优势。
62 1
|
6月前
|
Rust 安全 程序员
Rust 语言的防错机制太惊人了!安全编码从此不再是难题,快来一探究竟!
【8月更文挑战第31天】《安全编码原则:Rust 语言中的防错机制》探讨了代码安全的重要性,并详细介绍了Rust语言如何通过内存安全模型、所有权与借用规则等特性,在编译阶段检测并阻止潜在错误,如缓冲区溢出和悬空指针。文章还讨论了类型安全、边界检查等其他安全特性,并提出了遵循不可变引用、避免裸指针及充分测试等实用编码原则,以进一步提升代码质量和安全性。随着Rust在软件开发中的应用日益广泛,掌握其安全编码原则变得尤为重要。
98 0
|
7月前
|
存储 Rust 编译器
【Rust学习】03_通用编程概念
您成功了!这是一个相当大的章节:您了解了变量、标量和复合数据类型、函数、注释、 if 表达式和循环!若要练习本章中讨论的概念。
67 2
|
9月前
|
算法 API C++
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
Qt框架与STL库之间的巅峰对决:差异、优缺点及适用场景
618 0
|
机器学习/深度学习 数据采集 存储
不谈高级原理,只用简单的语言来聊聊机器学习
不谈高级原理,只用简单的语言来聊聊机器学习
378 0
不谈高级原理,只用简单的语言来聊聊机器学习
|
存储 安全 量子技术
引入纯度和类型注释、捕捉编程错误,MIT推出低开销量子编程语言Twist
研究者希望 Twist 为创建更多有助于编程人员更易面对量子计算挑战的语言铺平道路。
132 0
引入纯度和类型注释、捕捉编程错误,MIT推出低开销量子编程语言Twist
|
自然语言处理 搜索推荐
革命性的基于知识编程语言Wolfram发布第一个演示
我们曾在去年年底时介绍过 Stephen Wolfram 这位传奇人物雄心勃勃的新计划,一种将颠覆编程甚至颠覆世界的全新计算模式—Wolfram 语言。2 个月过去之后,这门语言推出了第一个演示视频。虽然视频只有 10 几分钟,但看到那简洁明了的代码以及丰富绚丽的结果之后,你一定会感到极大的震撼。
222 0
革命性的基于知识编程语言Wolfram发布第一个演示
|
算法
【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
251 0