Q Sharp

Q# (Q Sharp) — предметно-ориентированный язык, используемый для выражения квантовых алгоритмов. Впервые был представлен в составе Quantum Development Kit[4][5].

Q#
Изображение логотипа
Класс языкаязык квантового программирования[вд], язык функционального программирования и императивный
Появился в11 декабря 2017[2]
АвторMicrosoft Research
РазработчикMicrosoft Quantum Architectures and Computation group[вд] и Майкрософт
Расширение файлов.qs
Выпуск
Система типовстатическая, сильная
Испытал влияниеC# и F#
Лицензиялицензия MIT[3]
Сайтdocs.microsoft.com/en-us…
ПлатформаCommon Language Infrastructure
Логотип Викисклада Медиафайлы на Викискладе

История

Во время конференции Microsoft Ignite[англ.] 26 сентября 2017, Microsoft анонсировала релиз нового языка программирования, направленного на квантовые технологии.[4] 11 декабря язык был представлен официально в составе Quantum Development Kit. В марте 2018 появилась научная статья, в которой описывается применение языка к решению проблемы скрытого шифта.[6]

Использование

Q# возможен для использования только как отдельно загружаемое расширение для Visual Studio.[7] Quantum Development Kit поставляется вместе с квантовым симулятором, на котором может запуститься Q#.

Для вызова квантового симулятора используется другой .NET Framework, который отдаёт входные (классические) данные в симулятор и забирает выходные (классические) данные из него.

Возможности

Базовая возможность языка: создание и использование кубитов для алгоритмов. Как следствие — одна из наиболее характерных особенностей Q# — возможность запутываться и создавать квантовую суперпозицию между кубитами через вентили CNOT и Адамара (H), соответственно.

В Q# кубиты создаются топологически[англ.].

В пакет Quantum Development Kit входит квантовый симулятор, способный обрабатывать до 27 кубитов локально и от 32 до 40 кубитов в облаке Azure.

Синтаксис

Q# синтаксически похож на C# и F#, с некоторыми отличиями.

  • функции определяются словом function;
  • операторы для работы над квантами определяются словом operation;
  • отсутствуют многострочные комментарии;
  • использование проверок вместо обработки ошибок;
  • документация пишется в Markdown.

Примечания

Ссылки