量子计算实战
上QQ阅读APP看书,第一时间看更新

1.5 从量子到计算还是从计算到量子

信息技术项目中有多种运用量子计算的方式,人们正在同时开展不同方向的研究。大体而言,研究有两个不同的思路,两者中间存在许多中间地带,如图1.10所示。

图1.10 在新的量子专用语言和现有语言之间寻找平衡

一个极端思路是使用直接对应于量子计算的物理特性的特定软件语言,例如微软发明的量子软件语言Q#,这种方法有明显的优缺点。

优点:直接建立在量子物理概念之上,更容易在具体应用程序中运用这些概念;

缺点:已有许多开发语言可供选择,切换语言的学习成本更高。另外,由于多数应用程序需要量子计算与经典计算的结合,仅使用一种量子专用语言并不足以支持一个项目。

另一个极端思路则是坚持现有语言,对开发者隐藏所有的量子特征,这种思路也有优缺点。

优点:开发者不用学习新的编程语言,他们的软件可以“魔法般地”从经典、量子、混合模式中选择最合适的实现方式;

缺点:“魔法般”的效果其实很难实现。将特定语言在特定情形下进行优化就已经很困难(这是即时编译器的工作),而在运行过程中动态地决定是使用量子还是经典程序则更加棘手。

本书选择了两个极端思路的中间地带。第2章介绍的Strange量子模拟器支持Java开发者创建使用量子计算的应用程序。你不需要学习一门新的语言,但仍然可以创建属于自己的算法,并从量子特性中获益。

本书的第1部分主要讨论量子物理的特性,这些特性使得量子计算与经典计算存在根本性差异。我们会用Strange中的底层代码来说明这些概念。

第2部分讨论这些基本概念如何与Java代码相关联,以便更加接近“使用现有语言”的方式。

第3部分将聚焦于可以在库中实现并被开发者使用的量子算法。如图1.11所示。

图1.11 本书的各部分与开发量子计算软件不同方式的对应关系

最后,我们预计软件平台将变得越来越智能,且可以找到结合经典计算与量子计算实现特定功能的最佳方法。这需要很长时间,但与此同时,了解量子计算及其特性对于软件开发者而言一定是一种竞争优势。