На данный момент существует небольшой набор приложений, использующих алгоритмы и методы квантовых вычислений, а большинство квантовых языков программирования работают только с низкоуровневыми операциями. Но работа с квантовыми компьютерами требует понимания запутанности - явления, при котором результаты измерений кубитов коррелируют. Запутанность может определять правильность алгоритмов и пригодность шаблонов программирования.
В качестве аналогии классическому компьютеру можно привести ящик с множеством кабелей, каждый из которых можно вытащить или вставить обратно. Программа для такого компьютера будет набором инструкций, когда и как вытаскивать эти кабели.
При составлении программы для такой системы необходимо научиться обнаруживать эти спутанные кабели, то есть, иными словами, находить запутанность между кубитами. Пока что квантовым программистам приходится делать это практически вручную.
Детали квантового компьютера Honeywell. Если будут созданы правильно работающие программы, то квантовые компьютеры смогут реализовать потенциал для вычислительных прорывов в классически неразрешимых задачах, например, в криптографии. Изображение: HoneywellНо недавно ученые из Массачусетского технологического института создали новый язык программирования квантовых вычислений под названием Twist. Он способен различать запутанные фрагменты данных в программе и описывать их языком, понятным классическому программисту.
Согласно языку Twist, существует чистое выражение, на оценку которого не влияют результаты измерения кубитов, не задействованные напрямую в вычислениях. Это подразумевает свободу от запутывания с любым другим выражением.
В Twist также есть операторы утверждения чистоты, которые заявляют об отсутствии запутанности на выходе квантовых вентилей. Чтобы надежно контролировать эти утверждения, Twist использует комбинацию статического анализа и проверки во время выполнения.
На языке Twist можно писать программы для известных квантовых алгоритмов (например, алгоритмов Шора или Гровера) и выявлять нарушения в их реализации. Например, ученые модифицировали программы, введя в них ошибку, и показали, что Twist может автоматически распознавать ошибки и отклонять такие программы.
Так, с помощью Twist можно определить, что временные данные, сгенерированные системой, не связаны с ответом, и их можно не учитывать. В целом, этот язык программирования позволяет создавать более безопасные и точные квантовые программы, в которых можно указать, когда кубиты не должны быть запутаны друг с другом. В дальнейшем ученые планируют создать на основе Twist квантовые языки программирования более высокого уровня.