← 最新论文
⚛️ quantum physics

A Survey of Quantum Programming Languages

本文引入了一个分类框架,用于调查并比较十种流行的量子编程语言,并结合量子计算领域的最新突破,识别出其未来设计的关键挑战。

原作者: Quan Do, Hersh Gupta, Xiyuan Cao, Aarav Pabla, Pranav Singamsetty, Evan O'Grady, Keli Huang, Jens Palsberg

发布于 2026-06-26
📖 1 分钟阅读🧠 深度阅读

原作者: Quan Do, Hersh Gupta, Xiyuan Cao, Aarav Pabla, Pranav Singamsetty, Evan O'Grady, Keli Huang, Jens Palsberg

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正试图建造一座房子,但你使用的不是标准的砖块和木材,而是可以同时存在于两个地方的“量子砖块”。为了实现这一点,你需要一套蓝图以及一种语言,来精确地告诉施工队该做什么。

这篇论文是对程序员用来编写量子计算机指令的“语言”进行的综述。来自加州大学洛杉矶分校(UCLA)的研究团队想要弄清楚哪些语言是完成这项工作的最佳工具。他们不仅阅读了手册,还实际上使用十种不同的语言构建了三个相同的复杂结构(算法),以观察每种语言实现的难易程度。

以下是他们研究结果的详细分解,使用了简单的类比:

1. 目标:构建量子结构

团队选择了三个特定的“建筑项目”来测试这些语言:

  • Shor 算法: 可以将其想象成一个大师级的开锁工具。它的设计目的是将巨大的数字分解为它们的质因数(就像把一个巨大的乐高塔拆解开,以找到所使用的特定积木)。这非常有名,因为它理论上可以破解当前的互联网安全。
  • 哈密顿模拟(Hamiltonian Simulation): 这就像是在模拟一个复杂的天气系统或化学反应。目标是预测一群微小粒子如何随时间移动和相互作用。他们测试了两种不同的方式:
    • Trotterization(特罗特分解): 就像通过采取许多小步、稳步前进的方式来进行长距离行走。
    • LCU(线性组合酉算符): 就像通过同时结合几条不同的路径来走捷径,但这需要更多的数学准备工作。

2. 框架:他们如何评判这些语言

为了比较这十种语言(如 Cirq、Qiskit、Q#、Silq 等),作者创建了一份“成绩单”,包含三个主要类别:

  • 编程模型(蓝图风格):

    • 嵌入式(Embedded): 想象你正在写一份食谱(经典计算机部分),而在食谱内部,你正在为机器人编写一份单独且详细的操作手册(量子部分)。你必须在身为厨师和身为机器人程序员之间切换身份。大多数目前的语言都是这种工作方式。
    • 混合式(Hybrid): 想象一个厨房里,厨师和机器人是在同一个团队里的,说着同一种语言。你可以告诉机器人去切菜,然后立即告诉厨师去搅拌锅里的东西,这一切都在一个连续的流程中完成。这种方式更流畅,但构建起来更难。
  • 表达能力(工具箱):
    语言是否拥有让工作变得容易的正确工具?

    • Pauli 操作(Pauli Manipulation): 它是否拥有用于特定物理数学的预制“乐高砖块”,还是你需要从头开始构建这些数学逻辑?
    • 经典数据编码(Classical Data Encoding): 它能否轻松地将普通数字转化为量子态?
    • 量子整数(Quantum Integers): 它能否像我们对普通数字进行数学运算一样,对“量子数字”(由量子比特组成的数字)进行数学运算?
    • 动态分配(Dynamic Allocation): 该语言能否仅在你需要时从架子上取出一个新工具(量子比特),并在用完后将其放回,而不需要你事先精确计算需要多少个工具?
  • 安全性(护栏):

    • 类型安全(Type Safety): 语言是否会阻止你尝试用锤子去拧螺丝?它会在你运行代码之前检查代码,以确保你没有犯低级错误。
    • 初始化安全性(Initialization Safety): 在量子计算中,如果你重复使用一个“脏”工具(之前使用过的量子比特),它可能会搞乱你的新项目。一种安全的语言会自动清理工具(进行逆运算/uncompute),使其保持新鲜并准备好再次使用。

3. 结果:没有完美的工具

团队用十种不同的语言编写了相同的程序(包括 Google 的 Cirq 和 Microsoft 的 Q# 等工业级工具,以及 Silq 等学术工具)。

  • 重大发现: 目前还没有完美的语言。

    • 有些语言擅长安全性(如 Silq,它会自动清理其工具),但缺乏一些高级数学快捷方式。
    • 有些语言擅长数学快捷方式(如 CUDA-QCirq),但要求程序员非常小心地管理他们的工具。
    • 有些语言是“混合式”(流畅地混合经典与量子),而另一些则是“嵌入式”(将两者分开)。
  • “代码行数”测试: 他们统计了在每种语言中构建相同结构所需的代码行数。

    • Q#Silq 在某些任务中非常简洁(代码行数较少)。
    • PyQuilCUDA-Q 有时需要更多的代码行,因为它们必须手动构建其他语言可以自动生成的组件。
    • 有趣的是,无论使用哪种语言,执行“LCU”模拟方法所需的代码始终比“Trotterization”方法更多。

4. 结论

论文得出结论,虽然我们有很多语言可以选择,但没有一种语言具备我们所需的一切。

  • 如果你想要安全性,你可能会失去易用性。
  • 如果你想要强大的数学工具,你可能必须亲自管理内存(量子比特)。

作者希望这项综述能帮助未来的语言设计者构建出一种“瑞士军刀”式的语言,它兼具最好的安全性、最好的数学工具和最流畅的工作流,使量子编程能够被所有人触及。

简而言之: 量子编程就像是在学习驾驶一种新型汽车。目前我们有十种不同的车型(语言)。有些车有很好的刹车(安全性),有些车有强大的引擎(表达能力),但目前还没有一款车拥有完美的性能组合。这篇论文是弄清楚那辆“完美汽车”应该是什么样子的第一步。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →