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.
Dieser Artikel stellt Guppy vor, eine in Python eingebettete domänenspezifische Sprache (DSL), die es Benutzern ermöglicht, mit Pythonic-Syntax hochwertige hybride Quantenprogramme mit komplexem Kontrollfluss zu schreiben, mit dem Ziel, diese Programme auf echter Quantenhardware auszuführen.
Dominanz von Python in der Quantencomputing-Forschung: Nach aktuellen Umfragen verwenden über 90% der Quantencomputing-Forscher und Praktiker Python, aber bestehende Frameworks sind auf Schaltkreis-Abstraktionen beschränkt und bieten begrenzte Unterstützung für hochwertige Kontrollflüsse.
Anforderungen für Echtzeit-Quanten-Klassische Berechnung: Algorithmen wie Repeat-Until-Success-Protokolle erfordern Echtzeit-klassische Datenverarbeitung basierend auf Quantenmessergebnissen. Diese Anforderung wird mit der Entwicklung der nächsten Generation von Quantengeräten weiter wachsen.
Einschränkungen bestehender Ansätze:
Die meisten Python-Frameworks konstruieren Quantenprogramm-Darstellungen durch Verfolgung des Python-Interpreters und können native Python-Kontrollfluss-Syntax nicht erfassen
Bedingte Anweisungen und Schleifen müssen durch höherwertige Kombinatoren oder andere syntaktische Strukturen ausgedrückt werden
Fehlende lineare Typsysteme zur Verhinderung von Quantenprogrammierungsfehlern
Entwicklung einer Programmiersprache, die sowohl die Vorteile der Python-freundlichen Syntax und des Ökosystems bewahrt als auch komplexe Quanten-Klassische-Hybrid-Berechnungen unterstützt.
Vorschlag der Guppy DSL: Eine in Python eingebettete domänenspezifische Sprache, die Pythonic-Syntax zum Schreiben von Quanten-Klassischen-Hybrid-Programmen unterstützt
Implementierung eines linearen Typsystems: Erfassung von Quantenprogrammierungsfehlern zur Kompilierzeit durch linearen Qubit-Typ (z.B. Verletzung des No-Cloning-Theorems)
Unterstützung komplexer Kontrollflüsse: Native Unterstützung für bedingte Anweisungen, Schleifen und andere Kontrollflussstrukturen basierend auf Messergebnissen
Statische Kompilierung zu Hugr IR: Kompilierung zur neuen Quanten-Zwischendarstellung Hugr, die die Darstellung und Optimierung von Quanten-Klassischen-Programmen unterstützt
Python-Interoperabilität: Nahtlose Integration mit dem Python-Ökosystem durch py(...)-Ausdrücke
Pythonic-Kontrollfluss: Unterstützung für if, for, while, break, continue, return-Anweisungen
Starkes Typsystem: Erforderliche Typannotationen; Variablen müssen in allen Kontrollfluss-Pfaden zugewiesen werden und einen eindeutigen statischen Typ haben
Grundtypen: Unterstützung für bool, int, float, None und entsprechende Operationen
@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
Zusammenfassung: Dies ist ein hochqualitatives Systemarbeit, das ein innovatives Design für Quantenprogrammiersprachen vorschlägt. Obwohl sich das Projekt noch in einem frühen Stadium befindet, zeigt es gutes technisches Potenzial und praktische Aussichten. Es wird empfohlen, dass zukünftige Arbeiten den Schwerpunkt auf großflächige Validierung, Leistungsoptimierung und Verbesserung der Benutzererfahrung legen.