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.
Questo articolo introduce Guppy, un linguaggio specifico di dominio (DSL) integrato in Python, che consente agli utenti di scrivere programmi ibridi quantistico-classici di alto livello con flussi di controllo complessi utilizzando sintassi Pythonica, con l'obiettivo di eseguire questi programmi su hardware quantistico reale.
Predominanza di Python nel calcolo quantistico: Secondo ricerche recenti, oltre il 90% dei ricercatori e professionisti del calcolo quantistico utilizza Python, ma i framework esistenti sono limitati da astrazioni a livello di circuito, con supporto limitato per flussi di controllo di alto livello.
Necessità di Calcolo Quantistico-Classico in Tempo Reale: Algoritmi come i protocolli "repeat-until-success" richiedono elaborazione classica in tempo reale basata sui risultati di misurazione quantistica, una necessità che crescerà ulteriormente con lo sviluppo dei dispositivi quantistici di prossima generazione.
Limitazioni degli Approcci Esistenti:
La maggior parte dei framework Python costruisce rappresentazioni di programmi quantistici tracciando l'interprete Python, non riuscendo a catturare la sintassi nativa dei flussi di controllo Python
Le istruzioni condizionali e i cicli devono essere espressi attraverso combinatori di ordine superiore o altre strutture sintattiche
Mancanza di sistemi di tipo lineare per prevenire errori di programmazione quantistica
Sviluppare un linguaggio di programmazione che mantenga i vantaggi della sintassi Python e dell'ecosistema, supportando al contempo il calcolo ibrido quantistico-classico complesso.
Proposta del DSL Guppy: Un linguaggio specifico di dominio integrato in Python che supporta la sintassi Pythonica per scrivere programmi ibridi quantistico-classici
Implementazione di un Sistema di Tipo Lineare: Attraverso il tipo Qubit lineare, cattura errori di programmazione quantistica in fase di compilazione (come violazioni del teorema di non-clonazione)
Supporto per Flussi di Controllo Complessi: Supporto nativo per istruzioni condizionali, cicli e altri costrutti di flusso di controllo basati su risultati di misurazione
Compilazione Statica a Hugr IR: Compilazione a una nuova rappresentazione intermedia quantistica Hugr, che supporta l'espressione e l'ottimizzazione di programmi quantistico-classici
Interoperabilità Python: Integrazione senza soluzione di continuità con l'ecosistema Python attraverso espressioni py(...)
Flussi di Controllo Pythonici: Supporto per istruzioni if, for, while, break, continue, return
Sistema di Tipo Forte: Richiede annotazioni di tipo, le variabili devono essere assegnate in tutti i percorsi di flusso di controllo con un tipo statico univoco
Tipi Fondamentali: Supporto per bool, int, float, None e operazioni corrispondenti
@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
Teoria del calcolo quantistico (tipi lineari, ottimizzazione di circuiti quantistici)
Sintesi: Questo è un articolo di sistema di alta qualità che propone una progettazione innovativa di linguaggio di programmazione quantistica. Sebbene ancora in fase iniziale, dimostra buon potenziale tecnico e prospettive pratiche. Si consiglia che il lavoro futuro si concentri su verifica su larga scala, ottimizzazione delle prestazioni e miglioramento dell'esperienza utente.