こんにちは、ILab-01です。
今勉強中の量子プログラミングについて備忘録を残します。
MITが開発した新しいプログラミング言語Twist
MITが2022年1月に新しい量子プログラミング向け言語を発表しました。
論文: https://dl.acm.org/doi/10.1145/3498691
ソースコード: https://github.com/psg-mit/twist-popl22
Twistの特徴
このプログラミング言語の特徴を私が理解した範囲で説明します。
この言語の重要な点は、エンタングルメントが引き起こすバグを防止できることです。
エンタングルメントは、日本語で量子もつれと呼ばれるものです。
そして、エンタングルメントは複数の量子ビットが互いに関連している状態のことです。
エンタングルメント状態を有する2つの量子ビットがあった場合、それらはお互いにペアとなっています。
量子ビットは観測 (量子ビットの状態を確認すること) をして初めて0か1か確定するという特性があるのですが、片方の量子ビットを観測するとペアとなっている量子ビットの状態も確定します。
この確定は、ペアとなっている量子ビットを観測しなくても発生します。
このように、エンタングルメント状態を有する量子ビットの片方を操作すると、もう片方の状態も変化します。
ここで量子プログラミングにおいて、エンタングルメント状態を有する2つの量子ビットを、エンタングルメント状態を有していない想定で使用したとします。
すると、独立した量子ビットを扱っているつもりが、片方の量子ビットを操作したことによってもう片方の量子ビットも変化してしまい、想定しない挙動が発生します。
この現象を古典的なプログラミングで例えると、別々の変数AとBを扱っていたつもりが実は共有メモリになっていて、Aを書き換えたらBも書き換わってしまった、ということに似ています。
これでは知らない間にバグが発生してしまいます。
上記のようなバグを防止するために、使用する量子ビットがエンタングルメント状態を有していないことを保証するのがTwist言語です。
Twist言語を使うと、専用の型宣言によってエンタングルメント状態を有していない量子ビット使用できるようになります。
本記事の注意点
以上の内容は私の備忘録として書いたものであり、論文の内容理解が正確ではない場合があります。
正確な内容を知りたい方は冒頭の論文をご参照ください。
コメント