Programmēšana

Q # valoda: kā rakstīt kvantu kodu Visual Studio

Datora nākotne nav silīcijs; mēs jau esam pie Mūra likuma robežām attiecībā uz veiktspēju, ko varam iegūt no tradicionālajiem tranzistoriem. Mēs strādājam arī pie daudz lielākām problēmām, īpaši attiecībā uz kriptogrāfiju un matemātisko modelēšanu; problēmas, kurām nepieciešamas vairākas dienas ilga laika pat lielākajos superdatoros.

Tātad, kur mēs ejam no šejienes? Microsoft Research, tāpat kā Google un IBM, ir ieguldījis daudz līdzekļu kvantu skaitļošanā. Liela daļa pētījumu ir veikti fizikas pamatdarbībā, sadarbojoties ar universitātēm visā pasaulē, lai ražotu efektīvas zemas temperatūras un stabilas kvantu skaitļošanas vides. Bet kubita - varbūtības kvantu bita, kas būtībā aizstāj tradicionālā bita 0 un 1, izveidošana ir tikai daļa no stāsta. Nepieciešams arī veids, kā ieprogrammēt kvantu datoru un interpretēt kubītu varbūtības stāvokli.

Kvantu datoru konstruēšana

Kvantu programmas arhitektūra ir salīdzinoši vienkārša: tradicionālā programma iegūst vērtības no lietotāja ievades vai no cita koda. Pēc tam tā nodod šīs vērtības kvantu lietojumprogrammai, kas, izmantojot vienu no daudzajiem kvantu algoritmiem, pirms rezultātu nodošanas atpakaļ vecāku lietojumprogrammai nosaka kvbus kvantu procesorā.

Tas ir process, kas ir ļoti līdzīgs tam, ko izmantoju savā pirmajā programmēšanas darbā, rakstot Fortran ierobežoto elementu analīzes kodu, kas matricas algebras apstrādei izmantoja vektoru procesoru, kas pievienots superdatoram. Vektoru bibliotēkas, kuras es izmantoju, lai izveidotu un risinātu savus 3D elektromagnētiskos modeļus, darbojās gan ar šo specializēto aparatūru, gan ar matemātikas kopprocesoru darbvirsmas darbstacijā, tāpēc es varēju pārbaudīt savu kodu pirms dārga superdatora laika izmantošanas.

Microsoft nesen izlaida savu Quantum Development Kit, kas veidots ap jauno Q # valodu. Paredzēts izmantot pazīstamus konstruktus, lai palīdzētu programmu lietojumprogrammām, kas mijiedarbojas ar kvitiem, un tā izmanto līdzīgu pieeju darbam ar kopprocesoriem, nodrošinot bibliotēkas, kas apstrādā faktisko kvantu programmēšanu un interpretāciju, lai jūs varētu rakstīt kodu, kas nodod kubita darbības vienam Microsoft kvantu datoram .

Klasiskās un kvantu skaitļošanas pasaules savienošana nav viegli, tāpēc negaidiet, ka Q # būs līdzīgs Visual Basic. Tas drīzāk ir izmantot šo Fortrana matemātikas bibliotēku kopumu ar to pašu pamatā esošo pieņēmumu: ka jūs saprotat teoriju, ko jūs darāt.

Viens no Quantum Development Kit elementiem ir kvantu skaitļošanas grunts, kas pēta jautājumus, kas saistīti ar simulatoru izmantošanu, kā arī nodrošina primeru lineārajā algebrā. Ja plānojat programmēt Q #, ir svarīgi izprast galvenos lineārās algebras jēdzienus ap vektoriem un matricām - it īpaši īpašvērtības un īpašivektorus, kas ir daudzu kvantu algoritmu galvenie elementi.

Darba sākšana ar Q #

Izstrādes komplekts tiek lejupielādēts kā Visual Studio paplašinājums, tāpēc jūs varat to izmantot ar visām Microsoft galvenās izstrādes vides versijām, ieskaitot bezmaksas kopienas izdevumu. Instalēšanas programmā ir iekļauta valoda Q #, vietējais kvantu simulators un bibliotēkas, kas atbalsta Q # moduļu iegulšanu jūsu .Net kodā. Pēc instalēšanas varat izveidot savienojumu ar Microsoft Q # Github repozitoriju, lai klonētu un lejupielādētu koda paraugu un papildu bibliotēkas. Tas ir ātrs process; instalētājam nepieciešamas pāris minūtes, lai lejupielādētu un palaistu pietiekami jaudīgā izstrādes datorā. Bibliotēkas tiek mitinātas vietnē Nuget, lai jūs varētu ātri atjaunināt jaunākās versijas.

Tā kā darba kvantu dators vēl atrodas dažus gadus, Quantum Development Kit aprobežojas ar darbu ar simulētiem kvantu datoriem. Microsoft pētniecības sistēmām vēl nav jāizveido funkcionējošs topoloģiskais kvīts, taču rezultāti ir daudzsološi. Tātad, kamēr nav publicēti rezultāti un Azure iegūst kvantu kopprocesorus, jūs varat eksperimentēt tikai ar vietējiem un mākoņu mitinātajiem simulatoriem. Tā kā viņi aprobežojas ar tradicionālo programmēšanas metožu izmantošanu, viņi netiks galā ar visu sarežģīto matemātisko darbību klāstu, ko sola kvantu skaitļošana. Bet viņi patiešām sajūt, ko mazs skaits kvītu var paveikt.

Liela daļa darba, kas jums jādara, veidojot kvantu programmu, ir kvantu datora konstruēšana ārpus kvbita transformācijām. Q # valoda apstrādā procesu jūsu vietā, jo tajā ir izteiksmes daudzām kvantu vārtu struktūrām, kā arī kopīgi kvantu algoritmi. Pati valoda jutīsies pazīstama .Net izstrādātājiem ar struktūru, kas atrodas starp C # un F #.

Kvantu programmēšanas pamati

Jūs atradīsit lielāko daļu Q # programmu salīdzinoši vienkāršu, jo tas, ko jūs darāt, ir kvotu masīvu iestatīšana un matemātisko pārveidojumu piemērošana tiem. Lai gan pamatproblēma ir sarežģīta (vai, visticamāk, tas aizņems daudz skaitļošanas laika, izmantojot tradicionālos skaitļošanas resursus), jūs paļaujaties uz kvantu datoru, lai veiktu darbu jūsu vietā, un tā kvantu algoritmi nozīmē, ka varat izmantot nelielu skaitu savienoto kubītu, lai atrisinātu jūsu problēmu.

Viena svarīga lieta, kas jāņem vērā, ir tas, ka dažas kvantu valodas, piemēram, to, ko DWave izmanto savos kvantu datoros, ir paredzētas darbam ar kvantu atlaidināšanu, nevis ar vārtu modeli, ko izmanto Microsoft kvantu aparatūrā.

Kur Q # valoda atšķiras no pazīstamās, tā atbalsta kvantu algoritmus. Tas sākas ar tipiem: Q # ir stingri ievadīta valoda, pievienojot jaunus tipus, kas apzīmē kubitus un kvotu grupas. Vēl viena būtiska atšķirība ir starp Q # operācijām un funkcijām. Operācijas satur kvantu darbības, savukārt funkcijas ir paredzētas tikai klasiskajam kodam, lai gan tās var strādāt ar kvantu darbības rezultātiem.

Kvantu algoritmi un bibliotēkas

Q # ietver arī īpašus operāciju veidus, kas darbojas ar kvantu algoritmiem, ieskaitot tos, kas aprēķina kvītu matricas blakus rezultātus, un citus, kas palīdz konstruēt kubita ķēdes, kas tiek aktivizētas tikai tad, ja vadības kvīti ir pareizi iestatīti.

Ir svarīgi atcerēties, ka gadījumos, kad Q # rezultātos kā Nulles un Vienu izmanto mainīgos, lai apstrādātu kubitus, tie nav tādi paši kā bināri 0 un 1. Tā vietā tie ir kubītos saglabāto vektoru īpašvērtību attēlojumi.

Jūs izmantojat Q # standarta bibliotēkas, lai izveidotu un izveidotu savas kvantu lietojumprogrammas. Tajos ietilpst kvantu primitīvu kopums, kas definē vārtus, kurus jūs veidojat, izmantojot kvantus, kā arī kvantu operatoru pielietošana un rezultātu mērīšana. Bibliotēkas ir sadalītas divās daļās: ievads kvantu datora iestatīšanai un kanons mašīnas darbībai. Ir svarīgi izprast atšķirības starp šīm divām bibliotēku daļām, jo ​​tās kodā ir jāsaglabā atsevišķi. Izmantojot kanona operatorus, kvantu mašīna darbojas kopā ar operatoriem, kas apstrādā konkrētus kvantu algoritmus; piemēram, piemērojot Kvantu Furjē transformāciju vai atrodot divu skaitļu kopējus dalītājus.

Q # nav valoda iesācējiem. Lai gan tas vienkāršo dažas kvantu darbības, tas ir atkarīgs no zināšanām par to, kā darbojas kvantu dators, kā arī no kvantu skaitļošanas pamatu izpratnes. Ja esat strādājis ar lineāru algebru un varbūtībām, jums būs jāsāk ar priekšu, taču joprojām ir vērts vispirms pavadīt laiku, izmantojot Microsoft apmācības un paraugus.