Die zentrale Datenstruktur für die abstrakte Quantenprogrammierung ist die »QuantumVariable«. Der Lebenszyklus der »QuantumVariable« wird, neben anderen Aspekten, von der Klasse »QuantumSession« gesteuert, die auch für die Interaktion mit der QPU (Quantum processing unit) zuständig ist. Dank eines ausgeklügelten Systems zur Verwaltung von »QuantumSessions« müssen die Nutzerinnen und Nutzer von Qrisp keine »QuantumSession«-Objekte verwenden und entsprechend Qubits selbst verwalten, sondern können direkt die »QuantumVariable« nutzen.
In vielen Fällen sind aber reine »QuantumVariablen« nicht sehr hilfreich, da sie aufgrund ihrer Allgemeinheit nur wenige fortgeschrittene Datenverarbeitungsmöglichkeiten bieten. Man kann sie sich als abstrakte Basisklasse für spezifischere Datentypen vorstellen.
Qrisp bietet fünf fortgeschrittene Quantum-Datentypen:
- QuantumFloat: Darstellung und Verarbeitung von Zahlen mit beliebiger Genauigkeit
- QuantumModulus: Darstellung und Verarbeitung von modularer Arithmetik
- QuantumBool: Darstellung boolescher Werte
- QuantumChar: Darstellung von Buchstaben und Schrift-zeichen / Characters
- QuantumString: Darstellung von Zeichenketten
»QuantumVariablen« desselben Typs können in der Klasse »QuantumArray« verwaltet werden. Diese Klasse bietet viele praktische und bewährte Funktionen wie »Slicing«, also der einfache Zugriff auf einen bestimmten Teil des Arrays, oder Reshaping, das Anpassen der Größe des Arrays.
Mit dem Konzept der »QuantumEnvironments« ist es möglich, viele der etablierten Methoden der klassischen Programmierung zu nutzen, wie die bedingte Ausführung von Codeblöcken.
Da sich Quantenschaltkreise bei der Implementierung und Forschung zu Quantenalgorithmen etabliert haben, bieten wir mit dem »Circuit-Construction-Modul« eine Möglichkeit zur Konstruktion solcher Quantenschaltkreise. Die Struktur und Benennung der Klassen und Methoden in Qrisp wurden für eine bessere Kompatibilität so weit wie möglich vom bekannten Programmierframework für Quantencomputer »Qiskit« übernommen.
Um eine anwendungsorientierte Algorithmenentwicklung zu gewährleisten, verfügt Qrisp über eine Netzwerkschnittstelle, um Quantenprogramme auf realen (Remote)-Quantenbackends auszuführen. Diese Schnittstelle wurde bereits mit verschiedenen Anbietern wie eleQtron, IQM, AQT und IBM erfolgreich getestet.