Портнов П.В. - Лауреат Премии им. Матвеева В.А.


диплом скан.jpeg


Разработка языка программирования для квантовых вычислений.

Квантовые вычисления являются современной областью информационных технологий, которая основывается на принципах квантовой механики и возможностях их применения для решения различных задач. Они строятся на модели, в которой единицей информации является кубит — сущность, которая может находиться не только в состояниях логических нуля и единицы, но и в их суперпозиции. Большой интерес квантовые вычисления представляют, в том числе, и для криптографии: уже сейчас, несмотря на ограниченность существующих квантовых вычислительных устройств, разработаны алгоритмы, предназначенные для выполнения на них.
В связи с этим встаёт вопрос создания средств для их описания. В то время как для классических алгоритмов таким инструментом выступают языки программирования общего назначения, квантовые вычисления требуют особого подхода, учитывающего специфику их модели вычислений. Несмотря на существование таких языков (QCL, Quipper, Q# и др.), далеко не все из них прижились в исследовательской сфере, в том числе из-за сложности работы с некоторыми из них. Многие также обладают тем недостатком, что их использование ограничено средой данного языка, то есть отсутствует возможность простым способом подключить их к проекту, написанному на языке программирования высокого уровня, что усложняет их адаптацию среди разработчиков и исследователей.
Работа описывает создание такого языка квантового программирования, который лишён перечисленных недостатков и позволяет описывать квантовые алгоритмы не только как самостоятельные программы, но и как сопрограммы, вызываемые из языков программирования общего назначения. В работе приводятся процессы написания компонентов компилятора: лексического, синтаксического, и семантического анализаторов, оптимизатора, транспилятора и кодогенератора, — обосновывается выбор подхода с использованием промежуточного представления на языке OpenQASM, а также реализуется возможность встраивания программ на этом языке в программы, написанные на языке программирования Rust.
Полученный прототип языка позволяет описывать алгоритмы на надмножестве языка OpenQASM, в том числе осуществляя встраивание этих вычислений в существующие классические программы. Дальнейшие этапы развития проекта включают в себя выделение собственного синтаксиса, а также интеграцию с текстовыми редакторами и средами разработки на основе Language Server Protocol.