Q Sharp

Правильна назва цієї сторінки — Q#, але її не можна використовувати через технічні обмеження.
Q#
Парадигма функційне програмування і імперативне програмування
Дата появи 11 грудня 2017[1]
Творці Microsoft Research
Розробник Microsoft
Останній реліз 99045 (11 листопада 2019)[2]
Система типізації статична і строга типізація
Під впливом від C#
Платформа Common Language Infrastructured
Ліцензія MIT[3]
Звичайні розширення файлів .qs
Репозиторій вихідного коду github.com/Microsoft/Quantum
Вебсайт docs.microsoft.com/en-us/quantum/quantum-qr-intro

Q# (читається як Q sharp) — це предметно-орієнтована мова програмування, яка застосовується для запису квантових алгоритмів.[4] Вона уперше оприлюднена компанією Microsoft як частина Набору інструментів для квантової розробки (Quantum Development Kit).[5]

Історія

Під час конференції Ignite, яка відбулася 26 вересня 2017 року, Microsoft оголосила, що вона планує випустити нову мову програмування, спеціалізовану для використання у квантових компʼютерах.[6] 11 грудня 2017 року Microsoft випустила Q# у складі Quantum Development Kit.

Використання

Q# є доступним лише у вигляді окремо звантажуваного розширення до Visual Studio.[7] Набір Quantum Development Kit постачається у наборі з квантовим симулятором, який здатен виконувати програми, написані на Q#. Для активізації ж квантового симулятора треба використовувати «оболонкову» програму на будь-якій іншій мові програмування сімейства .NET .

Можливості

Основною можливістю Q# є здатність створювати кубіти і використовувати їх в алгоритмах. Як наслідок, однією з найцікавіших можливостей мови Q# є здатність сплутувати та створювати суперпозицію кубітів за допомогою вентилів контрольованого заперечення та вентилів Адамара, відповідно.

У мові Q# кубіти виконані у вигляді  топологічних кубітів.

Квантовий симулятор, який постачається у Quantum Development Kit, здатний створювати до 32 кубітів на локальній машині або 40 кубітів на Azure.

Синтаксис

Q# синтаксично схожий на C#, щоправда має деякі суттєві відмінності.

Спільні риси

  • Використовує namespace для ізоляції коду
  • Усі інструкції закінчуються символом ;
  • Фігурні дужки використовуються для межі видимості інструкцій
  • Однорядкові коментарі робляться за допомогою //
  • Типи даних, такі як int double string та bool.

Розбіжності

  • Змінні декларуються за допомогою let або mutable
  • Функції декларуються за допомогою  operation або function
  • Відсутні багаторядкові коментарі

Посилання

  1. The future is quantum: Microsoft releases free preview of Quantum Development Kit — 2017.
  2. Release 99045 — 2019.
  3. https://api.github.com/repos/Microsoft/Quantum
  4. QuantumWriter. Intent and product brand in a unique string of 43-59 chars including spaces. docs.microsoft.com (en-us) . Архів оригіналу за 2 липня 2018. Процитовано 11 грудня 2017.
  5. Announcing the Microsoft Quantum Development Kit (амер.). Архів оригіналу за 11 грудня 2017. Процитовано 11 грудня 2017.
  6. Microsoft announces quantum computing programming language (амер.). Архів оригіналу за 14 грудня 2017. Процитовано 14 грудня 2017.
  7. QuantumWriter. Setting up the Q# development environment. docs.microsoft.com (en-us) . Архів оригіналу за 14 грудня 2017. Процитовано 14 грудня 2017.
Мова програмування Це незавершена стаття про мови програмування.
Ви можете допомогти проєкту, виправивши або дописавши її.
  • п
  • о
  • р
Низькорівневі
Високорівневі
Загального
призначення
Серверні
Запитів до баз
даних[суперечливо 1]
Розмітки та векторної
графіки[суперечливо 1]
Синхронні[en]
  • Lustre[en]
Символьних та
чисельних обчислень
Квантових обчислень
Логічні
  • Mercury[en]
  • Prolog
Академічні
Езотеричні
  1. а б Немає загальноприйнятого рішення, чи вважати усі ці мови саме мовами програмування
  • п
  • о
  • р
Основи
Передача інформації
Квантовий канал[en] (Квантова пропускна здатність[en] · Класична пропускна здатність[en] · Класична пропускна здатність із переплутаністю[en]) · Квантова криптографія (Квантове розповсюдження ключа · BB84 · E91 · BB92 · SARG04 · Триетапний протокол квантової криптографії[en]) · Квантова телепортація · Надщільне кодування[en] · ЛОКК-перетворення · Очищення переплутаності
Квантові алгоритми
Алгоритм Грувера · Алгоритм Дойча — Йожи · Алгоритм Шора · Задача Саймона · Задача Фейнмана · Алгоритм оцінки фази · Квантове перетворення Фур'є · Квантове відпалювання · Алгоритмічне охолодження
Складність квантових обчислень
Моделі квантових обчислень
Квантова схема (Квантовий вентиль · CNOT · Вентиль Тоффолі · Вентиль Фредкіна) · Однобічний квантовий комп'ютер (Кластерний стан) · Адіабатичні квантові обчислення · Топологічний квантовий комп'ютер
Проблема декогеренції
Квантова корекція помилок · Симплектичний код · Квантова корекція помилок із переплутаністю · Квантовий згортальний код
Програмування
Q# · QCL · libquantum[en] · OpenQASM · Qiskit · IBM Q Experience
Фізичні реалізації
Квантова оптика
Квантова електродинаміка в оптичних резонаторах[en] · Лінійний оптичний квантовий комп'ютер · Бозонний семплінг · Протокол KLM · Квантова електродинаміка в схемах[en]
Надхолодні атоми
Квантовий комп'ютер на йонних пастках[en] · Оптична ґратка[en]
Спіновий квантовий комп'ютер
Квантовий ЯМР-комп'ютер[en] · Квантовий комп'ютер Кейна[en] · Квантовий комп'ютер Лосса — Ді Вінченцо[en] · Азотно-заміщена вакансія · Електрон на гелії[en]
Надпровідний квантовий комп'ютер[en]
Зарядовий кубіт[en] · Потоковий кубіт[en] · Фазовий кубіт[en] · Трансмон
Відомі науковці
Беннетт · Брассар · Вайнленд · Ґровер · Дойч · Екерт · Кітаєв · Лафламм · Ллойд · Прескілл · Сірак · Фейнман · Холево · Цайлінґер · Шор