Programavimas

Q # kalba: kaip parašyti kvantinį kodą „Visual Studio“

Kompiuterio ateitis nėra silicis; kalbant apie našumą, kurį galime gauti iš tradicinių tranzistorių, mes jau esame Moore'o įstatymo ribose. Mes taip pat dirbame su daug didesnėmis problemomis, ypač kalbant apie kriptografiją ir matematinį modeliavimą; problemos, kurioms reikalingos dienos skaičiavimo, net ir didžiausiuose superkompiuteriuose.

Taigi, iš kur mes einame? „Microsoft Research“, kaip ir „Google“ bei IBM, daug investavo į kvantinį skaičiavimą. Daug jos tyrimų buvo atliekama pagrindinės fizikos srityje, dirbant su viso pasaulio universitetais, kad būtų sukurta efektyvi žemos temperatūros aplinka ir stabili kvantinių kompiuterių aplinka. Tačiau sukūrus kubitą - tikimybinį kvantinį bitą, kuris iš esmės pakeičia tradicinio bitų 0 ir 1, yra tik dalis istorijos. Taip pat reikalingas būdas užprogramuoti kvantinį kompiuterį ir interpretuoti kubitų tikimybinę būseną.

Kvantinių kompiuterių konstravimas

Kvantinės programos architektūra yra gana paprasta: tradicinė programa gauna vertes iš vartotojo įvesties ar kito kodo. Tada jis perduoda šias vertes kvantinei programai, kuri nustato kvitus kvantiniame procesoriuje, naudodama vieną iš daugelio kvantinių algoritmų, prieš perduodama rezultatus atgal į pagrindinę programą.

Tai procesas, labai panašus į tą, kurį naudojau savo pirmame programavimo darbe, rašydamas „Fortran“ baigtinių elementų analizės kodą, kuris matricos algebrai tvarkyti naudojo vektorių procesorių, prijungtą prie superkompiuterio. Vektorių bibliotekos, kurias kūriau ir sprendžiau savo 3D elektromagnetinius modelius, dirbo tiek su ta specializuota įranga, tiek su matematikos bendruoju procesoriumi darbalaukio darbo stotyje, todėl prieš naudodamas brangų superkompiuterio laiką galėjau išbandyti savo kodą.

„Microsoft“ neseniai išleido savo „Quantum“ kūrimo rinkinį, sukurtą pagal naująją Q # kalbą. Sukurtas naudoti žinomus konstruktus, kad būtų galima padėti programoms, kurios sąveikauja su kubitais, todėl reikia panašaus požiūrio į darbą su bendrais procesoriais, teikiant bibliotekas, tvarkančias tikrąjį kvantinį programavimą ir interpretavimą, todėl galite parašyti kodą, kuris perduoda kbitines operacijas į vieną „Microsoft“ kvantinį kompiuterį .

Susieti klasikinį ir kvantinį skaičiavimo pasaulį nėra lengva, todėl nesitikėkite, kad Q # bus kaip „Visual Basic“. Tai labiau panašu į tą „Fortran“ matematikos bibliotekų rinkinį su ta pačia prielaida: jūs suprantate savo daromos teorijos pagrindą.

Vienas iš „Quantum Development Kit“ elementų yra kvantinio skaičiavimo pradmenis, kuriame nagrinėjamos problemos, susijusios su treniruoklių naudojimu, taip pat pateikiamos pradmenų linijinėje algebroje. Jei ketinate programuoti Q #, svarbu suprasti pagrindines linijinės algebros sampratas apie vektorius ir matricas - ypač savąsias reikšmes ir savus vektorius, kurie yra pagrindiniai daugelio kvantinių algoritmų elementai.

Darbo su Q # pradžia

Kūrimo rinkinys atsisiunčiamas kaip „Visual Studio“ plėtinys, todėl galite jį naudoti su visomis pagrindinės „Microsoft“ kūrimo aplinkos versijomis, įskaitant nemokamą bendruomenės leidimą. Diegimo programoje yra Q # kalba, vietinis kvantinis modeliuoklis ir bibliotekos, palaikančios Q # modulių įterpimą į jūsų .Net kodą. Įdiegę galite prisijungti prie „Microsoft“ Q # Github saugyklos, kad galėtumėte klonuoti ir atsisiųsti pavyzdinį kodą ir papildomas bibliotekas. Tai greitas procesas; diegimo programa užtrunka keletą minučių, kad ją atsisiųstų ir paleistų pakankamai galingu kūrimo kompiuteriu. Bibliotekos yra „Nuget“, todėl galite greitai atnaujinti į naujausias versijas.

Kai veikiantis kvantinis kompiuteris yra dar keleri metai, „Quantum Development Kit“ apsiriboja darbu su imituotais kvantiniais kompiuteriais. „Microsoft“ tyrimų sistemos dar nepateikė veikiančios topologinės apklausos, tačiau rezultatai buvo daug žadantys. Taigi, kol nebus paskelbti rezultatai ir „Azure“ gaus savo kvantinius procesorius, galite eksperimentuoti tik su vietiniais ir debesų priglobtaisiais treniruokliais. Kadangi jie apsiriboja tradicinių programavimo metodų naudojimu, jie neatliks visų kompleksinių matematinių operacijų, kurias žada kvantinis skaičiavimas. Tačiau jie jaučia, ką gali padaryti nedaugelis kubitų.

Didžioji darbo dalis, kurią turite atlikti kurdami kvantinę programą, yra kvantinio kompiuterio sukūrimas iš kubitų transformacijų. Q # kalba tvarko procesą už jus, nes ji apima daugelio kvantinių vartų struktūrų išraiškas, taip pat įprastus kvantinius algoritmus. Pati kalba .Net kūrėjams atrodys pažįstama, jos struktūra yra tarp C # ir F #.

Kvantinio programavimo pagrindai

Daugumą Q # programų rasite palyginti paprastas, nes tai, ką darote, yra kvitų masyvų nustatymas ir matematinių transformacijų pritaikymas joms. Nors pagrindinė problema yra sudėtinga (arba bent jau greičiausiai užtruks daug skaičiavimo laiko naudojant tradicinius skaičiavimo išteklius), jūs pasikliaujate kvantiniu kompiuteriu, kad atliktumėte darbą už jus, o jo kvantiniai algoritmai reiškia, kad galite naudoti nedidelį skaičių prijungtų kubitų jūsų problemai išspręsti.

Svarbu atkreipti dėmesį į tai, kad kai kurios kvantinės kalbos, pavyzdžiui, ta, kurią DWave naudoja savo kvantiniuose kompiuteriuose, yra skirtos dirbti su kvantiniu atkaitinimu, o ne vartų modeliu, naudojamu „Microsoft“ kvantinėje aparatūroje.

Kur Q # kalba skiriasi nuo pažįstamos, tai yra kvantinių algoritmų palaikymas. Tai prasideda tipais: Q # yra griežtai įvesta kalba, pridedant naujų tipų, kurie atspindi kubitus ir jų grupes. Kitas svarbus skirtumas yra tarp Q # operacijų ir funkcijų. Operacijose yra kvantinės operacijos, o funkcijos yra skirtos tik klasikiniam kodui, nors jos gali dirbti su kvantinės operacijos rezultatais.

Kvantiniai algoritmai ir bibliotekos

Q # taip pat apima konkrečius operacijų tipus, kurie dirba su kvantiniais algoritmais, įskaitant tuos, kurie apskaičiuoja papildomus kubitų matricos rezultatus, ir kitus, kurie padeda konstruoti kubitų grandines, paleidžiamas tik tuo atveju, jei valdymo kvitai yra tinkamai nustatyti.

Svarbu atsiminti, kad ten, kur Q # rezultatuose kaip kintamieji naudoja kbitus, kad tvarkytų kubitus, jie nėra tokie patys kaip dvejetainiai 0 ir 1. Vietoj to jie atspindi kubituose saugomų vektorių savąsias reikšmes.

Kvantinėms programoms kurti ir konstruoti naudojate standartines Q # bibliotekas. Tai apima kvantinių primityvų rinkinį, kuris apibrėžia vartus, kuriuos statote iš savo kubitų, taip pat kvantinius operatorius ir matuoja rezultatus. Bibliotekos yra suskirstytos į dvi dalis: įžanga jūsų kvantinio kompiuterio nustatymui ir mašinos valdymui skirtas kanonas. Svarbu suprasti šių dviejų bibliotekų dalių skirtumus, nes jas kode reikia laikyti atskirai. Naudojant kanono operatorius, kvantinė mašina veikia su operatoriais, kurie tvarko konkrečius kvantinius algoritmus; pavyzdžiui, taikant „Quantum Fourier Transform“ arba radus bendrus dviejų skaičių daliklius.

Q # nėra kalba pradedantiesiems. Nors tai supaprastina kai kurias kvantines operacijas, tai priklauso nuo žinių apie tai, kaip veikia kvantinis kompiuteris, ir nuo kvantinio skaičiavimo pagrindų supratimo. Jei dirbote naudodami tiesinę algebrą ir tikimybes, turėsite į priekį, tačiau vis tiek verta pirmiausia praleisti laiką su „Microsoft“ mokymo programomis ir pavyzdžiais.