量子计算语言

放大字体  缩小字体 2022-01-21 16:31  浏览次数:

A language for quantum computing

时间晶体。微波。钻石。这三个完全不同的东西有什么共同之处?

量子计算。与使用比特的传统计算机不同,量子计算机使用量子位将信息编码为0或1,或两者同时编码。再加上量子物理学的混合力量,这些冰箱大小的机器可以处理大量的信息——但它们远非完美无瑕。就像我们的普通计算机一样,我们需要正确的编程语言来在量子计算机上进行正确的计算。

为量子计算机编程需要意识到一种叫做“纠缠”的东西,这是一种量子位的计算倍增器,可以转化为巨大的能量。当两个量子位纠缠在一起时,一个量子位的作用可以改变另一个量子位的值,即使它们在物理上是分开的,这就产生了爱因斯坦所描述的“远距离的幽灵作用”。但这种力量也同样是软弱之源。在编程时,如果不考虑到一个量子位与另一个量子位之间的纠缠而丢弃一个量子位,可能会破坏存储在另一个量子位中的数据,从而危及程序的正确性。

麻省理工学院计算机科学与人工智能(CSAIL)的科学家们旨在通过创建他们自己的量子计算编程语言Twist来进行一些拆分。Twist可以通过一种经典程序员都能理解的语言来描述和验证哪些数据纠缠在量子程序中。该语言使用了一种叫做“纯净”的概念,这种概念加强了没有纠缠的特性,从而生成更直观的程序,理想情况下bug更少。例如,程序员可以使用Twist来说明程序作为垃圾生成的临时数据不会与程序的答案纠缠在一起,这样就可以安全地丢弃这些数据。

虽然这一新兴领域可能会让人觉得有点华而不实和未来主义,但量子计算机在传统意义上无法解决的任务,如密码和通信协议、搜索、计算物理和化学方面,有可能实现计算上的突破。计算科学的关键挑战之一是处理问题的复杂性和所需的计算量。而经典的数字计算机需要非常大的指数级比特数才能处理这样的模拟,量子计算机可以做到这一点,只要有合适的程序,就可以使用非常少的量子位。

MIT博士生查尔斯·袁(Charles Yuan)是Twist论文的第一作者,他说:“我们的Twist语言允许开发者通过明确说明一个量子位何时不能与另一个纠缠在一起,来编写更安全的量子程序。”“因为理解量子程序需要理解纠缠,我们希望Twist为语言铺平道路,让程序员更容易理解量子计算的独特挑战。”

解开量子纠缠

想象一个木箱,有一千根电缆从一边伸出来。你可以把任何电缆从盒子里拉出来,也可以把它推进去。

这样做一段时间后,电缆就会形成一种位(0和1)的模式,这取决于它们是在内部还是外部。这个盒子代表了一台经典计算机的内存。这台计算机的程序就是一系列指令,指示什么时候以及怎样拉电缆。

现在想象一下另一个看起来一模一样的盒子。这一次,你拉一根电缆,当它露出来的时候,一些其他的电缆被拉回里面。很明显,在盒子里,这些电缆以某种方式缠绕在一起。

第二个盒子类似于量子计算机,要理解量子程序的含义,就需要理解其数据中存在的纠缠。但是探测纠缠并不简单。你无法看到木箱里面,所以你能做的最好的事情就是试着拉上电缆,仔细地找出那些缠绕在一起的电缆。同样地,今天的量子程序员不得不手工推理量子纠缠。这就是Twist的设计帮助按摩那些交错的部分的地方。

科学家们将Twist设计得足够有表现力,可以为著名的量子算法编写程序,并识别其实现中的漏洞。为了评估Twist的设计,他们修改了程序,引入了一些人类程序员察觉不到的漏洞,结果显示Twist可以自动识别漏洞并拒绝程序。

他们还测量了程序在实际运行时的表现,这比现有的量子编程技术节省了不到4%的开销。

对于那些担心量子可能打破加密系统的“坏名声”的人来说,袁说,量子计算机在实践中究竟能达到多大程度上的性能承诺还不是很清楚。“后量子密码学有很多研究正在进行,它的存在是因为即使量子计算也不是全能的。到目前为止,人们已经开发出了一套非常具体的应用程序,在这些应用程序中,量子计算机可以超越传统计算机。”

重要的下一步是使用Twist创建更高级的量子编程语言。今天,大多数量子编程语言仍然类似于汇编语言,将低级操作串在一起,而不专注于数据类型和函数,以及经典软件工程中典型的东西。

“量子计算机很容易出错,而且很难编程。通过引入和推理程序代码的‘纯粹性’,Twist向简化量子编程迈出了一大步,它保证了一段纯代码中的量子位不会被非该代码中的位所改变。”芝加哥大学西摩古德曼计算机科学教授、Super.tech首席科学家弗雷德·钟说。

热门搜索排行
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知,立即做删除处理。
违法不良信息举报邮箱
晋ICP备17002844号
中国互联网举报中心