Язык программирования Quipper стал первым официально признанным языком квантового программирования для квантовых компьютеров. Напомним, что квантовые компьютеры уже производятся. Их производят по предварительным заказам для научно-исследовательских лабораторий, где нужно проводить большое количество вычислений с большими данными.
От обычных компьютеров они отличаются высокой производительностью. Например, квантовый компьютер «думает» в тысячи раз быстрее традиционных суперкомпьютеров. Квантовые компьютеры совсем другие. Они по другому принципу строятся и по другим алгоритмам вычисляют. Например, у обычного компьютера есть «биты», которые могут принимать значения либо «0», либо «1», а у квантового компьютера есть «кубиты», которые содержат сразу два значения «0» и «1». Это свойство помогает квантовым компьютерам проводить несколько одновременных параллельных вычислений, чего не может традиционный компьютер. Поэтому квантовые компьютеры «шустрее».
Quipper — язык квантового программирования
Над квантовыми компьютерами работали несколько десятков лет. На сегодня уже ввели в эксплуатацию несколько экземпляров по американским университетам и лабораториям. Им еще очень-очень далеко до персонализации, так как они получаются весьма громоздкими и дорогостоящими. Однако программное обеспечение им нужно уже сейчас.
Традиционные языки программирования тоже можно применять в квантовых вычислениях, но программы на них получаются объемными и сложными. Поэтому было решено создать специальный язык программирования для квантовых вычислений, и таким языком стал Quipper .
Quipper не стал создаваться «с нуля». В его основе лежит традиционный язык программирования Haskell, который был адаптирован для работы с кубитами. Принцип работы, логика, создание экосистемы и т. д. для Quipper были взяты из другого традиционного языка — Java. Помимо самого языка Quipper, была создана еще и библиотека Quipper, куда вошли основные операции квантовых алгоритмов. Библиотека является открытой, и любой программист может дополнять ее другими алгоритмами, чтобы расширить возможности языка Quipper.
Библиотека Quipper пока реализует всего 7 алгоритмов квантовых вычислений:
алгоритм логической формулы Чайлдса;
алгоритм квантового блуждания Чайлдса;
алгоритм численных классов Халлгрена;
алгоритм Уитфилда оценки основного состояния;
алгоритм квантовых линейных систем Харроу;
алгоритм поиска треугольников;
алгоритм Регева и Куперберга для поиска кратчайшего вектора.
Сегодня квантовое программирование выглядит так: мелкие модули, функции, алгоритмы программируют на Java, а Quipper используется в больших концепциях, объединяя все разработанные модули на Java. На «чистом» языке программы пока не пишут, так как он не является еще настолько функциональным. В традиционном программировании Java применяется в высоконагруженных приложениях и легко справляется с поставленными задачами. Поэтому его применение в квантовом программировании более чем оправдано.
Язык программирования Quipper и его особенности
Язык программирования Quipper находится в зачаточном состоянии, хотя на свет появился задолго до того, как был произведен первый квантовый компьютер. Он не сильно востребован и не развивается бешеными темпами, потому что его просто негде использовать. Его применяют в квантовом программировании, однако тип такого программирования не распространен настолько, чтобы дать активный рост этому языку. В тех компаниях, где ведутся разработки квантовых компьютеров для создания программного обеспечения, привлекают java-разработчиков, которые учат Quipper в качестве дополнительного языка. Простыми словами, развивать язык программирования Quipper пока некому, но это не мешает ему обладать определенными особенностями:
он подходит для описания и сборки квантовых схем вычисления;
его синтаксис допускает сочетание процедурного и декларативного программирования;
в нем встроен синтез автоматических квантовых схем;
он поддерживает иерархические квантовые алгоритмы;
в нем присутствуют расширяемые квантовые типы данных;
он позволяет контролировать квантовые вычисления в трех фазах: компиляции, генерации алгоритмов и выполнении алгоритмов;
помимо своей библиотеки Quipper, он поддерживает и другие библиотеки, например: библиотеку квантовой целочисленной арифметики, преобразования Фурье, моделирования псевдоклассических алгоритмов, точной и приблизительной декомпозиции схем и др.
Заключение
Язык программирования Quipper представляет собой язык перспективного программирования, который будет применяться в недалеком будущем. Многие пророчат квантовым компьютерам процветание, потому что они способны выполнять задачи, которые не могут выполнить традиционные компьютеры.
Требования к вычислениям растут год от года. Вместе с требованиями растут характеристики традиционных компьютеров. В ближайшем будущем настанет момент, когда обычный компьютер перестанет справляться, а на замену ему придет квантовый. Квантовому компьютеру нужно будет программное обеспечение — в этот момент и «расцветет» язык программирования Quipper. Когда наступит это самое «ближайшее будущее»? Никто не может предсказать. Возможно, через 30 лет, а возможно, и через 5-10. Скептики говорят, что квантовые компьютеры никогда не заменят традиционные, потому что они очень дорогие и очень большие. Но давайте вспомним историю. Лет 40 назад скептики точно так же говорили о персональных компьютерах и утверждали, что никогда не настанет такой момент, когда компьютер будет в каждом доме. А в наше время «небольшой компьютер» находится в «каждом кармане». Что будет с квантовыми компьютерами? Мы скоро увидим.
Другое