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