Учи Кванты! → Курс → Кубит и суперпозиция
Квантовое программирование - общие принципы
Квантовое программирование похоже на обычное только внешне: программа — текст, команды идут по порядку, есть кнопка «Выполнить». Но законы под капотом другие: ответ приходит статистикой, в середину программы нельзя подсмотреть, состояние кубита нельзя скопировать. Этот урок настраивает ожидания — пройдите его по шагам, прежде чем знакомиться с кубитом.
Квантовое программирование совсем не похоже не обычное! Но это все равно программирование:)
Перед вами курс программирования — с редактором кода, запуском программ и результатами. Многое будет выглядеть привычно: программа — это текст, команды выполняются по порядку, есть кнопка «Выполнить».
Но за знакомой обёрткой прячется совсем другой мир. Квантовая программа работает не с байтами в памяти, а с состоянием квантовой системы, и у этого мира свои законы — местами очень неожиданные для программиста. В таблице перед вами пять главных отличий. Пройдём по ним по очереди.
Дважды два - не всегда четыре. Особенно если попробовали только один раз.
В обычной программе дважды два — всегда четыре: сколько ни запускай, ответ один и тот же. Квантовая программа устроена иначе: результат одного запуска случаен. Это не ошибка и не недоработка железа — случайность заложена в самих законах квантовой механики.
Поэтому квантовые программы запускают не один раз, а сотнями и тысячами, — такие повторы мы будем называть прогонами. Ответ — это картина целиком: какие исходы выпадают и как часто. Звучит непривычно, но скоро вы увидите, что этим можно прекрасно пользоваться: хорошая квантовая программа устроена так, что нужный ответ выпадает почти всегда.
Остановить программу в середине и посмотреть значения переменных - невозможно!
Обычный программист живёт с отладчиком: остановил программу в любом месте, посмотрел значения переменных, пошёл дальше. В квантовой программе так не получится — и это не техническое ограничение, а закон природы.
Единственный способ узнать что-то о кубите — измерить его. Но измерение — не подглядывание: оно меняет то, что измеряет. Заглянули в середину вычисления — и разрушили то самое состояние, которое программа старательно готовила. Поэтому квантовая программа работает «вслепую»: всё вычисление идёт без единого взгляда внутрь, и только в самом конце — измерение и ответ.
Присвоить нельзя: b = a не существует
Вот что удивляет программистов сильнее всего. Самая базовая операция любого языка — присваивание: b = a, и теперь у вас две копии значения. В квантовом мире этой операции нет. Состояние кубита невозможно скопировать — ни быстро, ни медленно, ни хитрой последовательностью команд. Это доказанный закон природы, его называют запретом клонирования.
При этом обменять состояния двух кубитов местами — можно. Перенести состояние с одного кубита на другой, разрушив оригинал, — тоже можно. А вот получить две копии — нет. Дальше в курсе мы увидим, как много из этого следует: от защиты квантовой связи до устройства квантовой коррекции ошибок.
Кручу, верчу, запутать хочу. Это прямо про нас!
Из чего же тогда состоит квантовая программа, если в ней нет присваиваний? Из гейтов — элементарных операций над кубитами. Каждый гейт что-то поворачивает в состоянии; что именно — увидите очень скоро, и это красиво.
У гейтов есть важное свойство: все они обратимы. Любую операцию можно «открутить назад», применив обратную. В обычном программировании это не так: после x = 5 уже не узнать, что лежало в x раньше. Квантовая программа до самого измерения ничего не стирает и не теряет — это ещё одно следствие законов квантового мира, и оно нам не раз пригодится.
А в чем же тогда смысл, если ничего нельзя?
Пока звучало как сплошные запреты: не подсмотреть, не скопировать, да и ответ случайный. Зачем же тогда всё это? Затем, что взамен квантовый мир даёт три инструмента, которых в обычном программировании нет совсем.
Суперпозиция — регистр держит все варианты сразу, а не один. Интерференция — варианты умеют усиливать и гасить друг друга, и этим можно управлять. Запутанность — кубиты умеют быть связанными так крепко, как классические биты не умеют в принципе. Весь курс, по сути, об одном: как из этих трёх инструментов собираются программы, которые решают некоторые задачи быстрее любого обычного компьютера.
Знакомимся с главным героем
Теперь, когда ожидания настроены, пора знакомиться с главным героем — кубитом. Не волнуйтесь, если что-то из сказанного пока звучит абстрактно: каждая строка таблицы развернётся в отдельные уроки с интерактивами, где всё можно потрогать руками.
Переходите к следующему уроку — и начнём с вопроса «что такое кубит?».
Дальше урок продолжается интерактивом — откройте его на сайте.