麻省理工学院计算机科学与人工智能实验室(CSAIL)的一个研究小组创建了一种新的量子计算编程语言,名为 Twist。Twist 的设计目标是让开发者更容易识别哪些数据是纠缠在一起的,从而创建错误更少、更容易调试的量子计算程序。
Twist 项目地址:https://spectrum.ieee.org/quantum-programming-language-twist
Twist 的基础在于识别量子纠缠。量子纠缠是一种物理现象,指的是量子计算机内两块数据的状态联结在一起。“当你操作处于纠缠状态的一块数据时也可能会影响另一块。你可以用这种特性来实现强大的量子算法,但它也让你写的程序很难直观推理,并容易引入微妙的错误。”上面这段话来自麻省理工学院 CSAIL 计算机科学博士生、Twist 论文的主要作者 Charles Yuan,这篇论文发表在《ACM 编程语言》杂志上。
Charles Yuan 说:“Twist 提供了一些特性,让开发者可以确定哪些数据是纠缠的,哪些不是。”“在程序中加入关于纠缠的信息后,你就可以检查量子算法的实现是否正确。”
该语言的特性之一是一个类型系统,使开发者能够指定他们程序中的哪些表达式和数据片断是纯粹的。据 Yuan 说,一个纯粹的数据片断是没有纠缠的,因此不存在可能由纠缠造成的错误和不直观的效果。Twist 还加入了纯度断言运算符来确认一个表达式不存在与任何其他数据的纠缠关系,与之搭配的还有静态分析和运行时检查,可以用来验证这些断言。
为了评估这种语言,该团队用 Twist 为一组著名的量子算法编写了一些程序,并在量子模拟器上执行了它们。“我们的实验表明,运行这些运行时检查的开销不超过运行基本程序的 3.5%,我们认为这是相当低的数字,相比语言给你的安全保证来说是一个很好的权衡,”Charles Yuan 说。
该团队还在一些程序中引入了一些小错误,并发现 Twist 可以检测到这些错误并拒绝错误的程序。“我们希望,当人们使用我们的语言或为他们的特定用例设计新的量子语言时,他们可以考察一下我们的工作,并认可纯度这个想法和将纠缠作为一种特性的设计,因为这将给他们带来更多信心,让他们确认自己的程序是正确的,而不必运行大量昂贵的模拟和测试,”Charles Yuan说。
当许多研究人员专注于开发高效和优化的量子硬件时,Twist 旨在填补量子软件的空白。麻省理工学院副教授、Twist 论文的共同作者 Michael Carbin 说:“与我们看到的机器学习和其他高性能计算应用类似的是——在硬件发展的每一个新阶段,我们都会得到一个新的系统和很多潜在的新能力——如果我们能充分利用硬件能力,也许就能获得许多不可思议的机会。但几乎每次都是软件上的问题让人们难以利用硬件能力,也很难在不同的软件系统中部署和广泛使用这些硬件。”“我们正在做的工作是奠定一些基础,并试图找出一些可能提升这些类型设备可编程性的核心抽象。”
然而,该团队在构建 Twist 时面临的挑战之一是缺乏一个关于量子程序特征的标准。“多年来,人们已经开发了一些核心算法来解决个别复杂的任务,如整数因式分解等,但我们如何为它建立一个完整的软件生态系统却依旧是个问号,”Charles Yuan 说。“有了 Twist,我们就能够围绕我们对要在量子计算机上执行的任务的最佳共识来构建语言,并让编程语言对这些任务尽可能具有表达力。”
谈到局限,Twist 只能告诉你一个数据是否与其他数据纠缠在一起,但不能告诉你它们是如何纠缠在一起的。”袁说:“它们纠缠的具体方式将决定一个量子算法是否正确,但数据纠缠的方式有无数种。”给出这种更精细的细节是一个真正的挑战,这也是我们未来需要做的事情。”
该团队现在正在开发另一种语言,它建立在 Twist 的基础上,目标是应对其他量子现象(如相位和叠加)。但他们希望 Twist 将为创造更好的量子程序铺平道路。
Charles Yuan 说:“对于一位试图实现量子算法的开发者来说,他们需要语言中内置的工具来告诉他们程序中正在发生一些由纠缠引发的事情。”如果我们能够构建一系列核心语言原则和特性,让开发者可以推理纠缠现象,我们就可以减轻纠缠带来的认知负担,并让开发者写出更符合直觉的程序。”
原文链接:https://spectrum.ieee.org/quantum-programming-language-twist
你也「在看」吗?👇