Q # bahasa: Cara menulis kode kuantum di Visual Studio

Masa depan komputer bukanlah silikon; kita sudah berada di batas Hukum Moore dalam hal kinerja yang dapat kita peroleh dari transistor tradisional. Kami juga mengerjakan masalah yang jauh lebih besar, terutama dalam hal kriptografi dan pemodelan matematika; masalah yang membutuhkan waktu komputasi berhari-hari bahkan pada superkomputer terbesar.

Jadi kemana kita pergi dari sini? Microsoft Research, seperti Google dan IBM, telah banyak berinvestasi dalam komputasi kuantum. Sebagian besar penelitiannya dilakukan dalam fisika dasar, bekerja dengan universitas di seluruh dunia untuk menghasilkan lingkungan suhu rendah yang efisien dan lingkungan komputasi kuantum yang stabil. Tetapi menciptakan qubit — bit kuantum probabilistik yang pada dasarnya menggantikan 0 dan 1 dari bit tradisional — hanyalah sebagian dari cerita. Yang juga dibutuhkan adalah cara untuk memprogram komputer kuantum dan menafsirkan status probabilistik qubit.

Membangun komputer kuantum

Arsitektur program kuantum relatif sederhana: Program tradisional mendapatkan nilai dari input pengguna atau dari kode lain. Ini kemudian meneruskan nilai-nilai tersebut ke aplikasi kuantum yang menyetel qubit dalam prosesor kuantum, menggunakan salah satu dari banyak algoritme kuantum, sebelum meneruskan hasilnya kembali ke aplikasi induk.

Ini adalah proses yang sangat mirip dengan yang saya gunakan pada pekerjaan pemrograman pertama saya, menulis kode analisis elemen hingga Fortran yang menggunakan prosesor vektor yang dipasang ke superkomputer untuk menangani aljabar matriks. Pustaka vektor yang saya gunakan untuk membangun dan menyelesaikan model elektromagnetik 3D saya bekerja pada perangkat keras khusus itu atau pada koprosesor matematika di workstation desktop, sehingga saya dapat menguji kode saya sebelum menggunakan waktu superkomputer yang mahal.

Microsoft baru-baru ini merilis Quantum Development Kit, yang dibuat berdasarkan bahasa Q # yang baru. Dirancang untuk menggunakan konstruksi yang sudah dikenal untuk membantu aplikasi program yang berinteraksi dengan qubit, dibutuhkan pendekatan serupa untuk bekerja dengan koprosesor, menyediakan pustaka yang menangani pemrograman dan interpretasi kuantum yang sebenarnya, sehingga Anda dapat menulis kode yang menyerahkan operasi qubit ke salah satu komputer kuantum Microsoft .

Menjembatani dunia komputasi klasik dan kuantum tidaklah mudah, jadi jangan berharap Q # seperti Visual Basic. Ini lebih seperti menggunakan kumpulan perpustakaan matematika Fortran, dengan asumsi dasar yang sama: bahwa Anda memahami teori di balik apa yang Anda lakukan.

Salah satu elemen Quantum Development Kit adalah primer komputasi kuantum, yang mengeksplorasi masalah seputar penggunaan simulator, serta menyediakan primer dalam aljabar linier. Jika Anda akan memprogram di Q #, pemahaman tentang konsep aljabar linier utama di sekitar vektor dan matriks sangat penting — terutama nilai eigen dan vektor eigen, yang merupakan elemen kunci dari banyak algoritme kuantum.

Memulai Q #

Kit pengembangan diunduh sebagai ekstensi Visual Studio, sehingga Anda dapat menggunakannya dengan semua versi lingkungan pengembangan utama Microsoft, termasuk edisi Komunitas gratis. Penginstal menyertakan bahasa Q #, simulator kuantum lokal, dan pustaka yang mendukung penyematan modul Q # dalam kode .Net Anda. Setelah terinstal, Anda dapat terhubung ke repositori Q # Github Microsoft untuk mengkloning dan mendownload kode sampel dan pustaka tambahan. Ini proses yang cepat; penginstal membutuhkan beberapa menit untuk mengunduh dan menjalankan pada PC pengembangan yang cukup kuat. Pustaka dihosting di Nuget, sehingga Anda dapat dengan cepat memperbarui ke versi terbaru.

Dengan komputer kuantum yang berfungsi masih beberapa tahun lagi, Kit Pengembangan Kuantum terbatas untuk bekerja dengan komputer kuantum simulasi. Sistem penelitian Microsoft belum menghasilkan qubit topologis yang berfungsi, tetapi hasilnya menjanjikan. Jadi, hingga ada hasil yang dipublikasikan dan Azure mendapatkan koprosesor kuantumnya, Anda terbatas untuk bereksperimen dengan simulator yang dihosting lokal dan cloud. Karena mereka terbatas pada penggunaan teknik pemrograman tradisional, mereka tidak akan menangani berbagai operasi matematika kompleks yang dijanjikan oleh komputasi kuantum. Tapi mereka memberi gambaran tentang apa yang bisa dilakukan sejumlah kecil qubit.

Sebagian besar pekerjaan yang perlu Anda lakukan dalam membangun program kuantum adalah membangun komputer kuantum dari transformasi qubit. Bahasa Q # menangani proses tersebut untuk Anda, karena ia menyertakan ekspresi untuk banyak struktur gerbang kuantum, serta algoritme kuantum umum. Bahasanya sendiri akan terasa familier bagi pengembang .Net, dengan struktur yang berada di antara C # dan F #.

Dasar-dasar pemrograman kuantum

Anda akan menemukan sebagian besar program Q # relatif sederhana, karena yang Anda lakukan adalah menyiapkan array qubit dan menerapkan transformasi matematis padanya. Meskipun masalah yang mendasarinya rumit (atau setidaknya mungkin memakan banyak waktu komputasi menggunakan sumber daya komputasi tradisional), Anda mengandalkan komputer kuantum untuk menangani pekerjaan untuk Anda, dan algoritme kuantumnya berarti Anda dapat menggunakan jumlah kecil dari qubit yang terhubung untuk memecahkan masalah Anda.

Satu hal penting untuk diperhatikan adalah bahwa beberapa bahasa kuantum, seperti yang digunakan oleh DWave di komputer kuantumnya, dirancang untuk bekerja dengan anil kuantum, bukan model gerbang yang digunakan dalam perangkat keras kuantum Microsoft.

Di mana bahasa Q # berbeda dari yang familiar adalah dalam dukungannya untuk algoritma kuantum. Ini dimulai dengan tipe: Q # adalah bahasa yang diketik dengan kuat, menambahkan tipe baru yang mewakili qubit dan grup qubit. Perbedaan utama lainnya adalah antara operasi dan fungsi Q #. Operasi berisi operasi kuantum, sedangkan fungsi murni untuk kode klasik, meskipun dapat bekerja dengan hasil dari operasi kuantum.

Algoritma dan perpustakaan kuantum

Q # juga mencakup jenis operasi tertentu yang bekerja dengan algoritme kuantum, termasuk yang menghitung hasil adjoint dari matriks qubit, dan lainnya yang membantu membangun sirkuit qubit, yang dipicu hanya jika qubit kontrol disetel dengan benar.

Penting untuk diingat bahwa di mana Q # menggunakan Nol dan Satu dalam hasil sebagai variabel untuk menangani qubit, mereka tidak sama dengan biner 0 dan 1. Sebaliknya mereka adalah representasi dari nilai eigen dari vektor yang disimpan dalam qubit.

Anda menggunakan pustaka standar Q # untuk membangun dan membangun aplikasi kuantum Anda. Ini termasuk satu set primitif kuantum yang menentukan gerbang yang Anda bangun dari qubit Anda, serta menerapkan operator kuantum dan mengukur hasilnya. Pustaka dibagi menjadi dua bagian: pendahuluan untuk menyiapkan komputer kuantum Anda, dan kanon untuk mengoperasikan mesin. Penting untuk memahami perbedaan antara dua bagian pustaka ini, karena keduanya harus tetap terpisah dalam kode Anda. Menggunakan operator kanon menjalankan mesin kuantum, dengan operator yang menangani algoritme kuantum tertentu; misalnya, menerapkan Transformasi Fourier Kuantum atau mencari pembagi persekutuan dari dua bilangan.

Q # bukanlah bahasa untuk pemula. Meskipun menyederhanakan beberapa operasi kuantum, ia bergantung pada pengetahuan tentang bagaimana komputer kuantum beroperasi, serta pemahaman dasar-dasar komputasi kuantum. Jika Anda telah bekerja dengan aljabar linier dan probabilitas, Anda akan memiliki permulaan yang lebih awal, tetapi masih layak untuk menghabiskan waktu terlebih dahulu dengan tutorial dan sampel Microsoft.