Людям, интересующимся областью квантовых вычислений и квантовых компьютеров, хорошо известно, что основой таких компьютеров являются квантовые биты, кубиты, которые, в отличие от битов традиционных компьютеров, могут принимать значение логической единицы и логического нуля одновременно. Такая особенность позволяет квантовому компьютеру одновременно производить две или большее количество вычислительных операций. Но программирование компьютерных алгоритмов, которые с максимальной эффективностью используют квантовый параллелизм, является достаточно сложной задачей, которая до последнего времени выполнялась на самом низком уровне с помощью элементарных инструкций программирования квантовых логических элементов, состоящих из кубитов.
Теперь, область разработки программного обеспечения для квантовых вычислительных систем перешла на совершенно новый, качественно иной, уровень. Толчком к этому послужило создание первого языка программирования высокого уровня, языка, получившего название Quipper. Несмотря на то, что на свете еще не существует реальных полноценных квантовых компьютеров, наличие языка программирования может стать толчком к их скорому появлению и стать
фактором, определяющим архитектуру этих будущих компьютеров.
Честь создания первого квантового языка программирования высокого уровня Quipper принадлежит Петеру Зелингеру (Peter Selinger) и его команде из университета Дэлхоузи в Галифаксе, Канада. Язык Quipper разработан для того, чтобы программисты имели возможность выразить общие понятия, действия и концепции, не вникая в низкоуровневые инструкции и операции. Это позволит без особых затруднений создавать библиотеки квантовых программ, объединять различные алгоритмы в единое целое модульным способом. Самым ближайшим аналогом языка Quipper, работающим на обычных компьютерах, является язык программирования Java, который берет на себя выполнение всех низкоуровневых операций.
Основой языка Quipper является классический язык программирования Haskell, который как нельзя лучше подходит для создания алгоритмов математических моделей и расчетов из области прикладной и теоретической физики. Те изменения, которым команда Зелингер подвергла оригинальный язык программирования, должны оптимизировать набор получаемых конечных низкоуровневых инструкций для обработки их квантовыми битами.
Разработчики языка Quipper создали библиотеку кода, которая реализует семь существующих квантовых алгоритмов, включая алгоритм расчета энергии стандартного состояния молекул. Они надеются на то, что другие программисты и коллективы программистов в будущем добавят в библиотеку свои собственные алгоритмы, создавая все вместе ресурс, позволяющий создавать программы для квантовых компьютеров столь же легко, как и обычные программисты создают программы на Яве.
Команда Зелингера предоставила всеобщему вниманию структуру языка Quipper вместе с разработанными библиотеками на Конференции по разработке и реализации языков программирования (the Programming Language Design and Implementation conference), которая проходила в Сиэтле в прошлом месяце. Создание языка Quipper производилось в рамках программы, финансируемой IARPA (US Intelligence Advanced Research Projects Agency), Управления перспективных исследований разведки США, специалисты которого поставили перед собой цель определить минимальное количество кубитов, которыми должен обладать квантовый компьютер для эффективного решения определенного круга задач.
К сожалению, разработанный язык программирования Quipper не может использоваться для написания программ к
единственному виду квантовых компьютеров, существующих в настоящее время,
компьютеров компании D-Wave, которые используют метод, называемый адиабатными квантовыми вычислениями, делающий его несовместимым с квантовыми вычислительными системами в их традиционном понимании.