The majority of the conversations about quantum computing focus on hardware and the software side gets less attention, but it is where most people who work with quantum computers actually spend their time.

Quantum programming is the practice of writing algorithms and applications for quantum computers or quantum simulators. It draws on quantum mechanical phenomena such as superposition, entanglement, and interference – to encode and process information in ways that classical computing cannot. A quantum program specifies a sequence of gate operations applied to qubits, measurement operations, and classical post-processing logic.

The ecosystem has matured significantly and the field has settled on Python as its common language, with a range of frameworks sitting on top of it targeting different hardware platforms and use cases. Understanding what those frameworks do – and why they differ – matters for anyone building with quantum computers today.

Classical programming is deterministic – input goes in, output comes out. Quantum programming, by contrast, is probabilistic – algorithms must be designed to amplify correct answers through quantum interference while suppressing incorrect ones.

The constraint that shapes everything else is measurement. Classical code can inspect any variable at any point. Quantum code can only extract information by measuring qubits – and measurement collapses the quantum state, destroying it. Quantum programmers cannot use print statements or step-through debuggers on quantum variables. Algorithms need to be mathematically verified before testing, with validation relying on statistical error rates rather than deterministic checks.

Resource constraints are also more severe. Classical programs run on billions of transistors. Current quantum programs must fit within 50 to a few hundred qubits on production hardware, with strict limits on circuit depth before errors accumulate. This makes quantum programming closer in spirit to embedded systems or Field-programmable gate array (FPGA) design than to standard software engineering.

The ecosystem divides into three layers.

1. Instruction-set languages (OpenQASM, Quil) sit close to the hardware, providing low-level gate sequences that quantum processors can execute directly. Powerful, but requiring deep knowledge of quantum gate design.

2. High-level SDKs (Qiskit, Cirq, Q#, PennyLane) provides Python-based frameworks with abstractions for circuit construction, noise modeling, and optimization. These are what most developers use.

3. Domain-specific languages (Bloqade for neutral atoms) target specific hardware platforms or problem types, trading generality for specialization.

Reading

Articles, Blogs, Essays


Quantum Programming Frameworks

The following is a non-exhaustive selection. The landscape is broad and evolving rapidly, and the inclusion or omission of any entry should not be interpreted as a ranking or endorsement.

CUDA-Q (NVIDIA)

CUDA-Q is NVIDIA‘s QPU-agnostic platform for accelerated quantum-classical computing, released as open-source in 2023. It supports both Python and C++ and integrates with 75% of publicly available QPUs, including IonQ, Quantinuum, and Pasqal – using MLIR/LLVM/QIR compilation with GPU-accelerated simulators.

In 2026, Classiq integrated CUDA-Q for accelerated hybrid workflows, reducing circuit synthesis and execution of a 31-qubit circuit from 67 minutes to 2.5 minutes on a single NVIDIA A100 GPU. Similarly, QCentroid also combined its QuantumOps platform with CUDA-Q, giving enterprise users access through an AI copilot layer.

Bloqade (QuEra)

Bloqade is QuEra’s specialized SDK for neutral-atom quantum computing, supporting both digital and analog quantum computing paradigms. Bloqade-analog handles analog/Hamiltonian simulation on neutral atoms; Bloqade handles gate-based digital circuit execution. Version 0.26+ provides fine-grained control over atom positioning, mid-circuit measurements, and real-time feedback. 

Stim (Google)

Stim is Google‘s specialized library for quantum error correction simulation and stabilizer codes. It can analyze a distance 100 surface code circuit in 15 seconds and then sample shots at kilohertz rates, making it the primary tool for researchers designing fault-tolerant quantum computers. Not a general programming framework – purpose-built for error correction work. 

PyQuil (Rigetti)

PyQuil is Rigetti‘s Python framework for superconducting quantum processors, built around the Quil language and quantum-classical virtual machines. Rigetti’s focus on hybrid algorithms makes PyQuil relevant for applications requiring tight integration between classical and quantum processing.

PyTKET (Quantinuum)

PyTKET is Quantinuum’s compiler framework for quantum circuit optimization and hardware compilation across IBM, Google, IonQ, and other backends. it works as a post-compilation optimization layer that improves fidelity on noisy hardware.

QURI SDK (QunaSys)

QURI SDK is an open-source quantum software development kit from QunaSys, a Japanese quantum software company focused on algorithm development for chemistry and materials science. The SDK consists of three components: QURI Parts, a hardware-agnostic building block library for constructing quantum algorithms; QURI VM, a tool for evaluating and simulating algorithm performance across early fault-tolerant quantum computing (EFTQC) architectures including circuit transpilation and resource estimation; and QURI Algo, a library for platform-independent algorithm development prepackaged with early FTQC algorithms.

The SDK is designed for use by HPC centers and research institutions, and sits at a different point in the stack from general-purpose frameworks – it supports NISQ, early FTQC, and full FTQC development, with particular emphasis on teams working toward fault-tolerant quantum computing.


Tags: language   concept   quantum  

Last modified 11 September 2026