究極の物理系であり、究極のソフトウェアであるものへの情熱

プログラミング言語では物理工学の博士号は取れないだろう。しかし、それでも自分は量子プログラミング言語が好きだ。(まあ情報理工の院試の問題を見てチキったのが一番悪いんだけど)

だからこれは供養になるかもしれない。もしくは「本当に忘れたくないもの」だ。

本当に気持ちだけで書いたから、論理展開にはかなり飛躍があるが、若さとか情熱というのはそういうものだと思ってほしい。このために大学院に入ったのだ。

究極の物理系としての量子プログラミング言語

物理学は基本的には、現実世界のことを客体として測定し、機序と力学を解き明かす営みだと理解している。

その中でも、プログラミング言語は究極の物理系だと思う。

任意の物理系は何かしらの計算にマッピングできることは有名だが、ある程度強力なプログラミング言語はその計算や物理系すべてを表現できる。とても普遍的だ!

逆に、プログラミング言語はあらゆる物理系をモデル化するだけの力を持たなければいけないだろう。

しかも、物理学は人間による人間のための学問だから、そのモデルは人間が扱いやすいものである必要がある。

あらゆる物理系を、扱いやすくモデル化する力を持つ。もちろんそれ自体は一般的すぎて何もできないが、適切に制約と整合性を加えて特定の系について論じることができる。これは物理学に他ならない。

現代のプログラミング言語は普遍的な物理的モデルとしての能力を持つべきだ。

現代の物理学において、量子情報理論はかなり根源的な理論とみなされているから、理想的なプログラミング言語はその理論構造を反映したものになるであろう。

コンピューター内であらゆる実験を原理的には行えるように、量子プログラミング言語はあらゆる物理現象をサブモデルとしてモデル化できる必要があり、「扱いに習熟することで量子力学を自然と理解できる」ものになるだろう。 そして、逆に、あらゆる物理現象や推論を計算とみなして抽象化することで、理想的な量子プログラミング言語に到達できると考えている。

理想的な量子プログラミング言語は、強力で扱いやすい量子情報理論の構造をバックボーンに持っているはずであり、そのために理論の理解が進むことが必要である。

究極のソフトウェアとしての量子プログラミング言語

全てのソフトウェアは理念的にはプログラミング言語によって書かれるはずだ。(過激派)

だから、理想的なプログラミング言語はすべてのソフトウェアを書けるだけの表現力が必要になる。

プログラミング言語もソフトウェアだから、プログラミング言語はすべてのソフトウェアを生成できる存在、究極のソフトウェアと言えるだろう。

プログラミング言語はソフトウェアを書く人に使われるものなので、どのようなソフトウェアを人々が書いているかに大きな影響を受ける。

なので、量子計算機を用いたソフトウェア、量子ソフトウェアだったり、量子アルゴリズムをすべて表現できるプログラミング言語である量子プログラミング言語があるのが適切だろう。

古典計算機でメモリの破壊を実行前に推論できたりするように、量子プログラミング言語は量子ソフトウェアを書く上で便利な機能、たとえば量子ビットの複製の禁止などを保証できるようにするべきだろう。

そして、そもそも量子ビットではない物理系に対処する必要もある。私が知る限り、ボソン系とフェルミオン系による量子計算の両方をいい感じに表現できる言語はまだない。

量子プログラミング言語との触れ合いとこれから

B2だかB3だったかではじめて量子回路を組んだ時は本当に驚いたものだ。

古典計算機におけるアセンブリ言語にも満たないような抽象度、ビット演算レベルの処理を並べて計算を記述している。

そして、量子力学を知っていないと何をやっているかほとんど何も理解できないのにも驚いた。

中学生の、古典力学も計算機科学も、つい最近まで右クリックも知らなかった人間が「Hello world」できるのとは対照的だ。

とても使いにくいというのが最初の感想だった。これでは将来量子計算機ができても、使う人はほとんど増えないだろう。

しかし、大学院に入り、量子情報の教育を受ける傍らで折に触れて再考するとかなり違う景色が見えてくる。

まず一番重要なのは量子情報は量子計算よりもはるかに多様で広い分野であることだ。量子計算の実現に限った話でも「回路をゲートからアセンブリする」よりは非常に広い話題に触れる必要がある。

そして、ビット演算レベルのきわめて低レイヤーと思えた量子ゲート演算も、物理系の立場からすればきわめて高レイヤーであり、抽象的な存在だ。今よく使われている量子ゲート演算セットは「組み合わせれば一応なんでも表現できる」だけの存在であり、それ以上でもそれ以下でもないことが分かってきた。

量子計算も、どちらかというと必要なのは量子力学というよりかは線形代数(+α)である。

そして量子ソフトウェアは物理学ではないという見方が圧倒的だった。(まあ自分でもかなりこれは思うので妥当なんだけど)一応断っておくと、弊研究室は極めて理解がある方だ。特に、指導教員には修論で「物理と言えそうな貢献」を相談する上でかなり苦労をかけたと思う。何より、そういう方向性に興味を持ってくれる知り合いや若手研究者、ITエンジニアに自分は恵まれていた。かなり恵まれている。しかし、色々模索したが博士号は多分これでは取れないだろう。これは物理工学科に来た自分が全面的に悪い。

上で書いた理想の言語の要求は極めて高い。人生をかけてもたどり着くかは怪しいだろうし、博士課程ではなおさら難しい。そして博士論文にはならない。だからしばらく忘れることにしよう。

だから、これのために量子情報を志したという気持ちだけは残すことにした。未来の自分が、これを見て少しでも量子プログラミング言語のやる気を取り戻すことを祈る。それではまた。