Programiranje

Q # jezik: Kako napisati kvantno kodo v Visual Studio

Prihodnost računalnika ni silicij; smo že na meji Moorejevega zakona glede zmogljivosti, ki jo lahko dobimo s tradicionalnimi tranzistorji. Delamo tudi na veliko večjih težavah, zlasti pri kriptografiji in matematičnem modeliranju; težave, ki zahtevajo dneve računalniškega časa tudi na največjih superračunalnikih.

Torej, kam gremo od tu? Microsoft Research, tako kot Google in IBM, veliko vlaga v kvantno računalništvo. Večina njenih raziskav je bilo na področju osnovne fizike, v sodelovanju z univerzami po vsem svetu pa je bilo mogoče ustvariti učinkovita okolja z nizkimi temperaturami in stabilna kvantna računalniška okolja. Toda ustvarjanje kubita - verjetnostni kvantni bit, ki v bistvu nadomešča 0 in 1 tradicionalnega bita - je le del zgodbe. Potreben je tudi način programiranja kvantnega računalnika in interpretacija verjetnostnega stanja kubitov.

Konstruiranje kvantnih računalnikov

Arhitektura kvantnega programa je razmeroma preprosta: tradicionalni program dobi vrednosti iz uporabniškega vnosa ali iz druge kode. Nato te vrednosti posreduje kvantni aplikaciji, ki nastavi kubite v kvantnem procesorju z uporabo enega od številnih kvantnih algoritmov, preden rezultate posreduje nazaj v nadrejeno aplikacijo.

Gre za postopek, ki je zelo podoben tistemu, ki sem ga uporabil pri svojem prvem programskem opravilu, ko sem pisal Fortranovo kodo za analizo končnih elementov, ki je za obdelavo matrične algebre uporabljala vektorski procesor, pritrjen na superračunalnik. Vektorske knjižnice, ki sem jih uporabljal za izdelavo in reševanje 3D elektromagnetnih modelov, so delovale tako na specializirani strojni opremi kot na matematičnem koprocesorju v namizni delovni postaji, zato sem lahko preizkusil svojo kodo, preden sem uporabil drag čas superračunalnika.

Microsoft je pred kratkim izdal svoj Quantum Development Kit, zgrajen okoli novega jezika Q #. Zasnovan tako, da uporablja znane konstrukcije za pomoč programskim aplikacijam, ki sodelujejo s kubiti, ima podoben pristop kot pri delu s koprocesorji, saj nudi knjižnice, ki obravnavajo dejansko kvantno programiranje in interpretacijo, tako da lahko napišete kodo, ki qubit operacije preda v en Microsoftov kvantni računalnik .

Premostitev klasičnega in kvantnega računalniškega sveta ni enostavno, zato ne pričakujte, da bo Q # podoben Visual Basicu. Bolj je podobno uporabi tega nabora Fortranovih matematičnih knjižnic z isto osnovno predpostavko: da razumete teorijo, za katero delate.

Eden od elementov Quantum Development Kit je kvantni računalniški priročnik, ki raziskuje vprašanja glede uporabe simulatorjev, pa tudi zagotavljanje primerja v linearni algebri. Če boste programirali v Q #, je bistvenega pomena razumevanje konceptov linearne algebre okoli vektorjev in matric - zlasti lastnih vrednosti in lastnih vektorjev, ki so ključni elementi številnih kvantnih algoritmov.

Uvod v Q #

Razvojni komplet se prenese kot razširitev Visual Studio, tako da ga lahko uporabljate v vseh različicah Microsoftovega glavnega razvojnega okolja, vključno z brezplačno različico Skupnosti. Namestitveni program vključuje jezik Q #, lokalni kvantni simulator in knjižnice, ki podpirajo vdelavo modulov Q # v kodo .Net. Ko je nameščen, se lahko povežete z Microsoftovim skladiščem Q # Github, da klonirate in prenesete vzorčno kodo in dodatne knjižnice. To je hiter postopek; namestitveni program vzame nekaj minut, da ga prenese in zažene na razmeroma zmogljivem razvojnem računalniku. Knjižnice gostijo Nuget, zato jih lahko hitro posodobite na najnovejše različice.

Ker je še nekaj let oddaljen delujoč kvantni računalnik, je Quantum Development Kit omejen na delo s simuliranimi kvantnimi računalniki. Microsoftovi raziskovalni sistemi še niso ustvarili delujočega topološkega kubita, vendar so bili rezultati obetavni. Dokler ne bodo objavljeni rezultati in bo Azure dobil kvantne koprocesorje, boste lahko samo eksperimentirali s simulatorji, ki jih gostijo lokalni in oblaki. Ker so omejeni na uporabo tradicionalnih tehnik programiranja, ne bodo opravili celotnega spektra zapletenih matematičnih operacij, ki jih obljublja kvantno računanje. Toda dajo občutek, kaj lahko naredi majhno število kubitov.

Veliko dela, ki ga morate narediti pri gradnji kvantnega programa, je pri izdelavi kvantnega računalnika iz kubitnih transformacij. Jezik Q # ureja postopek namesto vas, saj vključuje izraze za številne strukture kvantnih vrat, pa tudi običajne kvantne algoritme. Jezik sam se bo razvijalcem .Net zdel poznan s strukturo, ki je nekje med C # in F #.

Osnove kvantnega programiranja

Večina programov Q # se vam bo zdela razmeroma preprosta, kajti to, kar počnete, je nastavitev nizov kubitov in uporaba matematičnih transformacij zanje. Čeprav je osnovni problem zapleten (ali vsaj verjetno, da bo trajal veliko računalniškega časa z uporabo tradicionalnih računalniških virov), se zanašate na kvantni računalnik, ki bo delo opravil namesto vas, njegovi kvantni algoritmi pa pomenijo, da lahko uporabite majhno število povezanih kubitov za rešitev vašega problema.

Pomembno je omeniti, da so nekateri kvantni jeziki, kot je tisti, ki ga uporablja DWave v svojih kvantnih računalnikih, zasnovani za delo s kvantnim žarjenjem, ne pa z modelom gate, ki se uporablja v Microsoftovi kvantni strojni opremi.

Če se jezik Q # razlikuje od znanega, je v podpori kvantnim algoritmom. To se začne s tipi: Q # je močno tipkan jezik, ki dodaja nove tipe, ki predstavljajo kubite in skupine kubitov. Druga ključna razlika je med operacijami in funkcijami Q #. Operacije vsebujejo kvantne operacije, medtem ko so funkcije zgolj za klasično kodo, čeprav lahko delujejo z rezultati kvantne operacije.

Kvantni algoritmi in knjižnice

Q # vključuje tudi posebne vrste operacij, ki delujejo s kvantnimi algoritmi, vključno s tistimi, ki izračunajo povezane rezultate matrike kubitov, in druge, ki pomagajo zgraditi kubitska vezja, ki se sprožijo le, če so nadzorni kubiti pravilno nastavljeni.

Pomembno je vedeti, da tam, kjer Q # v rezultatih uporablja Zero in One kot spremenljivki za obdelavo kubitov, niso enaki binarnim 0 in 1. Namesto tega so predstavitve lastnih vrednosti vektorjev, shranjenih v kubitih.

Za izdelavo in izdelavo kvantnih aplikacij uporabljate standardne knjižnice Q #. Vključujejo nabor kvantnih primitivov, ki določajo vrata, ki jih gradite iz svojih kubitov, pa tudi uporabo kvantnih operaterjev in merjenje rezultatov. Knjižnice so razdeljene na dva dela: uvod v nastavitev kvantnega računalnika in kanon za upravljanje stroja. Pomembno je razumeti razlike med tema dvema delom knjižnic, ker jih je treba v svoji kodi hraniti ločeno. Uporaba kanonskih operaterjev poganja kvantni stroj z operaterji, ki obdelujejo določene kvantne algoritme; na primer uporaba Quantum Fourierjeve transformacije ali iskanje skupnih deliteljev dveh števil.

Q # ni jezik za začetnike. Čeprav poenostavlja nekatere kvantne operacije, je odvisno od poznavanja delovanja kvantnega računalnika in razumevanja osnov kvantnega računanja. Če ste delali z linearno algebro in verjetnostmi, boste imeli prednost, vendar je vseeno vredno najprej nameniti čas Microsoftovim vajam in vzorcem.

$config[zx-auto] not found$config[zx-overlay] not found