
前言
目前大多数关于量子计算的资料,一部分围绕难以置信的物理知识,使量子计算成为可能;另一部分讨论量子计算成为主流技术之后可预期的顶层结果。而在本书中,我们关注许多开发者的疑问:量子计算如何影响我的日常开发,我又如何从中获益?要回答这个问题,需要从开发者的角度看待量子计算,即假设硬件已经或即将为人所用(可通过本地硬件或模拟器来实现),且我们编写的代码也不受营销炒作的影响。
目标读者
本书的目标读者是想要了解自己能否以及如何从量子计算中获益,量子计算又如何对工作产生影响的程序员。读者无须了解量子物理的知识,因为本书会解释量子计算将推动哪些领域的进步,并说明程序员们如何像使用现代硬件(如GPU)一样在不了解内部细节的情况下利用量子计算。
本书的内容
本书由3部分组成。第1部分提供一些关于量子计算的背景知识,第2部分介绍使量子计算区别于传统计算的基本概念,第3部分介绍程序员可以直接使用的算法和代码。
第1部分介绍关于量子计算的背景知识。
● 第1章讨论量子计算的重要性,摒弃流行语和不切实际的期望。脚踏实地的程序员会说“直接给我看代码”,本书就是这样做的。
● 在第2章,我们利用基于Java的量子计算模拟器Strange搭建第一个Java应用程序(也就是常说的“Hello, world”应用程序)。Strange量子计算模拟器将程序员与量子计算的底层细节隔离开,提供利用了量子概念的API。
● 第3章介绍量子位,这是量子计算的基本单元,类似于传统计算中的位。
第2部分介绍量子计算的相关概念。
● 第4章讨论叠加态,这是量子物理的核心原理之一。这一章给出的代码可以让你在Java应用程序中使用量子叠加态。
● 第5章解释了不同的量子位如何通过量子纠缠保持关联,及其对应用程序的意义。
● 第6章介绍量子网络,这是量子计算的一种具体应用。
第3部分利用代码示例介绍较复杂的实用算法。这一部分主要聚焦于解释算法的应用,但也会解释一些算法的内部细节,帮助读者理解类似的算法。
● 第7章对第2章给出的“Hello, world”应用程序进行解释。这个简单的应用程序并没有太大的实际用处(就像一般的“Hello, world”应用程序一样),但它说明了如何创建量子应用程序。
● 第8章在第6章和第7章的基础之上,说明如何创建一个利用了量子网络的Java应用程序,在两方之间进行安全通信。
● 第9章解释多伊奇-约萨算法。这个算法很容易利用Strange实现,使读者进一步熟悉量子计算的典型规律。
● 第10章讨论著名的量子算法:格罗弗搜索算法。这一算法对开发者而言具有现实意义。
● 第11章介绍舒尔算法,这也许是目前最热门的量子算法。这一算法需要结合传统计算和量子计算,十分适合作为本书的结尾。
本书配套代码
本书展示和引用了许多示例与演示应用程序。这些应用程序都用到了Strange量子计算模拟器。由于Strange是一个不断发展的项目,因此本书中的应用程序也会随之发展。
本书中的示例都基于撰写本书时最新公开的发行版Strange,此版本已上传到知名存储库(例如Maven Central等)。即使Strange的API发生变化,本书中的代码在未来也能运行。
本书的清单和正文包含许多源代码示例。源代码可能已被重新排版,添加了换行并重新设计了缩进,以适应本书的页面空间。在页宽不足时,可能增加了续行符。此外,正文中的源代码的注释通常已被删除。许多清单都包含代码注解,以突出重要概念。