# 写给程序员的量子计算

> 抛开物理玄学，用程序员熟悉的方式入门量子计算——装好 Qiskit、写线路、打印状态、统计测量、像 debug 普通程序一样 debug 量子程序。从一个 qubit 的 Hello World，循序渐进到 Grover、Shor，底层原理随代码就地补。

- 作者：David（道雾轩）
- 最后更新：2026-08-03
- 原文：https://daiw.org/manual/quantum-computing
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

# 序 · 量子计算，其实可以「照着敲、看着结果」学

量子计算的入门材料，大多是物理学家写给物理学家的：开篇就是一串希尔伯特空间、幺正算符、狄拉克符号，公式推到你怀疑人生，却始终没让你**跑起来一行代码**。于是「量子计算」在很多程序员心里，成了一团玄学。

这个专栏反其道而行：**用程序员最熟悉的方式学量子计算——写代码、跑起来、看结果、debug。**

我们会装好一套真实可用的工具(Python + Qiskit)，把每一个抽象概念都变成**能跑、能打印、能观察**的代码：叠加是什么？写两行，把状态向量打印出来看。测量为什么是概率的？跑一千次，统计给你看。纠缠玄乎吗？建个 Bell 态，验证它。**当一个概念能被你亲手敲出来、并观察到，它就不再玄了。**

## 这个专栏怎么讲

<Callout type="info">
  **代码优先，原理随代码就地补。** 每一章都遵循同一个节奏：**先给一段能跑的代码 → 看它的真实输出 → 再解释「为什么是这个结果」**。背后的数学（量子态 $\ket{\psi}$、门矩阵、张量积）不会凭空砸给你，而是在「用代码验证到某个现象」时，才引入刚好够用的那一点——**你先看到，再理解**。
</Callout>

而且我们真的把它当**软件工程**来对待：量子程序也要**搭环境、调试、写测试、做验证**。这四件事——**环境怎么搭、算法怎么调、结果怎么验、原理是什么**——正是本专栏一步步回答的主线。学完你不只是「听说过量子计算」，而是**能上手写一个量子程序，并有办法确认它是对的**。

## 你需要什么，不需要什么

<Callout type="warn">
  **需要**：会写 Python（函数、循环、`pip install` 就够）；一点点线性代数的「感觉」（向量是什么、矩阵怎么乘）——不熟也没关系，需要时会就地补一小段。

  **不需要**：量子物理背景。我们不推薛定谔方程、不谈物理实现细节。量子计算在**计算层面**其实是一套**线性代数 + 概率**的规则，和「量子物理」这门课是两回事。你完全可以先把它当成「一种新的、基于复数向量和矩阵的计算模型」来学，照样能写出正确的量子算法。
</Callout>

## 路线图

分五站，从「装好环境跑第一行」一路到「著名算法在做什么」：

**第一站 · 起步** —— 十分钟装好 Qiskit，跑通第一个量子程序；然后认识量子比特(qubit)——它和经典 bit 差在哪、什么是叠加、怎么用代码把它的「状态」打印出来看；以及量子世界最反直觉的一步：测量。

**第二站 · 量子门** —— 操作 qubit 的积木：X、H、Z 这些单比特门（以及它们背后的幺正矩阵），叠加与干涉的玄机，多比特与张量积，最后是量子计算的明星——**纠缠**（用 CNOT 亲手造一个 Bell 态）。

**第三站 · 调试与验证** —— 这是「写给程序员」的核心一站：量子程序怎么 **debug**（状态向量模拟器、可视化、打印振幅），又怎么 **验证** 它是对的（和经典结果对比、给线路写断言和单元测试）。

**第四站 · 算法** —— 那几个著名算法到底在做什么：预言机(oracle)怎么把一个经典函数编码成量子黑箱，Deutsch-Jozsa 如何「一次查询定性质」，Grover 搜索怎么靠**振幅放大**拿到 $\sqrt{N}$ 加速，以及 Shor 凭什么能威胁 RSA（量子傅里叶变换的直觉 + 代码骨架）。

**第五站 · 现实与收尾** —— 真机为什么这么难（噪声、退相干、NISQ、纠错），以及一份继续深入的学习路线、资源和常见误区清单。

准备好了，我们先花十分钟，把工具装好、让第一个量子程序在你机器上跑起来：[环境搭建：十分钟跑通第一个量子程序](https://daiw.org/manual/quantum-computing/setup)。

## 本专栏篇目

- [写给程序员的量子计算](https://daiw.org/manual/quantum-computing.md): 抛开物理玄学，用程序员熟悉的方式入门量子计算——装好 Qiskit、写线路、打印状态、统计测量、像 debug 普通程序一样 debug 量子程序。从一个 qubit 的 Hello World，循序渐进到 Grover、Shor，底层原理随代码就地补。

### 起步 · 搭环境,跑通第一个量子程序

- [环境搭建 · 十分钟跑通第一个量子程序](https://daiw.org/manual/quantum-computing/setup.md): 装好 Python + Qiskit，写一个把量子比特置于叠加态、测量一千次的「Hello Quantum」，看到大约五五开的结果。这一章带你搭好本专栏全程要用的工具，并读懂一个量子程序的骨架。
- [量子比特 · 把 qubit 的状态打印出来看](https://daiw.org/manual/quantum-computing/qubit.md): 经典 bit 只能是 0 或 1，量子比特(qubit)却能处于两者的「叠加」。这一章用 Qiskit 的状态向量把 qubit 的内部状态直接打印出来，配上刚好够用的数学，讲清振幅、概率，以及 n 个 qubit 为什么能装下 2ⁿ 个数。
- [测量 · 为什么一测，叠加就没了](https://daiw.org/manual/quantum-computing/measurement.md): 测量是量子计算里最诡异也最核心的操作：它把叠加态「拍」成一个确定的 0 或 1，概率由振幅的模平方决定，且不可逆。这一章用代码演示坍缩——包括「测两次结果必相同」的铁证——并讲清为什么量子程序必须靠采样统计。

### 量子门 · 操作 qubit 的积木

- [单比特门 · X、H、Z 与它们的矩阵](https://daiw.org/manual/quantum-computing/single-gates.md): 量子门就是作用在状态向量上的幺正矩阵。这一章讲透最常用的单比特门——X（非门）、Z（相位翻转）、H（叠加）——给出矩阵、用代码施加并打印状态验证，并点破一个重要性质：所有量子门都可逆。
- [叠加与干涉 · 两次 H 门为什么不是「更随机」](https://daiw.org/manual/quantum-computing/superposition.md): 连按两次 H 门，结果不是「随机的平方」，而是确定地回到 0——这是量子计算最核心的现象：干涉。这一章用代码做出这个惊人实验，一步步算清振幅怎么相消相长，讲透「相位为什么是量子威力的来源」。
- [多比特与张量积 · 两个 qubit 的状态空间](https://daiw.org/manual/quantum-computing/multi-qubit.md): 多个 qubit 的状态，用张量积拼成一个 2ⁿ 维的向量。这一章讲清张量积怎么算、n 个 qubit 为什么装下 2ⁿ 个振幅，以及 Qiskit 那个让无数人读错状态的 qubit 排序（小端序）——用代码一次说清。
- [纠缠 · 用 CNOT 造一个 Bell 态](https://daiw.org/manual/quantum-computing/entanglement.md): 纠缠是量子计算最著名也最被误解的现象。这一章用一个 CNOT 门亲手造出 Bell 态，验证「测一个就瞬间确定另一个」，讲清纠缠的数学定义（拆不开的态），并戳破那个流传最广的误解：纠缠不能用来超光速通信。

### 调试与验证 · 量子程序怎么 debug

- [调试 · 量子程序怎么 debug](https://daiw.org/manual/quantum-computing/debugging.md): 量子程序没法打断点、没法 print 变量，一测还坍缩——那怎么 debug？靠模拟器的「上帝视角」：随时打印中途状态向量、看概率分布、把整段线路当矩阵看、画 Bloch 球。这一章给一套可操作的量子调试工作流，并抓一个真实的 bug。
- [验证 · 给量子线路写断言和测试](https://daiw.org/manual/quantum-computing/verification.md): 「看起来对」不等于「真的对」。这一章把量子程序当软件工程对待：用状态向量断言、幺正矩阵比对、统计检验，给量子线路写可复现的单元测试(pytest)，并直面一个根本难题——大规模量子程序为什么难以经典验证。

### 算法 · 著名算法在做什么

- [预言机 · 把经典函数变成量子黑箱](https://daiw.org/manual/quantum-computing/oracle.md): 量子算法怎么把一个经典函数 f(x) 喂给叠加态？靠「预言机」。这一章讲清可逆预言机的标准构造 |x⟩|y⟩→|x⟩|y⊕f(x)⟩，以及最关键的技巧——相位反冲(phase kickback)：把一个比特翻转的预言机，变成往输入上「盖相位」的印章。
- [Deutsch-Jozsa · 一次查询判定性质](https://daiw.org/manual/quantum-computing/deutsch-jozsa.md): 历史上第一个证明「量子能指数级超越经典」的算法。给定一个函数，只承诺它「要么恒定、要么对半」，判断是哪种——经典最坏要查指数次，量子只要一次。这一章用代码跑通它，并讲清干涉如何让答案确定地浮现。
- [Grover 搜索 · 振幅放大与 √N 加速](https://daiw.org/manual/quantum-computing/grover.md): 在 N 个无序项里找一个，经典要试 O(N) 次，Grover 只要 O(√N)。这一章亲手搭出 Grover，看正确答案的振幅怎么被「振幅放大」一轮轮抬高，讲清迭代次数为什么是 √N、以及「转过头反而更差」的经典坑。
- [量子傅里叶与 Shor · 破 RSA 的直觉](https://daiw.org/manual/quantum-computing/qft-shor.md): Shor 算法能在多项式时间内分解大整数，从而击穿 RSA——这是全世界准备「后量子密码」的原因。这一章讲清它的引擎量子傅里叶变换(QFT)、「分解 → 找周期」的巧妙归约，给出 QFT 代码骨架，并说清它离威胁你还有多远。

### 现实与收尾

- [噪声、退相干与 NISQ · 真机为什么这么难](https://daiw.org/manual/quantum-computing/noise-nisq.md): 模拟器上完美的量子程序，到真机上却错误一堆。这一章讲清元凶：退相干（qubit 撑不住量子态）、门误差（每步都可能出错、还会累积）。带你用含噪模拟器复现误差，认识我们所处的 NISQ 时代，以及量子纠错为什么是通往实用的必经之路。
- [收尾 · 学习路线与常见误区](https://daiw.org/manual/quantum-computing/recap.md): 把全专栏戳破过的量子计算常见误解收成一张清单，给出一条继续深入的学习路线和资源，并用一句话总结：量子计算对程序员，就是线性代数 + 概率 + 干涉。
