Quantenprogrammiersprache Silq

Die erste intuitive Programmiersprache für Quantencomputer

Uhr
von Florian Meyer, ETH Zürich

Auf dem Weg zu leistungsfähigen Quantencomputern sind in jüngster Zeit einige technische Fortschritte erzielt worden. Nun haben Informatiker der ETH Zürich im Bereich der Programmierung einen wichtigen Durchbruch erzielt: Ihre Quantenprogrammiersprache ist die erste, die so elegant, einfach und sicher ist wie man das von klassischen Computersprachen kennt.

ETH-​Informatiker haben die erste Programmiersprache für Quantencomputer formuliert, die auch komplexe Rechenaufgaben einfach und sicher lösen kann. (Source: D-PHYS/ETH Zürich/Heidi Hostettler)
ETH-​Informatiker haben die erste Programmiersprache für Quantencomputer formuliert, die auch komplexe Rechenaufgaben einfach und sicher lösen kann. (Source: D-PHYS/ETH Zürich/Heidi Hostettler)

Das Programmieren von Quantencomputern wird einfacher: Computerwissenschaftler der ETH Zürich haben die erste Programmiersprache entworfen, mit der man Quantencomputer ähnlich einfach, zuverlässig und fehlerfrei programmieren kann wie klassische Computer. "Die Programmierung von Quantencomputern ist bis heute eine Herausforderung für die Forschung", sagt ETH-​Informatikprofessor Martin Vechev vom Secure, Reliable and Intelligent Systems Lab (SRI), "umso mehr freut es mich, dass wir nun die Tradition der ETH Zürich in der Entwicklung von Quantencomputern und Programmiersprachen fortsetzen können."

"Unsere Quantenprogrammiersprache Silq erlaubt es Programmierenden, die Potenziale der Quantencomputer besser zu nutzen als mit bisherigen Sprachen, da ihre Codes kürzer, schneller und für Programmierende intuitiver und leichter zu verstehen sind", erläutert Vechev weiter. An der An der Programmiersprachenkonferenz PLDI 2020 wird er Silq in dieser Woche der Fachwelt vorstellen. Um die Diskussion, Nutzung und Weiterentwicklung zu ermöglichen, haben sein Team und er Silq zudem auf einer eigenen Webseite veröffentlicht.

Quantencomputer haben in den letzten zehn Jahren zunehmend an Aufmerksamkeit gewonnen. Schliesslich bergen diese Computer, die nach den Regeln der Quantenphysik funktionieren, ein enormes Potenzial. Die meisten Forschenden sind heute überzeugt, dass sie gewisse Probleme dereinst schneller lösen können als klassische Computer, da sie für ihre Berechnungen verschränkte Quantenzustände nutzen, bei denen sich zu einem bestimmten Zeitpunkt verschiedene Informationen überlagern. Dadurch dürften Quantencomputer in Zukunft auch Probleme effizient lösen, die klassische Rechner nicht innert nützlicher Frist berechnen können.

Diese Quantenüberlegenheit ist noch nicht abschliessend bewiesen. In jüngster Zeit sind jedoch wichtige technische Fortschritte erzielt worden:  So konnte im Spätsommer 2019 erstmals ein Quantencomputer eine – wenn auch sehr spezifische – Aufgabe schneller lösen als die schnellsten klassischen Computer.

Für gewisse "Quantenalgorithmen", also Berechnungsstrategien, ist zudem bekannt, dass sie schneller sind als klassische Algorithmen, die das Potenzial von Quantencomputern nicht ausnutzen. Bis heute lassen sich diese Algorithmen jedoch noch nicht auf bestehender Quantenhardware rechnen, da Quantencomputer aktuell noch zu fehleranfällig sind.

Wie Programmierende denken

Das Potenzial der Quantencomputer wirklich auszuschöpfen, erfordert nicht nur die neueste Technologie, sondern auch eine Quantenprogrammiersprache, um die Quantenalgorithmen zu beschreiben. Grundsätzlich stellt ein Algorithmus ein "Rezept" dar, um ein Problem zu lösen, und eine Programmiersprache beschreibt den Algorithmus so, dass ein Computer die benötigten Berechnungen ausführen kann.

Heute sind Quantenprogrammiersprachen stark an die Hardware angelehnt, das heisst sie beschreiben genau das Verhalten der zugrundeliegenden Schaltkreise. Für Programmiererinnen und Programmierer sind solche "Hardwarebeschreibungssprachen" umständlich und fehleranfällig, da man die einzelnen Programmanweisungen sehr detailliert ausformulieren und entsprechend viele Einzelheiten der Implementierung von Quantenalgorithmen explizit ausdrücken muss.

Martin Vechev, Professor für Informatik. (Source: ethz.ch)

An dieser Stelle setzen Martin Vechev und seine Gruppe mit der Programmiersprache Silq an. "Silq ist die erste Quantenprogrammiersprache, die sich nicht primär an der Bau-​ und Funktionsweise der Hardware orientiert, sondern an der Denkweise der Programmierenden, die ein Problem lösen wollen und dafür nicht jedes Detail der Rechnerarchitektur und der Implementierung verstehen müssen", sagt Benjamin Bichsel, Doktorand in Vechevs Gruppe, der die Entwicklung von Silq betreut.

Computersprachen, die von den technischen Details des jeweiligen Computertyps abstrahieren, bezeichnen Informatikerinnen und Informatiker als höhere Programmiersprachen. Für Quantencomputer ist Silq die erste höhere Programmiersprache überhaupt. Höhere Programmiersprachen sind ausdruckstärker, das heisst sie können auch komplexe Aufgaben und Algorithmen mit weniger Text (Code) ausdrücken. Das macht sie für Programmiererinnen und Programmierer verständlicher und einfacher in der Verwendung. Zudem kann man sie auf verschiedene Rechnerarchitekturen anwenden.

Fehlerfrei dank automatischer Müllabfuhr

Die wichtigste Neuerung und Erleichterung, die Silq für Quantenprogrammiersprachen einführt, betrifft eine Fehlerquelle, die das Quantenprogrammieren bisher erschwerte: Jeder Computer berechnet eine Aufgabe in mehreren Zwischenschritten. Dabei entstehen Zwischenergebnisse, so genannte temporäre Werte. Um den Arbeitsspeicher zu entlasten, werden diese Werte bei klassischen Computern automatisch entfernt.

Informatikerinnen und Informatiker sprechen hier von "Garbage Collection" oder von "Müllabfuhr", weil die überflüssigen Zwischenwerte entsorgt werden. Bei Quantencomputern ist diese Entsorgung wegen der Quantenverschränkung nicht so einfach: Die früheren Rechenwerte können mit den aktuellen wechselwirken und die korrekte Berechnung stören. Entsprechend erfordert die Bereinigung solcher temporärer Werte auf Quantencomputern eine fortgeschrittene Technik, die in der Fachsprache "uncomputation" genannt wird.

"Silq ist die erste Quantenprogrammiersprache, die nicht mehr benötigte Werte automatisch erkennt und entsorgt", erklärt Bichsel. Dafür nutzten die Informatikerinnen und Informatiker ihr Know-​how der klassischen Programmiersprachen. Ihre automatische Müllabfuhr, beziehungsweise ihre Methode, wie sie die "uncomputation" ausführen, verwendet nämlich nur Programmierbefehle, die frei sind von speziellen Quantenoperationen – sie ist "qfree", wie Vechev und Bichsel sagen.

"Silq ist ein wichtiger Durchbruch auf dem Weg zu einer optimalen Programmierung von Quantencomputern, der letzte Entwicklungsschritt ist sie nicht", sagt Vechev. Noch gibt es viele offene Fragen. Dadurch, dass "Silq" verständlicher ist, erhoffen sich Vechev und Bichsel sowohl Impulse für die Weiterentwicklung der Quantenprogrammiersprachen als auch für die Lehre und die Entwicklung neuer Quantenalgorithmen.

"Unser Viererteam hat den Durchbruch nach zwei Jahren Arbeit dank der Kombination verschiedener Expertisen in Sprachdesign, Quantenphysik und Implementierung geschafft. Wenn nun andere Forschungs-​ und Entwicklungsteams unsere Neuerungen aufgriffen, wäre das ein schöner Erfolg", schliesst Bichsel.

Literaturverweis

Bichsel B, Baader M, Gehr T, Vechev M. Silq: a high-​level quantum language with safe uncomputation and intuitive semantics. PLDI 2020: Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2020, Pages 286–300. DOI: 10.1145/3385412.3386007

Dieser Beitrag ist zuerst auf ETH-News erschienen.

Webcode
DPF8_182359