Denne uken er Jeg PÅ NDC Developer Conference I Sydney. Mens jeg var her, deltok jeg på et verksted om programmering Av Kvante datamaskiner ved Hjelp Av Q#, drevet Av John Azariah, skaperen Av Q# programmeringsspråket.
Q# Er et Nylig utgitt Microsoft-språk spesielt utviklet for programmering av kvantecomputeroperasjoner fra en klassisk datamaskin. Den støttes På Mac, Windows og Linux.
Hva er så spennende Om Q# er at Det er en abstraksjon av quantum computing på et nytt semantisk nivå. Du kan uttrykke komplekse ideer kortfattet(tenk På C versus Assembly Language). Nye nivåer av semantisk abstraksjon tillater fremveksten av nye paradigmer.
Q# Er ikke bare et nytt nivå av abstraksjon over en tidligere, kjent en, men. Q# er en semantisk abstraksjon over en revolusjonerende maskinvare som fortsatt blir fysisk implementert-en kvantecomputer.
du kan uttrykke Ting I Q# som du bare ikke kan uttrykke i et klassisk dataspråk.
Q # er egentlig mer beslektet med et samlingsspråk for kvante datamaskiner, når det gjelder primitiver det innkapsler. Vi er i utgangspunktet med kvante datamaskiner hvor vi var i slutten av 40s / tidlig 50s med klassiske datamaskiner.
Q# Programmeringsmodell
programmeringsmodellen For Q# er å behandle kvantecomputeren som en koprosessor. Det ligner på å jobbe MED EN GPU-Grafikkbehandlingsenheten i datamaskinens skjermkort. GPU er en spesialisert prosessor for å knase polygoner og beregne skyggelegging. Det viser seg at Gpuer også er gode for den typen tallknusing som trengs For Bitcoin-gruvedrift, slik at folk bruker dem til det. For å programmere EN GPU, monterer du instruksjonene for GPU-EN ved hjelp av et domenespesifikt språk, og sender dem deretter fra datamaskinens HOVEDPROSESSOR til GPU-EN for utførelse.
Med Q # skriver du kvanteoperasjonene I det domenespesifikke språket Q#, som er et statsløst, funksjonelt språk, og sender dem deretter til kvantecomputeren fra et program skrevet I C # som kjører på en klassisk CPU, som også er hvor du mottar eventuell utgang fra kvantecomputeren.
Eksempel Q# Kode
etter verkstedet skrev Jeg Et Q# – program som demonstrerer en enkel kvanteadferd som er forskjellig fra oppførselen til en klassisk datamaskin.
HGate-programmet demonstrerer et spesielt tilfelle av Det berømte Dobbeltspalteksperimentet, hvor observasjon av en mellomliggende tilstand av systemet påvirker systemets oppførsel.
«Gud spiller ikke terninger…» – Albert Einstein
for å forstå oppførselen som vises av dette programmet: tenk deg å ta en mynt og starte med heads up, og deretter vende den. Det har en 50% sjanse for å komme opp hoder eller haler. Du sjekker hva det er, så snu det igjen. Det har en 50% sjanse for å komme opp hoder eller haler igjen.
Ganske rett frem. Nå, her er quantum weirdness. I quantum realm, hvis mynten er en partikkel underlagt kvanteffekter, snu du den ved å sende den gjennom en kvantelogikkkrets kalt En Hadamard gate. Hvis du ser på det etter den første flippen, får du 50/50 hoder / haler på den flippen og på den andre flippen. Men hvis du ikke ser på det etter den første flippen, kommer den andre flippen opp hodene-hver eneste gang —
Albert Einstein, som først oppdaget Kvantemekanikk, kunne ikke tro at universet kunne fungere som dette. Og likevel gjør det, for ellers ville vi ikke ha iPhones og annen moderne elektronikk, som opererer i ekstremt små skalaer og utnytter en rekke kvantemønstre som dette. Einstein tilbrakte resten av sitt liv og prøvde å bevise at kvante-rarheten han oppdaget ikke var noe, uten hell. Og det er derfor han ikke får æren for det. Men ja, han publiserte tre artikler samtidig — en var et bevis på eksistensen av atomer, den andre var relativitet, og den tredje handlet om svart kroppsstråling, som er et kvantemekanisk fenomen.
for å lese litt mer om hvorfor denne spesifikke kvanteatferden skjer, se README.md fil av eksempelprogrammet.
En Q# Kvanteoperasjon
her er et eksempel på en kvanteoperasjon skrevet I Q#, tatt fra eksempelprogrammet koblet over:
operation CoinFlip (count: Int) : (Int, Int)
{
body
{
mutable numOnes = 0;
mutable numZeros = 0; // Get a Qubit in Zero state
using (qubit = Qubit) { for (test in 1..count) {
// Set is an operation defined elsewhere
Set (Zero, qubit); // Send the qubit through a Hadamard quantum logic gate
H(qubit); // Measure the value of the q-bit
let state = M(qubit); if (state == Zero) {
set numZeros = numZeros + 1;
}
if (state == One) {
set numOnes = numOnes + 1;
}
}
ResetAll(qubit); // Reset the qubit
}
return (numZeros, numOnes);
}}
Q# Language Design
Q# henter inspirasjon Fra F# som et funksjonelt språk (kompilatoren / parseren er skrevet I F#), C# for syntaks, og trekker noen ideer fra Python (spesielt for in
).
det er et statsløst språk — det er ingen måte å holde tilstand mellom kvanteoperasjoner, og måling av tilstand for å returnere en verdi fra en operasjon kollapser kvantestaten til en enkelt reell tilstand. Den har ingen variabler, men bruker binding av konstante uforanderlige.
Typer Er Tuppelbaserte, med vilkårlig aritet. Den har Ikke-karri Delvis applikasjonsstøtte, Og Har Generikk og Funktorer. Functors tillate sekvenser av operasjoner som skal uttrykkes og begrunnet over.
q # kompilatoren kan gjøre hele programanalyse og grunn over koden for å gjøre optimaliseringer før du sender operasjonene til kvantecomputeren. Dette er viktig på grunn av driftskostnadene, spesielt gitt den lille tiden som qubit-staten er sammenhengende med nåværende og sannsynlige (kortsiktige) fremtidige kvante datamaskiner.
Hvilke Problemer Kan Kvante Datamaskiner Løse?
Klassiske datamaskiner bruker biter som kan ha en av to tilstander-en eller null. Quantum computer bits, eller qubits, har bare en av de to statene når du ser på dem, men inne i kvantecomputeren kan de ha probabilistiske tilstander. Med dette kan de modellere mange stater-spesielt probabilistiske tilstandsbølgeformer av partikler. Hvordan gjør du nyttige beregninger med dette? Vel, det er bra for modellering av fysiske systemer.
i 1911 fant vi ut hvordan man lager ammoniakk. Det krever oppvarming Av Nitrogen til 5000 grader og komprimering til 50 atmosfærer. Denne ammoniakken brukes til krutt og gjødsel, og denne gjødselen tillot Den Grønne Revolusjonen på 60-tallet som tillot oss å doble den globale menneskelige befolkningen. 4% av det globale energibudsjettet går til produksjon av ammoniakk.
Nitrogenase er et enzym i en bakterie som lever i parasittiske knuter på røttene av bønner. Når du vokser bønner i et felt, løser dette enzymet Nitrogen Fra atmosfæren i bakken, og befrukter jorda. Så bønder roterer avlinger-voksende hvete, deretter bønner, deretter hvete-for å holde jorden fruktbar.
for å forstå hvordan man produserer ammoniakk slik bakteriene gjør — ved romtemperatur ved BRUK AV H2O + N fra atmosfæren — krever det å løse samspillet mellom 170 elektroner. Nitrogenase har to overgangsmetaller som fungerer som katalysatorer: jern og molybden. Det betyr at vi trenger 21 unsed⁰ komplekse tall for å modellere bølgeformer av elektronene. Det er bare 21 sign⁰ atomer på Jorden – så du trenger 1.000.000 Jordarter bare for å lagre problemdefinisjonen.
en kvantecomputer med 200 qubits kan modellere at mange stater.
med den datamaskinen kan vi kjøre simuleringene for å forstå hvordan du gjør det som bakteriene gjør. Det vil være ytterligere engineering når vi har løsningen for å bygge noe som kan gjøre det-akkurat som nye legemiddelforbindelser må produseres. Og når det er gjort, vil landbruksproduksjonen av landbruket bli betydelig høyere.
Quantum Computer Construction
i en kvantecomputer er det to komponenter til en qubit – en fysisk komponent som holder kvantetilstanden, og en komponent som utfører operasjoner på den fysiske komponenten.
en qubit — i hvert fall slik vi nærmer oss det nå — opererer på 15 milliKelvin. Flytende Helium er 4 Kelvin.
modellen for kvantemåling er en generalisering av klassisk databehandling. Det er matematisk Lineær algebra. Matematisk er en qubit en vektor i et høydimensjonalt lineært rom (Et Hilbert-rom).
du kan ikke observere qubit i det rommet, men du kan operere på det ved å be systemet om å bruke rotasjonsoversettelser til det.
Nåværende kvante datamaskiner er i stand til å generere en fysisk qubit i 10^-6 sekunder. Etter den perioden faller det, så feilkorreksjon er nødvendig.
det er to modeller Av Quantum computing:
- porten modell-tid utviklingen av quantum tilstand ved hjelp av matrise multiplikasjon. Dette er modellen Som Q # bruker.
- Quantum annealing-finne den laveste energitilstanden som løser et problem. DWave-datamaskinen bruker denne metoden.
Klassisk databehandling er et spesielt tilfelle av kvantemåling. Så utviklingen og funnene i kvantemåling forårsaker innsikt i klassisk databehandling.
Quantum Computing Impacts
overskriften plakat barn Av Quantum Computing sannsynlig fremtidig innvirkning er å kunne bryte gjeldende kryptering ordninger. Det er imidlertid sannsynlig å være mange flere effektive endringer før da.
Breaking moderne kryptografi vil kreve kvante datamaskiner med 5000 qubits.
Microsoft ruller allerede ut post-quantum-computing-resistent kryptering-inkludert gitterbasert kryptografi. Moderne kryptografi er basert på factoring store primtall-klassisk dyrt å løse, men trivielt for kvante datamaskiner.
NISQC er «Støyende Mellomliggende Skala Quantum Computing». Noen mennesker utvikler datamaskiner som har et stort antall støyende qubits. MS gjør ikke dette. De jobber med å få sin første «topologiske qubit» — en qubit som er motstandsdyktig mot dekoherens. Det vil være mer beregningsmessig relevant. De er på vei til å få det i år. John håper at i hans levetid ser vi 1000-1000 000 qubits på en wafer på 15milliKelvin.
når vi får kvante datamaskiner på nettet, er en av tingene de vil hjelpe oss med å gjøre, modell fysiske systemer som vi kan bruke til å lage mer effektive kvante datamaskiner.
Løse problemer som Nitrogenase, eller hvordan Klorofyll fanger CO2 FRA atmosfæren og gjør det til karbohydrater-reversere Drivhuseffekten og tillater oss å lage mat ut av tynn luft (og solskinn) — er nærmere i horisonten og vil ha stor innvirkning — som vil bruke kvante datamaskiner til å utvikle superledere.
og de vil også låse opp problemer og muligheter som vi ikke engang vurderer akkurat nå. Einstein tenkte ikke på iPhone eller Internett da han publiserte sin artikkel om svart kroppsstråling.
Vi lever i fremtiden akkurat nå.
for et par flotte bøker som introduserer Kvantfysikk uten mye matte, anbefaler jeg:
«På Jakt Etter Schrodinger Katt: Quantum Physics And Reality» – en populær historie om Utviklingen Av Kvantemekanikk, sporing utviklingen av tanke og oppdagelse gjennom det 20. århundre.
«The Fabric Of Reality-Vitenskapen Om Parallelle Universer, og Dens Implikasjoner» — En bok Av David Deutsch, en pioner Innen Kvantemåling. Denne boken starter med vitenskapsfilosofien (spesielt dens epistemologi), og fortsetter å undersøke noen av de filosofiske implikasjonene av kvantemekanikk.
hvis du vil komme rett inn i det, sjekk ut «Quantum Computing For Computer Scientists». Dette er Boken Som John anbefaler.
det er kjent teknikk i dette rommet — for Eksempel Quipper, som er implementert I Haskell. Q# kommer imidlertid i En Quantum Computing SDK som inkluderer en 3-qubit lokal simulator og tilgang til en 40-qubit skybasert simulator. IBM har OpenQASM-et quantum assembly programmeringsspråk, som har En Ripe-lignende visuell editor og en skybasert (ekte) kvantedatamaskinplattform. Q# er et språk på høyere nivå med typer og kontrollflyt.