「純粋なCSの背景」から始まり、「新しい量子プログラミング言語の作成」に進む学習ガイドはありますか?


12

私はコンピュータサイエンスの出身ですが、量子コンピューティングの学習中に注力すべきリソースを決定するのは難しいと感じています。私の最終的な目標は、Cが作られた1972年と同様に、量子コンピューターと人との間のインターフェースとして機能するプログラミング言語を作ることです。現実的な中間段階として、IBMのQISKitでプログラムを作成するポイントに到達したいと思います。

そのために、物理学と量子コンピューティングの分野に飛び込むために必要な関連分野の必要な背景を得るために、概略的な学習ガイドが必要になります。これはすでに存在しますか:必要な概念と習得する能力の順序付けされたリスト、可能な場合はそれぞれを取得するための適切な資料についても言及していますか?

高校レベルの物理学の知識を想定しています。初心者から専門家まで、学習ガイドを提供します。量子コンピューティングの分野の専門家になるために、時系列に従ってビデオ/ブックのリソースをリストアップして、自分で量子コンピューティング言語を記述できるレベルにしてください(言語を書く他のCSスキルがすでにあると想定) 。



3
Quantum Computing SEへようこそ!現在、この質問のタイトルにより、幅広い意見に基づいて質問しているように見えます(これはSE Q&A形式が対象としていないものです)。ただし、質問の本文では、これは実際にはリソース要求(これは許容されます)。そのため、質問のタイトルを編集して、知りたいことをより具体的にすることが最も役立ちます。さらに、コメントにリンクされている質問への回答で欠落しているものを正確に含めておくと役立つ場合があります。ありがとう!
Mithrandir24601

1
特に、リソースリクエストの質問に関するポリシーをご覧ください。これは広すぎます。
ヘザー

1
nand2tetrisのようなものを考えていますか?それとも本「コンピュータ科学者のための量子コンピューティング」のようなものですか?
James Wootton

1
編集のおかげで、これはリソースリクエストの要件を満たしていると思いますので、再開しました。
ヘザー

回答:


11

必要なすべての知識を提供できる単一の黄金のリソースはないと思います。しかし、私は経路(またはあなたの言葉で概略的な研究ガイド)を提案することができます:

新しい量子プログラミング言語を作成することを目的としている場合、物理学とコンピューターサイエンスの両方の側面から(おそらく数学でも)、既存の量子プログラミング言語を、量子コンピューティングの基本概念とともに徹底的に学ぶべきだと思います。側!)。

  • Microsoftには、Q#という名前の量子プログラミング言語があります(これは、Quantum Development Kitの一部です)。完全なdocumentation-cum-guideは、Webサイトhttps://docs.microsoft.com/en-us/quantumにあります。CS側の方であれば、ベクトル、行列、線形代数の一般的な知識をすでにお持ちであると思います。その場合は、記事ごとにガイドを直接読み始めることができます。最初は、行列やベクトルなどの簡単な改訂から始まり、キュービットの簡単な紹介が続きます。それだけで、少なくとも基本的な量子プログラムの作成を開始するには十分であり、その背後にある物理についての理解は最小限ですみます。ちなみに、線形代数の概念が弱い場合は、いつでも試すことができますカーンアカデミーの講義も同様です。

  • 次に、量子力学の少なくともいくつかの基本を学びたいと思います。私は個人的にヴァジラニ教授の講義が大好きです。約60の10分の講義で、量子力学と量子計算アルゴリズムのすべての必要な基本をカバーしています。この後、新しいアルゴリズムを自分で選択できるようになります。

  • 3番目のステップとして、「Isac ChuangとMichael Nielsenによる量子計算と量子情報」と「Mirco A. MannucciとNoson S. Yanofskyによるコンピュータサイエンティストのための量子計算」を取り上げ、重要なトピックを取り上げることをお勧めします。逃した。

これで、独自の量子プログラミング言語を書き始めるための十分な基礎が得られるでしょう。他の一般的な量子コンピューティング言語のチュートリアルを調べて、量子プログラムの作成方法や量子プログラミング言語の設計方法を理解することもできます。


6

「新しい量子プログラミング言語を作る」という目標が、量子計算の開発のこの時点で適切であるかどうかを考え直すことをお勧めします。これは、最も一般的なアプローチではありません。ほとんどの場合、本質的に機械語とは何かについて、まだ考えている段階にあるためです。アルゴリズムを作成するとき、これが行われるレベルは、論理ゲートの観点から古典的なアルゴリズムを表現するのと似ています(この乗算のなど)。QISKitのようなクォンタムSDKは、本質的に、クォンタムハードウェアまたはシミュレーターに送信されるジョブを作成する方法です。これには、シミュレーションの実行、ランタイムまたはノイズレベルの最適化などのツールが含まれます。これらは、古典的な計算に使用されている高レベルの意味での実際の言語ではありません。

量子スタックのこのレベルで何が起こっているかを紹介するには、Qは Terry RudolphによるQuantumに役立ちます。

QISKitを使用してプログラムを作成するという中間的な目標については、QISKitチュートリアルをお勧めします。それは短い量子プログラムを実装する多くの実用的な例を持っています。MediumにQISKitの発行物もあり、チュートリアルの内容の一部がより詳細に説明されています。QISKitのゲーミファイドチュートリアルもあります。これは、完全なQISKitチュートリアルのウォームアップとして役立つ場合があります。

完全な開示:私は最後の段落で言及されたすべてのものに貢献しました。


3
私はこれに同意しません。FORTRANが開発されてすぐ(デジタルコンピューターがまだ原始的であったとき)、人々は機械言語の代わりにそれを使い始めました。これはおそらく、古典的なコンピューターの歴史におけるプログラミング言語の単一の最大の飛躍でした。なぜ量子コンピューターのために人々に機械語でプログラムすることを強いるべきなのでしょうか?(私は彼らが効率性のためにそうするであろうと確信していますが、彼らは強制されるべきではありません。)
Peter Shor

1
素晴らしい点!現時点では、ハードウェアは機械語をはるかに超えて考えているとは言えません。しかし、それは間違いであることを証明できたら素晴らしいでしょう。
ジェームズウッ

私は自分の答えを少し編集して否定性を弱めましたが、現時点ではそれが通常のやり方ではないことを指摘しました(それが間違っていることを意味するわけではありません)
James Wootton
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.