在2020 PLDI [1]会议上(程序语言和编译技术领域的顶级会议),苏黎世联邦理工学院(ETH Zurich)的计算机科学教授Martin Vechev介绍了一种量子计算机的高级编程语言Silq[2],使其可以像传统计算机一样简单,可靠且安全地对量子计算机进行编程。与现有的其它编程语言相比,该语言更安全、更简单、更快、更直观且更易于理解,它使程序员能够更好地对量子计算机进行编程,从而能够充分利用量子计算机的潜力。该算法已发布在其官网[3]上。如今,量子编程语言已与特定硬件紧密联系在一起。它们精确地描述了底层电路的行为。对于程序员而言,这些“硬件描述语言”既麻烦又容易出错,因为各个编程指令必须非常详细,才能明确描述实现量子算法所需的细节。利用量子计算的潜力不仅需要最新的技术,还需要一种描述量子算法的量子编程语言。原则上,算法是解决问题的“配方”。一种编程语言描述了该算法,以便计算机可以执行必要的计算。ETH 研究人员发现当他们想要去解决量子计算中更高级的问题时,现存量子计算机编程语言,如Microsoft的Q#和IBM的Qiskit等软件开发工具包(SDK)不能满足其需求,于是,Silq便诞生了。
图2 | Grover算法演示,(来源:ETH )
Silq的核心是非计算(Uncomputation),它是从量子计算机的技术细节中抽象出来的高级编程语言,它可以用更少、更简洁的代码描述复杂的任务和算法,其不是围绕硬件的结构和功能,其立足于程序员只想以最简单的方式解决问题的视角,让程序员无需了解计算机体系结构和实现的每个细节,便可实现他们的诉求。
图3 | 与量子线路进行比较,(来源:ETH )
计算机通过几个中间步骤来计算任务,这些步骤会创建中间结果或临时值。为了释放内存,传统计算机会自动删除这些值。由于多余的临时值已被丢弃,计算机科学家将其称为“垃圾收集”。而在量子计算机中,由于量子纠缠的特殊性质,这种处理变得更加棘手,因为先前计算的值可能与当前值发生交互,从而干扰正确的计算。因此,在量子计算机上清除这些临时值需要一种更高级的非计算技术。
图4 | Silq官方展示效果图 (来源:ETH Zurich))这意味着,即使您想在量子计算机上做相对简单的计算,比如添加整数,您也必须考虑在这个过程中创建的所有临时值,并显式地处理它们。即必须想办法处理此类垃圾(例如需要丢弃的临时值)。而基本上现有的量子语言都迫使使用者在非常低的抽象水平上工作,考虑所有临时值。这从根本上阻止了更高级别的思考。
虽然当前的量子语言试图解决此问题,但方式都相对复杂,而Silq可以立即进行安全、自动的计算。
Silq是第一种自动识别并清除临时值的编程语言,其通过运用经典编程语言的知识实现这一点,Silq的自动非计算方法只使用编程,没有任何特殊的量子的命令操作。
因此,其生成的程序比使用Q#和Quipper 编写的程序要短得多,并且使用的量子语言要少得多。研究人员将其命名为“qfree”。
对于编程人员而言,编写底层程序更容易出错,这使得理解算法实际上在做什么变得更加困难。因此,Silq还具有一个重要功能,那便是其编译器类型检查器还试图防止程序员犯常见错误。
除此之外,该团队还研究了经典语言(比如所有权类型Ownership Types、线性类型Linear Type 等)的最新发展,并在量子计算的背景下实现了这些技术,并通过Silq得以体现。
Vechev团队表示,尽管Silq在编程语言取得了重大的突破,但是,团队还会不断对其进行完善,希望通过该语言的进步,激发量子编程语言的进一步发展以及促进量子算法理论的研究进展。
参考链接:
[1]https://pldi20.sigplan.org/
[2]https://dl.acm.org/doi/10.1145/3385412.3386007
[3]https://silq.ethz.ch/
声明:此文来源投稿,出于传递更多信息之目的。若有来源标注错误或侵权,请作者持权属证明与我们联系,我们将及时更正、删除