查看原文
其他

“Hello World”——来自量子编程语言Silq的问候

光子盒研究院 光子盒 2021-12-15

出品  光子盒研究院


1989年的圣诞节,恰是西方人的年假,为了打发时间,荷兰程序员Guido van Rossum便开始着手编写新的脚本解释程序,于是python诞生了。


Guido van Rossum,江湖人称龟叔,他发明Python的原因便是源自于对当时各类编程语言的嫌弃。经过几个月的不懈努力,1991年第一个Python编译器面向世界发布。于是,人类又增加了一种“Hello World”的语言方式


时至今日,Python已经走过了29个年头,是Java、Ruby这些编程语言的老大哥,尽管看起来像后起之秀,但实际上老当益壮。


随着大数据、人工智能的兴起,Python风头无两,在数据科学和机器学习中得到广泛应用。全球范围内如同海啸一般的数据,通过Python进行收集整理、分析、应用,将会不断造福整个社会。像Instagram、Facebook、Netflix、Quora和谷歌这样的大公司都在深入开发Python;去年,NASA拍摄的黑洞处女照轰动全球,也正是得益于Python的应用。


业内众多人士预测,量子计算机将经历与经典计算机几十年相同的发展阶段那么,为量子计算打造专门的编程语言,便是必经之路。


量子计算机与量子编程


1982年,美国著名物理物学家理查德·费曼在一个公开的演讲中提出利用量子体系实现通用计算的新奇想法。紧接其后,1985年,英国物理学家大卫·德义奇出了量子图灵机模型。理查德·费曼当时就想到,如果用量子系统所构成的计算机来模拟量子现象,则运算时间可大幅度减少,从而量子计算机的概念诞生了。


量子计算机基于量子的比特,也称为量子比特。它们有两个可能的值(状态)为 0 和 1,类似于我们在经典计算机中的值。但量子力学定律也允许其他可能性,我们称之为叠加态。


一台由 IBM 创造结合了量子寄存器的量子计算机


量子编程的概念最早是Knill在1996年提出的。他设计了量子随机访问机:(QRAM)模型,并提出一系列编写量子伪代码的规定量子编程是一组使用高级设计表达量子算法的编程语言


一台典型的计算机基于一个位二进制变量,它只有两个可能的值(0或1,true或false)。量子计算机是基于量子比特的。量子比特意味着在0到1之间还有很多其他的变量被称为叠加。常规计算机不如量子计算机,因为它们不能处理这样复杂的算法。


来自IBM 的QISKit软件包使所有感兴趣的开发人员能够获得他们的第一次量子体验,它包括用于在PC上运行程序的模拟器和用于访问位于IBM云中的20千比特量子计算机的工具。要编写程序,必须使用量子编程语言。


量子计算机的一种直观语言


2020年6月,苏黎世联邦理工学院的计算机科学家开发了一种量子编程语言Silq,该语言能够优雅,简单且安全地解决复杂的计算


苏黎世联邦理工学院ETH智能系统实验室(SRI)的计算机科学教授Martin Vechev说:“对量子计算机进行编程仍然是研究人员面临的挑战,这就是为什么我如此兴奋以至于我们现在可以继续苏黎世ETH的传统而感到兴奋。以至于我们现在可以继续苏黎世ETH对量子计算机和编程语言的发展。”


与现有语言相比,量子编程语言Silq使程序员能够更好地利用量子计算机的潜力,因为代码对于程序员而言更紧凑,更快,更直观并且更易于理解Vechev将在PLDI 2020(编程语言会议)上将Silq介绍给该领域的其他专家。为了促进讨论,采用和进一步发展,他和他的团队还在自己的网站(silq.ethz.ch)上发布了Silq。



利用量子计算的潜力不仅需要最新的技术,而且还需要一种描述量子算法的量子编程语言。原则上,算法是解决问题的“配方”;一种程序语言描述该算法,以便计算机可以执行必要的计算。


如今,量子编程语言已与特定硬件紧密联系在一起。换句话说,它们精确地描述了底层电路的行为。对于程序员而言,这些“硬件描述语言”既麻烦又容易出错,因为各个编程指令必须非常详细,从而明确描述实现量子算法所需的细节。


Silq是一种量子编程语言,其主要设计目的不是围绕硬件的结构和功能,而是在程序员想要解决问题时的心态——无需他们了解计算机体系结构和实现的每个细节。


计算机科学家将从特定类型计算机的技术细节中抽象出来的计算机语言称为高级编程语言。高级编程语言更具表现力,这意味着它们可以用更少的代码描述甚至复杂的任务和算法。这使它们更易于理解,并且更易于程序员使用。它们也可以与不同的计算机体系结构一起使用。


Silq给量子编程语言带来的最大创新和简化,是一个至今困扰量子编程的错误源。


计算机通过几个中间步骤来计算任务,这些步骤会创建中间结果或临时值。为了释放内存,传统计算机会自动删除这些值。由于多余的临时值已被丢弃,计算机科学家将其称为“垃圾收集”。


对于量子计算机,这种处理由于量子纠缠而更加棘手:先前计算出的值可能与当前值发生交互,从而干扰正确的计算。因此,在量子计算机上清理此类临时值需要一种更高级的所谓的非计算技术。



Silq是一种自动识别并清除不再需要的值的编程语言,”Bichsel解释说,“Silq在优化量子计算机的编程方面是一项重大突破,这不是发展的最后阶段。”仍然存在许多悬而未决的问题,但是由于Silq易于理解,Vechev和Bichsel希望刺激量子编程语言的进一步发展以及新量子算法的理论和发展。


该四人团队经过两年的努力,结合了语言设计、量子物理和实现方面的不同专业知识,取得了突破。”如果其他研发团队接受我们的创新,这将是一个巨大的成功。


量子编程的未来


今天,大多数研究人员相信,有一天这些计算机将能够比传统计算机更快地解决某些问题,因为它们使用纠缠量子态来进行计算,在纠缠量子态中,不同的信息位在某个时间点重叠。这意味着在未来,量子计算机将能够有效地解决经典计算机在合理的时间范围内无法解决的问题。


这种量子优势还有待最终的证明。然而,最近已经取得了一些重大的技术进展。2019年夏末,一台量子计算机成功地解决了一个问题——尽管是一个非常具体的问题——速度比最快的经典计算机还要快。


对于某些“量子算法”,即计算策略,我们也知道它们比经典算法要快,因为经典算法没有开发量子计算机的潜力


然而,到目前为止,这些算法仍然不能在现有的量子硬件上计算,因为量子计算机目前仍然太容易出错。而今量子计算从编程语言到算法已万事具备,只待量子计算机取得新的突破。


-End-


1930年秋,第六届索尔维会议在布鲁塞尔召开。早有准备的爱因斯坦在会上向玻尔提出了他的著名的思想实验——“光子盒”,公众号名称正源于此。

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存