与使用比特的传统计算机不同,量子计算机使用量子比特将信息编码为 0 或 1,或两者同时编码。再加上来自量子物理学的各种力量,这些冰箱大小的机器可以处理大量信息——但它们远非完美无缺。就像我们的普通计算机一样,我们需要有正确的编程语言才能在量子计算机上正确计算。
对量子计算机进行编程需要了解一种叫做“纠缠”的东西,这是一种用于各种量子比特的计算乘数,可以转化为强大的能量。当两个量子位纠缠在一起时,一个量子位上的动作可以改变另一个量子位的值,即使它们在物理上是分开的,这引起了爱因斯坦对“远距离幽灵动作”的描述。但这种效力同样是弱点的来源。在编程时,丢弃一个量子位而不注意它与另一个量子位的纠缠可能会破坏存储在另一个量子位中的数据,从而危及程序的正确性。
麻省理工学院计算机科学与人工智能 (CSAIL) 的科学家旨在通过创建自己的量子计算编程语言 Twist 来解开谜团。Twist 可以通过经典程序员可以理解的语言来描述和验证量子程序中纠缠了哪些数据。该语言使用了一个称为纯度的概念,它强制不存在纠缠并产生更直观的程序,理想情况下错误更少。例如,程序员可以使用 Twist 表示程序作为垃圾生成的临时数据不会与程序的答案纠缠在一起,从而可以安全地丢弃。
虽然新兴领域可能会让人感觉有点浮华和未来感,但脑海中浮现出巨大的金属机器的图像,但量子计算机具有在经典无法解决的任务中实现计算突破的潜力,例如密码学和通信协议、搜索以及计算物理和化学。计算科学的主要挑战之一是处理问题的复杂性和所需的计算量。经典的数字计算机需要非常大的指数位数才能处理这样的模拟,而量子计算机可能会使用非常少量的量子位来做到这一点——如果有正确的程序的话。
“我们的语言Twist允许开发者编写更安全的量子程序,明确说明什么时候量子比特不能与另一个量子比特纠缠,” 麻省理工学院电子工程和计算机科学博士生,也是一篇关于 Twist 新论文的主要作者,Charles Yuan说,“因为理解量子程序需要理解纠缠,我们希望 Twist 为语言铺平道路,使程序员更容易应对量子计算的独特挑战。”
Yuan与麻省理工学院电子研究实验室电子工程和计算机科学博士生Chris McNally,以及麻省理工学院助理教授Michael Carbin一起撰写了这篇论文。 他们在上周于费城举行的2022年编程原则研讨会上展示了这项研究。
想象一个木箱,它的一侧伸出一千根电缆。您可以将任何电缆从包装盒中拉出,也可以将其完全推入。
在你这样做一段时间后,电缆会形成一个位模式——零和一——取决于它们是在里面还是在外面。这个盒子代表了经典计算机的内存。该计算机的程序是关于何时以及如何拉电缆的一系列指令。
现在想象第二个外观相同的盒子。这一次,你拉一根电缆,看到它出现时,其他几根电缆被拉回了里面。显然,在盒子内部,这些电缆不知何故相互纠缠在一起。
第二个框是量子计算机的类比,理解量子程序的含义需要理解其数据中存在的纠缠。但是检测纠缠并不简单。你看不到木箱,所以你能做的最好的就是尝试拉动电缆并仔细推理哪些是纠缠的。同样,今天的量子程序员不得不手动推理纠缠。这就是 Twist 的设计有助于按摩其中一些交错部分的地方。
科学家们设计的 Twist 具有足够的表现力,可以为著名的量子算法编写程序并识别其实现中的错误。为了评估 Twist 的设计,他们对程序进行了修改,以引入某种对于人类程序员来说相对不易察觉的错误,并表明 Twist 可以自动识别错误并拒绝程序。
他们还测量了程序在运行时方面的实际执行情况,与现有的量子编程技术相比,它的开销不到 4%。
对于那些担心量子在破解加密系统方面的“肮脏”名声的人来说,袁说,量子计算机在多大程度上能够在实践中实现其性能承诺,目前还不是很清楚。“在后量子密码学方面正在进行大量研究,这些研究之所以存在,是因为即使是量子计算也不是万能的。到目前为止,人们已经开发出一套非常具体的应用程序,其中量子计算机可以优于传统计算机。”
重要的下一步是使用 Twist 创建更高级别的量子编程语言。今天的大多数量子编程语言仍然类似于汇编语言,将低级操作串在一起,没有注意数据类型和函数等东西,以及经典软件工程中的典型内容。
“量子计算机容易出错且难以编程。通过引入和推理程序代码的‘纯度’,Twist 通过保证纯代码中的量子位不能被更改,朝着更容易量子编程迈出了一大步由代码中没有的位组成,”芝加哥大学计算机科学 Seymour Goodman 教授、Super.tech 首席科学家 Fred Chong 说。