We present ongoing work on Guppy, a domain-specific language embedded in Python that allows users to write high-level hybrid quantum programs with complex control flow in Pythonic syntax, aiming to run them on actual quantum hardware.
論文ID : 2510.12582タイトル : GUPPY: Pythonic Quantum-Classical Programming著者 : Mark Koch, Alan Lawrence, Kartik Singhal, Seyon Sivarajah, Ross Duncan (Quantinuum, United Kingdom)分類 : cs.PL (プログラミング言語), cs.SE (ソフトウェアエンジニアリング), quant-ph (量子物理学)発表日時 : 2025年10月14日 (arXiv プレプリント)論文リンク : https://arxiv.org/abs/2510.12582v1 本論文はGuppyを紹介しており、これはPythonに組み込まれたドメイン固有言語(DSL)であり、ユーザーがPythonicな構文を使用して複雑な制御フローを持つ高度なハイブリッド量子プログラムを記述でき、実際の量子ハードウェア上でこれらのプログラムを実行することを目標としています。
量子計算分野におけるPythonの支配的地位 :最新の調査によると、量子計算研究者と実務者の90%以上がPythonを使用していますが、既存のフレームワークは回路レベルの抽象化に限定されており、高度な制御フローのサポートが限定的です。リアルタイム量子-古典計算の必要性 :成功するまで繰り返す(repeat-until-success)プロトコルなどのアルゴリズムは、量子測定結果に基づくリアルタイム古典データ処理が必要であり、次世代量子デバイスの発展に伴いこの必要性はさらに増加します。既存手法の限界 :ほとんどのPythonフレームワークはPythonインタプリタのトレーシングを通じて量子プログラム表現を構築するため、Pythonネイティブな制御フロー構文をキャプチャできません 条件文とループは高階コンビネータまたは他の構文構造を通じて表現する必要があります 量子プログラミングエラーを防ぐための線形型システムが不足しています Pythonの親しみやすい構文とエコシステムの利点を保ちながら、複雑な量子-古典ハイブリッド計算をサポートできるプログラミング言語を開発すること。
Guppy DSLの提案 :Pythonicな構文で量子-古典ハイブリッドプログラムを記述できるPythonに組み込まれたドメイン固有言語線形型システムの実装 :線形Qubit型を通じてコンパイル時に量子プログラミングエラー(複製禁止定理の違反など)をキャプチャ複雑な制御フローのサポート :測定結果に基づく条件文、ループなどの制御フロー構造をネイティブにサポートHugr IRへの静的コンパイル :新しい量子中間表現Hugr への編集をサポートし、量子-古典プログラムの表現と最適化をサポートPython相互運用性 :py(...)式を通じてPythonエコシステムとのシームレスな統合を実現以下が可能なプログラミング言語を設計すること:
馴染みのあるPython構文を使用 量子-古典ハイブリッド計算をサポート コンパイル時の安全保証を提供 量子ハードウェア上で実行可能なプログラムを生成 Pythonic制御フロー :if、for、while、break、continue、return文をサポート強型システム :型注釈が必須であり、変数はすべての制御フローパスで割り当てられ、一意の静的型を持つ必要があります基本型 :bool、int、float、Noneおよび対応する操作をサポート@guppy
def rx(q: Qubit, a: float) -> Qubit:
# 線形型:Qubitは複製または暗黙的に破棄できません
return h(rz(h(q), a))
線形型システムの特徴 :
Qubit値は線形に処理され、複製または暗黙的に破棄できません 量子操作署名:h: Qubit -> Qubit コンパイル時エラー検出:
q = Qubit()
return cx(q, q) # エラー:同じqubitを複数回使用
q = Qubit()
h(q) # エラー:戻り値が使用されていません
線形リストとタプル :qubitレジスタを表現するために使用特殊操作 :
get関数:指定されたインデックスのqubitを返し、そのqubitを削除した新しいリストを返すapplyメソッド:指定されたインデックスで関数を適用、例:qs.apply(cx, (i, j))リスト内包表記 :[h(q) for q in qs]構文をサポート関数は第一級値であり、Callable型コンストラクタを使用 ネストされた関数定義と変数キャプチャをサポート 再帰と相互再帰をサポート import networkx as nx
g = nx.erdos_renyi_graph(20, 0.25)
@guppy
def apply_graph(qs: list[Qubit]) -> list[Qubit]:
for i, j in py(g.edges()): # py()式がPythonコードを呼び出す
qs = qs.apply(zz, (i, j))
return qs
階層統一グラフ表現(Hierarchical Unified Graph Representation) データフロー図 :ノードは純粋関数呼び出しを表し、エッジはデータ依存性を表します構造化制御フロー :Conditionalおよび TailLoopノードを通じて分岐と反復を表現線形型サポート :ノード出力が単一のデータフローエッジのみを持つことを制約Guppyソースコード解析 型チェックと静的分析 Hugr図表現の生成 最適化とターゲットコード生成 @guppy
def teleport(src: Qubit, tgt: Qubit) -> Qubit:
tmp, tgt = cx(h(Qubit()), tgt)
src, tmp = cx(src, tmp)
if measure(h(src)):
tgt = z(tgt)
if measure(tmp):
tgt = x(tgt)
return tgt
@guppy
def rus(q: Qubit, tries: int) -> Qubit:
for _ in range(tries):
a, b = h(Qubit()), h(Qubit())
b, a = cx(b, tdg(a))
if not measure(t(a)):
discard(b)
continue
q, b = cx(z(t(q)), b)
if measure(t(b)):
break
q = x(q)
return q
すべてのサンプルプログラムがHugr IRへの正常なコンパイルに成功 型チェックが線形型違反を正しくキャプチャ 制御フローが構造化表現に正しく変換される 型安全性 :線形型システムが量子プログラミングエラーを正常に検出表現能力 :複雑な量子アルゴリズム(テレポーテーション、RUSプロトコル)の実装に成功Python互換性 :py()式を通じてPythonエコシステムとの統合を実現コンパイル正確性 :生成されたHugr IRがプログラムセマンティクスを正しく表現量子テレポーテーション :測定結果に基づく条件制御フローを示すRUSプロトコル :複雑なループとジャンプロジックを実証ネットワークグラフアプリケーション :Python相互運用性の実用的価値を説明Q# :ハイブリッド量子アルゴリズムをサポートしますが、安全保証が不足しています(不透明ポインタを使用し、線形型ではありません)Silq :命令型言語であり、線形型を備えていますが、構文アクセシビリティが低い既存フレームワーク :Catalyst、Qrisp、Cirq、ProjectQ、Pytket、PyQuil、Qiskit限界 :Pythonインタプリタトレーシングに依存し、ネイティブ制御フロー構文をキャプチャできませんAutoQASM/blqs :AutoGraphを使用して改善されていますが、依然として制限がありますProto-Quipper、QWire、Qimaera :関数型プログラミングパラダイムに基づく学習曲線 :命令型スタイルを好むプログラマーにとって敷居が高い初めて同時にサポート :Pythonic構文 + 線形型 + 複雑な制御フロー静的コンパイル方法 :インタプリタトレーシングの制限を回避実用性のバランス :型安全性と使いやすさのバランスを実現Guppyはpythonの使いやすさと量子プログラミングの安全性要件を成功裏に組み合わせた 線形型システムは一般的な量子プログラミングエラーを効果的に防止 Hugr IRへの静的コンパイルは効率的な最適化と複数ターゲットへのデプロイをサポート Python相互運用性はエコシステムの利点を保持 型システムの複雑性 :線形型は初心者にとって学習曲線がある可能性があります機能の完全性 :現在、基本的な量子ゲートのみをサポートし、高度な機能が不足していますPython機能サポート :文字列、セット、辞書などの型はまだサポートされていません線形参照メカニズム :applyメソッドの安全性には、より良い言語レベルのソリューションが必要です型システムの拡張 :より多くのPython組み込み型とユーザー定義型をサポート高度な量子機能 :制御版と随伴版の自動生成、自動アンコンピュート線形参照 :より安全なローカル線形サスペンションメカニズムの設計ツールチェーンの改善 :エラーメッセージの改善、デバッグサポート、パフォーマンス最適化革新性が強い :量子プログラミングでPythonic構文と線形型を成功裏に組み合わせた初めての試み実用的価値が高い :量子プログラミングの実際の課題を解決設計が合理的 :安全性と使いやすさのバランスが良好技術が先進的 :最新のコンパイラ技術と中間表現に基づく実験検証が限定的 :主にサンプルによる検証であり、大規模プログラムテストが不足パフォーマンス評価が欠落 :コンパイル時間、実行時パフォーマンスなどのデータが提供されていませんユーザー研究が不十分 :実際のユーザーの使用体験評価が不足エコシステム依存 :Hugr IRとTKETコンパイラの成熟度に依存学術的貢献 :量子プログラミング言語設計に新しい視点を提供産業的価値 :実用的な量子プログラミングツールになる可能性がある標準化推進 :将来の量子プログラミング言語標準に影響を与える可能性教育的意義 :量子プログラミング学習の敷居を低下させる量子アルゴリズム研究 :新しい量子アルゴリズムの開発とテストに適しているハイブリッド計算アプリケーション :複雑な制御フローが必要なアプリケーションに特に適している教育訓練 :量子プログラミング教育に使用できるプロトタイプ開発 :迅速なプロトタイプと概念実証に適している本論文は27の関連文献を引用しており、以下を含みます:
量子プログラミング言語(Q#、Silq、Proto-Quipperなど) Pythonの量子フレームワーク(Qiskit、Cirq、PyQuilなど) コンパイラ技術(MLIR、LLVM、AutoGraph) 量子計算理論(線形型、量子回路最適化) 要約 :これは高品質なシステム論文であり、革新的な量子プログラミング言語設計を提案しています。初期段階にありますが、良好な技術的可能性と実用的な見通しを示しています。今後の作業は、大規模検証、パフォーマンス最適化、ユーザー体験改善に焦点を当てることをお勧めします。