http://www.quicklydone.com/2018/12/qubits-in-q.html
...
На этом рисунке каждая горизонтальная линия является кубитом, каждый из которых является операцией, а время течет слева направо.
Когда мы хотим разработать язык программирования для выражения квантового вычисления, естественно возникает вопрос о том, должны ли быть представлены кубиты на языке, и если да, то каким образом. ...
Квантовые состояния как линейные типы
... Подразумевается, что программный кубит представляет собой состояние кубита, а не фактический объект. ... квантовые вычисления работают, применяя операции к физическим объектам, а не к квантовым состояниям, поэтому абстракция не соответствует оперативной реальности...Кубиты как непрозрачные ссылки
Альтернативный подход заключается в использовании непрозрачного типа данных, который представляет ссылку на конкретную квантовую систему с двумя состояниями, будь то физическую или логическую ... Q# следуют этой модели.Квантовые вычисления по побочному эффекту
Представление, используемое в Q #, имеет интересную импликацию, что все фактические квантовые вычисления выполняются побочным эффектом. Невозможно напрямую взаимодействовать с квантовым состоянием компьютера; он вообще не имеет программного обеспечения. ... Фактически, квантовое состояние компьютера представляет собой непрозрачную глобальную переменную, которая недоступна, за исключением небольшого набора примитивов доступа (измерений) - и даже эти аксессоры имеют побочные эффекты в квантовом состоянии и, следовательно, действительно являются «мутаторами с результатами» чем истинные аксессоры.В общем программировании использование побочных эффектов и глобального состояния обычно обескураживается. Для квантовых вычислений, с другой стороны, они, похоже, очень хорошо соответствуют реальной физической реальности. По этой причине мы решили, что эта абстракция была правильной для использования в Q#.