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