Квантовые вычисления. В отличие от традиционных компьютеров, использующих биты, квантовые компьютеры используют кубиты для кодирования информации в виде нулей, единиц или того и другого одновременно. В сочетании с коктейлем сил квантовой физики эти машины размером с тумбочку могут обрабатывать огромное количество информации, но они далеко не безупречны. Как и нашим обычным компьютерам, нам нужны правильные языки программирования для правильных вычислений на квантовых компьютерах.

Программирование квантовых компьютеров требует понимания чего-то, называемого "запутанностью", своего рода вычислительного множителя для кубитов, что приводит к большой мощности. Когда два кубита запутаны, действия над одним кубитом могут изменить значение другого, даже если они физически разделены, что приводит к характеристике Эйнштейна призрачного действия на расстоянии. Но эта сила в равной степени является источником слабости. При программировании отказ от одного кубита без учета его запутанности с другим кубитом может уничтожить данные, хранящиеся в другом, что поставит под угрозу правильность программы.

Ученые из Массачусетского технологического института по компьютерным наукам и искусственному интеллекту (CSAIL) стремились разобраться в этом, создав собственный язык программирования для квантовых вычислений под названием Twist. Twist может описать и проверить, какие фрагменты данных запутаны в квантовой программе, с помощью языка, понятного рядовому программисту. В языке используется концепция чистоты, которая обеспечивает отсутствие запутанности и приводит к более интуитивным программам с в идеале меньшим количеством ошибок. Например, программист может использовать Twist, чтобы сказать, что временные данные, сгенерированные программой как мусор, не связаны с ответом программы, что позволяет безопасно их выбрасывать.

Как работает новый язык?

Представьте себе деревянный ящик, из которого с одной стороны торчит тысяча кабелей. Вы можете полностью вытащить любой кабель из коробки или полностью вставить его.

После того, как вы проделаете это какое-то время, кабели образуют набор битов — нулей и единиц — в зависимости от того, вставлены они или нет. Эта коробка представляет собой память классического компьютера. Программа для этого компьютера представляет собой последовательность инструкций о том, когда и как тянуть за кабели.

Теперь представьте себе вторую, точно такую ​​же коробку. На этот раз вы дергаете кабель и видите, что, когда он появляется, пара других кабелей протягивается внутрь. Понятно, что внутри коробки эти кабели как-то перепутаны друг с другом.

Второй блок представляет собой аналогию квантового компьютера, и для понимания смысла квантовой программы необходимо понимать запутанность, присутствующую в ее данных. Но обнаружить запутанность не так-то просто. Вы не можете заглянуть внутрь деревянного ящика, поэтому лучшее, что вы можете сделать, это попытаться потянуть за кабели и тщательно проанализировать, какие из них запутались. Точно так же квантовым программистам сегодня приходится вручную рассуждать о запутанности. Именно здесь дизайн Twist помогает массировать некоторые из этих переплетенных частей.

Ученые разработали Twist так, чтобы он был достаточно выразительным, чтобы писать программы для известных квантовых алгоритмов и выявлять ошибки в их реализации. Чтобы оценить дизайн Twist, они модифицировали программы, чтобы ввести какую-то ошибку, которую программист мог бы относительно незаметно обнаружить, и показали, что Twist может автоматически идентифицировать ошибки и отклонять программы.

Они также измерили, насколько хорошо программы работали на практике с точки зрения времени выполнения, которое имело накладные расходы менее 4 процентов по сравнению с существующими методами квантового программирования.

Для тех, кто настороженно относится к спорной репутации квантовых компьютеров из-за их способности взламывать системы шифрования, Юань говорит, что до сих пор не очень хорошо известно, в какой степени квантовые компьютеры на самом деле смогут достичь своих обещаний производительности на практике. «В постквантовой криптографии проводится много исследований, которые существуют потому, что даже квантовые вычисления не всемогущи. На данный момент существует очень специфический набор приложений, в которых люди разработали алгоритмы и методы, в которых квантовый компьютер может превзойти классические компьютеры».

Важным следующим шагом является использование Twist для создания квантовых языков программирования более высокого уровня. Большинство квантовых языков программирования сегодня по-прежнему напоминают язык ассемблера, объединяя низкоуровневые операции, не обращая внимания на такие вещи, как типы данных и функции, а также на то, что типично для классической разработки программного обеспечения.