Эта статья может чрезмерно полагаться на источники, слишком тесно связанные с предметом , что потенциально может помешать проверке и нейтральности статьи . ( Сентябрь 2018 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Парадигма | мультипарадигма : квантовая , функциональная , императивная |
---|---|
Разработано | Microsoft Research (группа квантовых архитектур и вычислений; QuArC) |
Разработчик | Microsoft |
Впервые появился | 11 декабря 2017 |
Печатная дисциплина | статичный , сильный |
Платформа | Общая языковая инфраструктура |
Лицензия | Лицензия MIT |
Расширения имени файла | .qs |
Интернет сайт | Microsoft Quantum ( GitHub ) |
Под влиянием | |
C # , F # |
Q # (произносится как Q Sharp ) - это предметно-ориентированный язык программирования, используемый для выражения квантовых алгоритмов . [1] Первоначально он был выпущен для широкой публики Microsoft как часть Quantum Development Kit. [2]
История [ править ]
Во время Microsoft Ignite Keynote 26 сентября 2017 года Microsoft объявила, что собирается выпустить новый язык программирования, специально предназначенный для квантовых компьютеров. [3] 11 декабря 2017 года Microsoft выпустила Q # как часть Quantum Development Kit. [2]
На Build 2019 Microsoft объявила об открытии исходного кода Quantum Development Kit, включая его компиляторы и симуляторы Q #. [4]
Использование [ править ]
Q # доступен как отдельно загруженного расширения для Visual Studio , [5] , но он также может работать в качестве самостоятельного инструмента из командной строки и / или Visual Studio кодекса. Quantum Development Kit поставляется с квантовым симулятором, способным запускать Q #.
Для вызова квантового симулятора используется другой язык программирования .NET , обычно C # , который предоставляет (классические) входные данные для симулятора и считывает (классические) выходные данные симулятора.
Особенности [ править ]
Основная особенность Q # - это возможность создавать и использовать кубиты для алгоритмов. Как следствие, некоторые из наиболее характерных особенностей Q # являются способность Entangle и ввести superpositioning в кубитов через Controlled NOT ворот и Адамара ворот , соответственно, а также Toffoli Gates , Pauli X, Y, Z Gate , и многое другое которые используются для самых разных операций; см. список в статье о квантовых логических вентилях .
Ожидается, что аппаратный стек, который в конечном итоге появится вместе с Q #, будет реализовывать кубиты как топологические кубиты . Квантовый симулятор, который сегодня поставляется с Quantum Development Kit, способен обрабатывать до 32 кубитов на пользовательской машине и до 40 кубитов в Azure .
Документация и ресурсы [ править ]
В настоящее время ресурсов, доступных для Q #, мало, но опубликована официальная документация: Microsoft Developer Network: Q # . Репозиторий Microsoft Quantum Github также представляет собой большой набор примеров программ, реализующих различные алгоритмы Quantum и их тесты.
Microsoft также провела здесь конкурс квантового кодирования на Codeforces : Microsoft Q # Coding Contest - Codeforces , а также предоставила соответствующие материалы, чтобы помочь ответить на вопросы в сообщениях в блогах, а также подробные решения в руководствах.
Microsoft размещает на github набор обучающих упражнений, которые помогут изучить Q #: microsoft / QuantumKatas со ссылками на ресурсы и ответами на проблемы.
Синтаксис [ править ]
Q # синтаксически связан как с C #, так и с F #, но также имеет некоторые существенные различия.
Сходства с C # [ править ]
- Использование
namespace
для изоляции кода - Все утверждения заканчиваются
;
- Фигурные скобки используются для обозначения области действия
- Однострочные комментарии выполняются с использованием
//
- Типы переменных данных, такие как
Int
Double
String
иBool
аналогичны, хотя и пишутся с заглавной буквы (а Int является 64-битным) [6] - Кубиты размещаются внутри
using
блока. - Лямбда-функции с использованием
=>
оператора. - Результаты возвращаются с использованием
return
ключевого слова.
Сходства с F # [ править ]
- Переменные объявляются с использованием либо
let
илиmutable
[1] - Функции первого порядка
- Модули, которые импортируются с использованием
open
ключевого слова - Тип данных объявляется после имени переменной.
- Оператор диапазона
..
for … in
петли- Каждая операция / функция имеет возвращаемое значение, а не
void
. Вместо этого возвращаетсяvoid
пустой кортеж()
. - Определение типов данных записи (с использованием
newtype
ключевого слова вместоtype
).
Различия [ править ]
- Функции объявляются с использованием
function
ключевого слова - Операции на квантовом компьютере объявляются с помощью
operation
ключевого слова - Отсутствие многострочных комментариев
- Утверждает вместо исключения исключений
- Документация написана на Markdown вместо тегов документации на основе XML.
Ссылки [ править ]
- ^ a b QuantumWriter. "Язык программирования Q #" . docs.microsoft.com . Проверено 11 декабря 2017 .
- ^ a b «Представляем Microsoft Quantum Development Kit» . Проверено 11 декабря 2017 .
- ^ «Microsoft объявляет о языке программирования квантовых вычислений» . Проверено 14 декабря 2017 .
- ^ Microsoft открывает исходный код своего Quantum Development Kit
- ^ QuantumWriter. «Настройка среды разработки Q #» . docs.microsoft.com . Проверено 14 декабря 2017 .
- ^ «Типы в Q # - Microsoft Quantum» . docs.microsoft.com .
Внешние ссылки [ править ]
- Официальная документация
- qsharp-language на GitHub