Q # -Sprache: So schreiben Sie Quantencode in Visual Studio

Die Zukunft des Computers ist nicht Silizium; Wir sind bereits an den Grenzen des Mooreschen Gesetzes hinsichtlich der Leistung, die wir mit herkömmlichen Transistoren erzielen können. Wir arbeiten auch an viel größeren Problemen, insbesondere in Bezug auf Kryptographie und mathematische Modellierung. Probleme, die selbst auf den größten Supercomputern Tage Rechenzeit erfordern.

Wohin gehen wir von hier aus? Microsoft Research hat wie Google und IBM stark in Quantencomputer investiert. Ein Großteil seiner Forschung befasste sich mit Grundlagenphysik und arbeitete mit Universitäten auf der ganzen Welt zusammen, um effiziente Niedertemperaturumgebungen und stabile Quantencomputerumgebungen zu schaffen. Das Erstellen eines Qubits - des probabilistischen Quantenbits, das im Wesentlichen die Nullen und Einsen eines herkömmlichen Bits ersetzt - ist jedoch nur ein Teil der Geschichte. Was auch benötigt wird, ist eine Möglichkeit, einen Quantencomputer zu programmieren und den probabilistischen Zustand der Qubits zu interpretieren.

Quantencomputer bauen

Die Architektur eines Quantenprogramms ist relativ einfach: Ein herkömmliches Programm erhält Werte aus Benutzereingaben oder aus anderem Code. Diese Werte werden dann an eine Quantenanwendung übergeben, die die Qubits in einem Quantenprozessor unter Verwendung eines von vielen Quantenalgorithmen festlegt, bevor die Ergebnisse an die übergeordnete Anwendung zurückgegeben werden.

Es ist ein Prozess, der dem bei meinem ersten Programmierjob sehr ähnlich ist, bei dem Fortran-Finite-Elemente-Analysecode geschrieben wurde, bei dem ein an einen Supercomputer angeschlossener Vektorprozessor zur Behandlung der Matrixalgebra verwendet wurde. Die Vektorbibliotheken, mit denen ich meine elektromagnetischen 3D-Modelle erstellt und gelöst habe, funktionierten sowohl auf dieser speziellen Hardware als auch auf einem mathematischen Coprozessor in einer Desktop-Workstation, sodass ich meinen Code testen konnte, bevor ich teure Supercomputerzeit verwendete.

Microsoft hat kürzlich sein Quantum Development Kit veröffentlicht, das auf seiner neuen Q # -Sprache basiert. Entwickelt, um vertraute Konstrukte zu verwenden, um Programmanwendungen zu unterstützen, die mit Qubits interagieren, verfolgt es einen ähnlichen Ansatz wie die Arbeit mit Coprozessoren. Es bietet Bibliotheken, die die eigentliche Quantenprogrammierung und -interpretation übernehmen, sodass Sie Code schreiben können, der Qubit-Operationen an die Quantencomputer eines Microsoft weitergibt .

Die Verbindung zwischen der klassischen Welt und der Quantencomputerwelt ist nicht einfach. Erwarten Sie also nicht, dass Q # wie Visual Basic ist. Es ist eher so, als würde man diesen Satz von Fortran-Mathematikbibliotheken verwenden, mit der gleichen zugrunde liegenden Annahme: Sie verstehen die Theorie hinter dem, was Sie tun.

Ein Element des Quantum Development Kit ist ein Quantencomputer-Primer, der Probleme im Zusammenhang mit der Verwendung von Simulatoren untersucht und einen Primer in der linearen Algebra bereitstellt. Wenn Sie in Q # programmieren möchten, ist ein Verständnis der wichtigsten Konzepte der linearen Algebra um Vektoren und Matrizen von entscheidender Bedeutung - insbesondere Eigenwerte und Eigenvektoren, die Schlüsselelemente vieler Quantenalgorithmen sind.

Erste Schritte mit Q #

Das Development Kit wird als Visual Studio-Erweiterung heruntergeladen, sodass Sie es mit allen Versionen der Hauptentwicklungsumgebung von Microsoft verwenden können, einschließlich der kostenlosen Community Edition. Das Installationsprogramm enthält die Q # -Sprache, einen lokalen Quantensimulator und Bibliotheken, die das Einbetten von Q # -Modulen in Ihren .Net-Code unterstützen. Nach der Installation können Sie eine Verbindung zum Q # Github-Repository von Microsoft herstellen, um Beispielcode und zusätzliche Bibliotheken zu klonen und herunterzuladen. Es ist ein schneller Prozess; Das Installationsprogramm benötigt einige Minuten, um es herunterzuladen und auf einem relativ leistungsfähigen Entwicklungs-PC auszuführen. Die Bibliotheken werden auf Nuget gehostet, sodass Sie schnell auf die neuesten Versionen aktualisieren können.

Da ein funktionierender Quantencomputer noch einige Jahre entfernt ist, beschränkt sich das Quantum Development Kit auf die Arbeit mit simulierten Quantencomputern. Die Forschungssysteme von Microsoft haben noch kein funktionierendes topologisches Qubit erstellt, aber die Ergebnisse sind vielversprechend. Bis es veröffentlichte Ergebnisse gibt und Azure seine Quanten-Coprozessoren erhält, können Sie nur mit lokalen und Cloud-gehosteten Simulatoren experimentieren. Da sie sich auf die Verwendung traditioneller Programmiertechniken beschränken, werden sie nicht die gesamte Bandbreite komplexer mathematischer Operationen bewältigen können, die das Quantencomputing verspricht. Aber sie geben ein Gefühl dafür, was eine kleine Anzahl von Qubits kann.

Ein Großteil der Arbeit, die Sie beim Erstellen eines Quantenprogramms leisten müssen, besteht darin, einen Quantencomputer aus Qubit-Transformationen zu konstruieren. Die Q # -Sprache übernimmt den Prozess für Sie, da sie Ausdrücke für viele Quantentorstrukturen sowie gängige Quantenalgorithmen enthält. Die Sprache selbst wird .NET-Entwicklern mit einer Struktur zwischen C # und F # bekannt vorkommen.

Grundlagen der Quantenprogrammierung

Sie werden die meisten Q # -Programme als relativ einfach empfinden, da Sie Arrays von Qubits einrichten und mathematische Transformationen auf sie anwenden. Obwohl das zugrunde liegende Problem komplex ist (oder mit herkömmlichen Rechenressourcen wahrscheinlich viel Rechenzeit in Anspruch nimmt), verlassen Sie sich auf den Quantencomputer, um die Arbeit für Sie zu erledigen, und aufgrund seiner Quantenalgorithmen können Sie eine kleine Anzahl verwenden von verbundenen Qubits, um Ihr Problem zu lösen.

Eine wichtige Sache ist, dass einige Quantensprachen, wie die von DWave in seinen Quantencomputern verwendete, für das Quantenglühen ausgelegt sind, nicht für das in der Quantenhardware von Microsoft verwendete Gate-Modell.

Wo sich die Q # -Sprache von der bekannten unterscheidet, liegt in der Unterstützung von Quantenalgorithmen. Dies beginnt mit Typen: Q # ist eine stark typisierte Sprache, die neue Typen hinzufügt, die Qubits und Gruppen von Qubits darstellen. Ein weiterer wesentlicher Unterschied besteht zwischen Q # -Operationen und -Funktionen. Operationen enthalten Quantenoperationen, während Funktionen nur für klassischen Code gelten, obwohl sie mit den Ergebnissen einer Quantenoperation arbeiten können.

Quantenalgorithmen und Bibliotheken

Q # enthält auch bestimmte Operationstypen, die mit Quantenalgorithmen arbeiten, einschließlich solcher, die die adjungierten Ergebnisse einer Matrix von Qubits berechnen, und andere, die beim Aufbau von Qubit-Schaltungen helfen, die nur ausgelöst werden, wenn die Steuer-Qubits korrekt eingestellt sind.

Es ist wichtig, sich daran zu erinnern, dass Q #, wenn Null und Eins in Ergebnissen als Variablen für die Behandlung von Qubits verwendet werden, nicht mit binären 0 und 1 identisch sind. Stattdessen sind sie Darstellungen der Eigenwerte der in den Qubits gespeicherten Vektoren.

Sie verwenden die Q # -Standardbibliotheken, um Ihre Quantenanwendungen zu erstellen und zu erstellen. Dazu gehören eine Reihe von Quantenprimitiven, die die Gates definieren, die Sie aus Ihren Qubits erstellen, sowie die Anwendung von Quantenoperatoren und die Messung der Ergebnisse. Die Bibliotheken sind in zwei Teile unterteilt: den Auftakt zum Einrichten Ihres Quantencomputers und den Kanon zum Bedienen der Maschine. Es ist wichtig, die Unterschiede zwischen diesen beiden Teilen der Bibliotheken zu verstehen, da sie in Ihrem Code getrennt bleiben müssen. Unter Verwendung der Canon-Operatoren wird die Quantenmaschine mit Operatoren ausgeführt, die bestimmte Quantenalgorithmen handhaben. Beispiel: Anwenden einer Quanten-Fourier-Transformation oder Finden gemeinsamer Teiler zweier Zahlen.

Q # ist keine Sprache für Anfänger. Obwohl es einige Quantenoperationen vereinfacht, hängt es davon ab, dass Sie wissen, wie ein Quantencomputer funktioniert, und die Grundlagen der Quantenberechnung verstehen. Wenn Sie mit linearer Algebra und Wahrscheinlichkeiten gearbeitet haben, haben Sie einen Vorsprung, aber es lohnt sich immer noch, zuerst Zeit mit den Tutorials und Beispielen von Microsoft zu verbringen.