SlideShare a Scribd company logo
1 of 51
1
Più Qubit per tutti!
Dal Quantum Computing al linguaggio Q#
@cloudgen_verona
#CodeGen
#dotnetconf
3
Main sponsor
4
Community sponsors
5
6
Chi sono
Roberto Albano @dancerjude
• Dev (+ varie cose a contorno)
• Fondatore di dotNET{podcast}
• Senior Technical Analyst @ KPMG
• Consumatore di grappa barricata
(rigorosamente dopo un buon pasto)
7
Agenda
• Cos’è il Quantum Computing
• Cos’è un Qubit
• Microsoft Quantum Development Kit
• Il linguaggio Q#
8
Disclaimer!
• Non sono un fisico
• Non sono un matematico
• Vi spiegherò quello che ho capito
• Ve lo spiegherò come l’ho capito
• Non sparate sul pianista
9
Cos’è il Quantum Computing
10
Cos’è il Quantum Computing
Classical Computing
• Elaborazione
• Algoritmi «classici»
Quantum Computing
• Elaborazione simultanea
• Algoritmi «quantistici»
11
Cos’è il Quantum Computing
Classical Computing
• elaborazione sequenziale
• basati sui bit (binary digit, 0 / 1)
• codice binario
• i computer sono «sistemi binari»
• le informazioni sono organizzate in «registri»
(32/64 bit in base all’architettura)
• logica booleana (NOT, AND, OR, NAND, NOR, XOR…)
12
Cos’è il Quantum Computing
Quantum Computing
• elaborazione simultanea
• basati sui qubit (quantum bit, 0 / 1 / 0&1)
• codice binario
• i computer quantistici sono «sistemi binari»
• le informazioni possono organizzate in «registri»
• logica booleana (NOT, AND, OR, NAND, NOR, XOR…)
13
Perché c’è bisogno del Quantum Computing
Pro e contro del Quantum Computing
• capacità di calcolo esponenzialmente superiori
• «dramatically improvement» nell’esecuzione di algoritmi
«classici» in ambiente «quantico»
• tutti gli ambiti possono essere impattati positivamente
(economia, finanza, medicina, ricerca…)
• gli algoritmi di cifratura considerati oggi «a prova di
hacker» saranno tutti seriamente a rischio
Cos’è il Quantum Computing
14
Perché c’è bisogno del Quantum ComputingQuali sono i campi di applicazione
Cos’è il Quantum Computing
chimica
clima
salute
machine learning
materiali
AI
… e tanti, tanti altri…
15
Come sono fatti i computer quantisticiCome sono fatti i computer
quantistici
• assomigliano a piccole centrali
nucleari
• per il corretto funzionamento
devono operare a temperature
bassissime
• si tratta di una tecnologia ancora
in via di sviluppo
• lo scopo futuro è realizzare il
«backend» dei nostri servizi su
computer quantistici
Cos’è il Quantum Computing
16
Chi ha (costruito / sta costruendo) un computer quantistico
• IBM
• Google
• Intel
• NASA
• Microsoft
=> 20 qubit (50 qubit in costruzione)
=> 50 qubit (in costruzione)
=> 49 qubit (annunciato a CES2018)
=> 1097 qubit (avete capito bene)
=> ?
(si tratta comunque in alcuni casi di tecnologie differenti e lo
standard è ancora in fase di definizione)
Cos’è il Quantum Computing
Chi ha costruito (o sta costruendo) un computer quantistico
17
Chi ha (costruito / sta costruendo) un computer quantistico
Si tratta di una tecnologia nata con lo scopo di avere una sorta di «qubit scalabili»
Cos’è il Quantum Computing
Microsoft Topological Qubit (https://cloudblogs.microsoft.com/quantum/)
18
Chi ha (costruito / sta costruendo) un computer quantistico
• Teoria e simulazione (prototipazione)
• Fabbricazione (tecniche pioneristiche di costruzione)
• Miglioramento dei materiali (sviluppo)
• Misurazione (accuratezza e precisione)
Cos’è il Quantum Computing
Microsoft Topological Qubit (https://cloudblogs.microsoft.com/quantum/)
19
Cos’è un Qubit
quantum bit => qubit
bit => 0 o 1
qubit => 0 o 1 o (0 e 1)
stato «fondamentale» (0)
stato «eccitato» (1)
quindi si tratta ancora di un sistema binario…
…o forse no…
20
Cos’è un Qubit
• il concetto di qubit si basa sulla meccanica
quantistica
• può presentare una «sovrapposizione
coerente di stati»
• quindi può essere nello stesso momento sia
0 che 1
• un qubit può essere rappresentato anche
attraverso l’uso di un solo atomo
21
Cos’è un Qubit
bit vs qubit
registro a 3 bit => 1) valore 0 0|0|0
2) valore 1 0|0|1
3) valore 2 0|1|0
4) valore 3 0|1|1
5) valore 4 1|0|0
6) valore 5 1|0|1
7) valore 6 1|1|0
8) valore 7 1|1|1
il registro a 3 bit può contenere uno ed uno solo degli 8 valori possibili
22
Cos’è un Qubit
bit vs qubit
registro a 3 qubit => 1) valore 0 0|0|0
2) valore 1 0|0|1
3) valore 2 0|1|0
4) valore 3 0|1|1
5) valore 4 1|0|0
6) valore 5 1|0|1
7) valore 6 1|1|0
8) valore 7 1|1|1
il registro a 3 qubit può contenere anche tutti gli 8 valori possibili
contemporaneamente
23
Cos’è un Qubit
Fenomeni della meccanica quantistica:
• sovrapposizione coerente di stati (superposition)
• interferenza quantistica
• correlazione quantistica (entanglement)
• principio di indeterminazione di Heisenberg
24
• non è facile «immaginare» questa situazione
• si tratta di una condizione «estranea» alla nostra
capacità cognitiva
• si può trovare «contemporaneamente» negli stati
quantistici |0> e |1> «con pesi diversi»
• non si tratta di un ulteriore «stato 2»
|> = |0> + |1>
(dove  e  sono coefficienti complessi)
Superposition
Cos’è un Qubit
25
• «trasferire» la sovrapposizione
di stati ad un oggetto
macroscopico può
potenzialmente portare ad un
paradosso
• il gatto si trova rinchiuso in una
scatola dove vi è una condizione
«parimenti probabile» che
possa essere avvelenato
• La funzione  dell'intero
sistema porta ad affermare che
in essa il gatto vivo e il gatto
morto non sono degli stati puri,
ma miscelati con uguale peso
Paradosso del gatto di Schrödinger
Cos’è un Qubit
26
• fenomeno quantistico senza corrispondente «classico»
• due qubit o più qubit possono stabilire una relazione
«entangled» (record cinese: 18 qubit «entangled»)
• la misurazione di un qubit entangled influenza la misurazione del
qubit con cui si relaziona
• la relazione è (teoricamente) stabilita senza limiti di distanza
• quindi i qubit «entangled» si influenzano a vicenda
Entanglement
Cos’è un Qubit
27
Superposition, Entanglement…
Cos’è un Qubit
28
«If you think you understand quantum mechanics,
you don't understand quantum mechanics.»
Richard Feynman
Premio Nobel per la fisica nel 1965
per l'elaborazione dell'elettrodinamica quantistica.
«Cit.»
29
Microsoft Quantum Development Kit
Da dove partire?
microsoft.com/quantum
docs.microsoft.com/quantum (documentation)
github.com/Microsoft/Quantum (QDK samples and libraries)
• Windows 10
• Visual Studio 2017
• Windows + Linux + macOS
• Visual Studio Code
• Command Line
30
Microsoft Quantum Development Kit
The «Big Picture»: un sistema completo e scalabile
Quantum computer
Sistemi di controllo criogenico
Applicazioni e Software
31
Microsoft Quantum Development Kit
Applicazioni e Software
Classical Host Program
Q# Code
Quantum Algotithm Libraries
Classical Runtime
Local Simulator Azure Simulator
Cryo-Control
Quantum Computer
32
Microsoft Quantum Development Kit
Installazione in Visual Studio 2017
Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=quantum.DevKit
33
Microsoft Quantum Development Kit
Installazione in Visual Studio Code e/o Command Line
• installare il .NET Core SDK 2.0 o versione successive
https://www.microsoft.com/net/download
• installare i template aggiornati per la creazione di applicazioni o librerie Q#
utilizzando da PowerShell o Bash il comando:
dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2.1809.701-preview"
• installare (o meno Visual Studio Code)
https://code.visualstudio.com/
• clonare il Microsoft Quantum Development Kit da GitHub:
git clone https://github.com/Microsoft/Quantum.git
34
Microsoft Quantum Development Kit
Cosa possiamo fare con il QDK?
• Creare esperimenti quantistici
• Far girare su computer «classici» operazioni
quantistiche
• Agire come un «coprocessore» dedicato
• Il codice Q# gira «internamente» al codice C#
35
Microsoft Quantum Development Kit
Livelli di utilizzo della computazione quantistica:
• La computazione classica usa la computazione quantistica
internamente per le elaborazioni
• La computazione quantistica avviene su computer quantistici
• La computazione quantistica usa la computazione classica
internamente per le elaborazioni
36
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: i tipi
Tipo Descrizione
Int intero a 64 bit
Double doppia precisione
Bool booleano
Qubit qubit
String stringa
Pauli (+ PauliI, PauliX, PauliY, PauliZ) matrice di Pauli
Result risultato della misurazione, valore One o Zero
String stringa
Range sequenza di interi
37
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: gli array
Tipo Descrizione
‘T[] Array di oggetti di tipo ‘T
‘T[][] Array di array di oggetti di tipo ‘T
• In Q# gli array non sono supportate matrici «rettangolari»
38
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: le tuple
Tipo Descrizione
(‘T1,‘T2,‘T3,…) Tupla di oggetti di tipo ‘T1,‘T2,‘T3,…
() Tupla «vuota»
• In Q# si possono creare array di tuple, ma anche tuple di array
• Sono ammesse anche tuple di tuple
• Una volta creata una tupla, il suo contenuto non può essere più variato
(«immutabilità»)
39
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: singleton tuple equivalence
• Una tupla con un singolo elemento viene chiamata singleton
• Il linguaggio Q# tratta la tupla come il valore corrispondente
del suo tipo, ad esempio:
• (5) == 5
• (2)+1 == 3
• (8)+(1) == 9
• Questa caratteristica viene detta singleton tuple equivalence
• Può essere usata nelle assegnazioni e nelle espressioni
40
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: user-defined types
• Si possono derivare nuovi tipi derivati da tipi esistenti o da tuple:
• newtype TypeA = (Int, TypeB);
• newtype TypeB = (Double, TypeC);
• newtype TypeC = (TypeA, Range);
• La «mutabilità» di un tipo derivato dipende da quella del tipo base
• Non si possono creare strutture ricorsive
41
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: alcune porte logiche
Porta Descrizione
H applica la trasformazione di Hadamard ad un singolo qubit
I esegue l’operazione di identity su un singolo qubit (no-op)
M misura di un singolo qubit (utilizzando la matrice PauliZ)
R applica una rotazione su un certo asse di Pauli
X inverte lo stato di un qubit (not)
CNOT controlled NOT (xor)
42
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: le «callables»
• Operations
• sono subroutine quantistiche
• possono contenere operazioni quantistiche
• sono paragonabili ai metodi «statici» in C#
• Functions
• sono subroutine classiche
• non possono contenere operazioni quantistiche
• possono essere utilizzate all'interno di algoritmi quantistici
• non possono richiamare le Operations
• non possono istanziare qubit, ma possono riceverli come parametro
43
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: le «callables»
• Le Operations e le Functions devono avere sempre un solo
input e un solo output
• Possono usare come input e/o output le tuple, anche vuote
• Operations ('Tinput => 'Tresult)
• Functions ('Tinput -> 'Tresult)
Quantum algorithm Classical code
Operation
Function
44
Specifiche linguaggio Q#: Functors
• Si tratta di factory che definiscono una nuova Operation a partire
da una esistente
• In Q# esistono due Functor standard:
• Adjoint
• Controlled
• Applicando un Adjoint all’operazione Y, si ottiene una nuova
operazione (Adjoint Y)
• Un esempio: (Qubit => () : Adjoint, Controlled)
Microsoft Quantum Development Kit
45
Specifiche linguaggio Q#: Functors
• Adjoint
• può creare una nuova operation che corrisponde alla
trasposizione complessa della operation base
• Controlled
• può creare una nuova operation che consente l’applicazione
della operation base solo se i qubit di controllo sono in uno
specifico stato
Microsoft Quantum Development Kit
46
Microsoft Quantum Development Kit
Specifiche linguaggio Q#: le librerie standard
• Prelude
• operazioni e funzioni definite in base al sistema di destinazione
• sistemi diversi possono avere implementazioni specifiche
• utilizza il codice nativo .NET
• Canon
• operazioni e funzioni definite sulla base del Prelude
• le implementazioni sono le stesse indipendentemente dalle macchine di
destinazione
47
Quantum Simulator
• Esegue localmente una quantità ridotta di Qubit
• Esegue in cloud una versione con più Qubit
• Richiede grandi quantità di memoria
 32 qubits => 32GB di RAM
 33 qubits => 64GB di RAM
 34 qubits => 128GB di RAM
 …
 40 qubits =>
• Simile al simulatore LIQ𝑈𝑖|〉 sviluppato da Microsoft Research
http://stationq.github.io/Liquid/
Microsoft Quantum Development Kit
Demo
Q#
49
Link utili
• microsoft.com/quantum
• docs.microsoft.com/quantum
• cloudblogs.microsoft.com/quantum
• github.com/Microsoft/Quantum
• github.com/Microsoft/QuantumKatas
• tio.run/#qs-core
50
«I computer sono incredibilmente veloci, accurati e stupidi.
Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
L'insieme dei due costituisce una forza incalcolabile.»
Albert Einstein
«Cit.»
51
Grazie
…per non aver sparato sul pianista :-D
Più Qubit per
Tutti!
Vi prometto 1000 Qubit per
ogni nuovo nato!
Basta con i Qubit
comunisti!

More Related Content

Similar to Codegen2018 Quantum Computing

Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge deviceAlessio Biasiutti
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceAlessio Biasiutti
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerMarco Parenzan
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Riccardo Zamana
 
Power point cirone
Power point cironePower point cirone
Power point cironechiaracirone
 
Supremazia quantistica di Google: Mito o realtà?
Supremazia quantistica di Google: Mito o realtà?Supremazia quantistica di Google: Mito o realtà?
Supremazia quantistica di Google: Mito o realtà?Fausto Intilla
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013Myti S.r.l.
 
Industrial Iot - IotSaturday
Industrial Iot - IotSaturday Industrial Iot - IotSaturday
Industrial Iot - IotSaturday Riccardo Zamana
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetesdotnetcode
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 

Similar to Codegen2018 Quantum Computing (20)

Custom vision on edge device
Custom vision on edge deviceCustom vision on edge device
Custom vision on edge device
 
IoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge deviceIoT Saturday 2019 - Custom Vision on Edge device
IoT Saturday 2019 - Custom Vision on Edge device
 
OrientDB & Big Data
OrientDB & Big DataOrientDB & Big Data
OrientDB & Big Data
 
Dynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed ProgrammerDynamic Language Programming For The Statically Typed Programmer
Dynamic Language Programming For The Statically Typed Programmer
 
Computer quantico
Computer quantico Computer quantico
Computer quantico
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti
 
Power point cirone
Power point cironePower point cirone
Power point cirone
 
Qu bit
Qu bitQu bit
Qu bit
 
Supremazia quantistica di Google: Mito o realtà?
Supremazia quantistica di Google: Mito o realtà?Supremazia quantistica di Google: Mito o realtà?
Supremazia quantistica di Google: Mito o realtà?
 
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
No sql introduzione. Corso Sistemi Informativi Politecnico di Milano 12-11-2013
 
Industrial Iot - IotSaturday
Industrial Iot - IotSaturday Industrial Iot - IotSaturday
Industrial Iot - IotSaturday
 
Qbit
QbitQbit
Qbit
 
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
 
Mobile e Smart Client
Mobile e Smart ClientMobile e Smart Client
Mobile e Smart Client
 
Meetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e KubernetesMeetup ASP.NET Core e Kubernetes
Meetup ASP.NET Core e Kubernetes
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
Kubernetes Core Concepts
Kubernetes Core ConceptsKubernetes Core Concepts
Kubernetes Core Concepts
 
Qubit
QubitQubit
Qubit
 

More from Roberto Albano

Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...Roberto Albano
 
Application insights-gabrome18
Application insights-gabrome18Application insights-gabrome18
Application insights-gabrome18Roberto Albano
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without controlRoberto Albano
 
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementRoberto Albano
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerRoberto Albano
 
EtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsEtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsRoberto Albano
 
Microsoft Application Insights
Microsoft Application InsightsMicrosoft Application Insights
Microsoft Application InsightsRoberto Albano
 
Pubblica la tua app sul nuovo Windows Store
Pubblica la tua app sul nuovo Windows StorePubblica la tua app sul nuovo Windows Store
Pubblica la tua app sul nuovo Windows StoreRoberto Albano
 
Introduzione a Microsoft Azure
Introduzione a Microsoft AzureIntroduzione a Microsoft Azure
Introduzione a Microsoft AzureRoberto Albano
 
Comprendere l'architettura service oriented
Comprendere l'architettura service orientedComprendere l'architettura service oriented
Comprendere l'architettura service orientedRoberto Albano
 

More from Roberto Albano (13)

Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
 
Application insights-gabrome18
Application insights-gabrome18Application insights-gabrome18
Application insights-gabrome18
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without control
 
DevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile EngagementDevOps@Work 2017 - Azure Mobile Engagement
DevOps@Work 2017 - Azure Mobile Engagement
 
DevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more powerDevOps@Work 2017 - Application insights more control, more power
DevOps@Work 2017 - Application insights more control, more power
 
EtnaDev 2016 - Application Insights
EtnaDev 2016 - Application InsightsEtnaDev 2016 - Application Insights
EtnaDev 2016 - Application Insights
 
Microsoft Application Insights
Microsoft Application InsightsMicrosoft Application Insights
Microsoft Application Insights
 
Pubblica la tua app sul nuovo Windows Store
Pubblica la tua app sul nuovo Windows StorePubblica la tua app sul nuovo Windows Store
Pubblica la tua app sul nuovo Windows Store
 
Introduzione a Microsoft Azure
Introduzione a Microsoft AzureIntroduzione a Microsoft Azure
Introduzione a Microsoft Azure
 
Comprendere l'architettura service oriented
Comprendere l'architettura service orientedComprendere l'architettura service oriented
Comprendere l'architettura service oriented
 
Architettura web
Architettura webArchitettura web
Architettura web
 
Ajax
AjaxAjax
Ajax
 
Accessibilità
AccessibilitàAccessibilità
Accessibilità
 

Codegen2018 Quantum Computing

  • 1. 1 Più Qubit per tutti! Dal Quantum Computing al linguaggio Q#
  • 5. 5
  • 6. 6 Chi sono Roberto Albano @dancerjude • Dev (+ varie cose a contorno) • Fondatore di dotNET{podcast} • Senior Technical Analyst @ KPMG • Consumatore di grappa barricata (rigorosamente dopo un buon pasto)
  • 7. 7 Agenda • Cos’è il Quantum Computing • Cos’è un Qubit • Microsoft Quantum Development Kit • Il linguaggio Q#
  • 8. 8 Disclaimer! • Non sono un fisico • Non sono un matematico • Vi spiegherò quello che ho capito • Ve lo spiegherò come l’ho capito • Non sparate sul pianista
  • 10. 10 Cos’è il Quantum Computing Classical Computing • Elaborazione • Algoritmi «classici» Quantum Computing • Elaborazione simultanea • Algoritmi «quantistici»
  • 11. 11 Cos’è il Quantum Computing Classical Computing • elaborazione sequenziale • basati sui bit (binary digit, 0 / 1) • codice binario • i computer sono «sistemi binari» • le informazioni sono organizzate in «registri» (32/64 bit in base all’architettura) • logica booleana (NOT, AND, OR, NAND, NOR, XOR…)
  • 12. 12 Cos’è il Quantum Computing Quantum Computing • elaborazione simultanea • basati sui qubit (quantum bit, 0 / 1 / 0&1) • codice binario • i computer quantistici sono «sistemi binari» • le informazioni possono organizzate in «registri» • logica booleana (NOT, AND, OR, NAND, NOR, XOR…)
  • 13. 13 Perché c’è bisogno del Quantum Computing Pro e contro del Quantum Computing • capacità di calcolo esponenzialmente superiori • «dramatically improvement» nell’esecuzione di algoritmi «classici» in ambiente «quantico» • tutti gli ambiti possono essere impattati positivamente (economia, finanza, medicina, ricerca…) • gli algoritmi di cifratura considerati oggi «a prova di hacker» saranno tutti seriamente a rischio Cos’è il Quantum Computing
  • 14. 14 Perché c’è bisogno del Quantum ComputingQuali sono i campi di applicazione Cos’è il Quantum Computing chimica clima salute machine learning materiali AI … e tanti, tanti altri…
  • 15. 15 Come sono fatti i computer quantisticiCome sono fatti i computer quantistici • assomigliano a piccole centrali nucleari • per il corretto funzionamento devono operare a temperature bassissime • si tratta di una tecnologia ancora in via di sviluppo • lo scopo futuro è realizzare il «backend» dei nostri servizi su computer quantistici Cos’è il Quantum Computing
  • 16. 16 Chi ha (costruito / sta costruendo) un computer quantistico • IBM • Google • Intel • NASA • Microsoft => 20 qubit (50 qubit in costruzione) => 50 qubit (in costruzione) => 49 qubit (annunciato a CES2018) => 1097 qubit (avete capito bene) => ? (si tratta comunque in alcuni casi di tecnologie differenti e lo standard è ancora in fase di definizione) Cos’è il Quantum Computing Chi ha costruito (o sta costruendo) un computer quantistico
  • 17. 17 Chi ha (costruito / sta costruendo) un computer quantistico Si tratta di una tecnologia nata con lo scopo di avere una sorta di «qubit scalabili» Cos’è il Quantum Computing Microsoft Topological Qubit (https://cloudblogs.microsoft.com/quantum/)
  • 18. 18 Chi ha (costruito / sta costruendo) un computer quantistico • Teoria e simulazione (prototipazione) • Fabbricazione (tecniche pioneristiche di costruzione) • Miglioramento dei materiali (sviluppo) • Misurazione (accuratezza e precisione) Cos’è il Quantum Computing Microsoft Topological Qubit (https://cloudblogs.microsoft.com/quantum/)
  • 19. 19 Cos’è un Qubit quantum bit => qubit bit => 0 o 1 qubit => 0 o 1 o (0 e 1) stato «fondamentale» (0) stato «eccitato» (1) quindi si tratta ancora di un sistema binario… …o forse no…
  • 20. 20 Cos’è un Qubit • il concetto di qubit si basa sulla meccanica quantistica • può presentare una «sovrapposizione coerente di stati» • quindi può essere nello stesso momento sia 0 che 1 • un qubit può essere rappresentato anche attraverso l’uso di un solo atomo
  • 21. 21 Cos’è un Qubit bit vs qubit registro a 3 bit => 1) valore 0 0|0|0 2) valore 1 0|0|1 3) valore 2 0|1|0 4) valore 3 0|1|1 5) valore 4 1|0|0 6) valore 5 1|0|1 7) valore 6 1|1|0 8) valore 7 1|1|1 il registro a 3 bit può contenere uno ed uno solo degli 8 valori possibili
  • 22. 22 Cos’è un Qubit bit vs qubit registro a 3 qubit => 1) valore 0 0|0|0 2) valore 1 0|0|1 3) valore 2 0|1|0 4) valore 3 0|1|1 5) valore 4 1|0|0 6) valore 5 1|0|1 7) valore 6 1|1|0 8) valore 7 1|1|1 il registro a 3 qubit può contenere anche tutti gli 8 valori possibili contemporaneamente
  • 23. 23 Cos’è un Qubit Fenomeni della meccanica quantistica: • sovrapposizione coerente di stati (superposition) • interferenza quantistica • correlazione quantistica (entanglement) • principio di indeterminazione di Heisenberg
  • 24. 24 • non è facile «immaginare» questa situazione • si tratta di una condizione «estranea» alla nostra capacità cognitiva • si può trovare «contemporaneamente» negli stati quantistici |0> e |1> «con pesi diversi» • non si tratta di un ulteriore «stato 2» |> = |0> + |1> (dove  e  sono coefficienti complessi) Superposition Cos’è un Qubit
  • 25. 25 • «trasferire» la sovrapposizione di stati ad un oggetto macroscopico può potenzialmente portare ad un paradosso • il gatto si trova rinchiuso in una scatola dove vi è una condizione «parimenti probabile» che possa essere avvelenato • La funzione  dell'intero sistema porta ad affermare che in essa il gatto vivo e il gatto morto non sono degli stati puri, ma miscelati con uguale peso Paradosso del gatto di Schrödinger Cos’è un Qubit
  • 26. 26 • fenomeno quantistico senza corrispondente «classico» • due qubit o più qubit possono stabilire una relazione «entangled» (record cinese: 18 qubit «entangled») • la misurazione di un qubit entangled influenza la misurazione del qubit con cui si relaziona • la relazione è (teoricamente) stabilita senza limiti di distanza • quindi i qubit «entangled» si influenzano a vicenda Entanglement Cos’è un Qubit
  • 28. 28 «If you think you understand quantum mechanics, you don't understand quantum mechanics.» Richard Feynman Premio Nobel per la fisica nel 1965 per l'elaborazione dell'elettrodinamica quantistica. «Cit.»
  • 29. 29 Microsoft Quantum Development Kit Da dove partire? microsoft.com/quantum docs.microsoft.com/quantum (documentation) github.com/Microsoft/Quantum (QDK samples and libraries) • Windows 10 • Visual Studio 2017 • Windows + Linux + macOS • Visual Studio Code • Command Line
  • 30. 30 Microsoft Quantum Development Kit The «Big Picture»: un sistema completo e scalabile Quantum computer Sistemi di controllo criogenico Applicazioni e Software
  • 31. 31 Microsoft Quantum Development Kit Applicazioni e Software Classical Host Program Q# Code Quantum Algotithm Libraries Classical Runtime Local Simulator Azure Simulator Cryo-Control Quantum Computer
  • 32. 32 Microsoft Quantum Development Kit Installazione in Visual Studio 2017 Visual Studio Marketplace https://marketplace.visualstudio.com/items?itemName=quantum.DevKit
  • 33. 33 Microsoft Quantum Development Kit Installazione in Visual Studio Code e/o Command Line • installare il .NET Core SDK 2.0 o versione successive https://www.microsoft.com/net/download • installare i template aggiornati per la creazione di applicazioni o librerie Q# utilizzando da PowerShell o Bash il comando: dotnet new -i "Microsoft.Quantum.ProjectTemplates::0.2.1809.701-preview" • installare (o meno Visual Studio Code) https://code.visualstudio.com/ • clonare il Microsoft Quantum Development Kit da GitHub: git clone https://github.com/Microsoft/Quantum.git
  • 34. 34 Microsoft Quantum Development Kit Cosa possiamo fare con il QDK? • Creare esperimenti quantistici • Far girare su computer «classici» operazioni quantistiche • Agire come un «coprocessore» dedicato • Il codice Q# gira «internamente» al codice C#
  • 35. 35 Microsoft Quantum Development Kit Livelli di utilizzo della computazione quantistica: • La computazione classica usa la computazione quantistica internamente per le elaborazioni • La computazione quantistica avviene su computer quantistici • La computazione quantistica usa la computazione classica internamente per le elaborazioni
  • 36. 36 Microsoft Quantum Development Kit Specifiche linguaggio Q#: i tipi Tipo Descrizione Int intero a 64 bit Double doppia precisione Bool booleano Qubit qubit String stringa Pauli (+ PauliI, PauliX, PauliY, PauliZ) matrice di Pauli Result risultato della misurazione, valore One o Zero String stringa Range sequenza di interi
  • 37. 37 Microsoft Quantum Development Kit Specifiche linguaggio Q#: gli array Tipo Descrizione ‘T[] Array di oggetti di tipo ‘T ‘T[][] Array di array di oggetti di tipo ‘T • In Q# gli array non sono supportate matrici «rettangolari»
  • 38. 38 Microsoft Quantum Development Kit Specifiche linguaggio Q#: le tuple Tipo Descrizione (‘T1,‘T2,‘T3,…) Tupla di oggetti di tipo ‘T1,‘T2,‘T3,… () Tupla «vuota» • In Q# si possono creare array di tuple, ma anche tuple di array • Sono ammesse anche tuple di tuple • Una volta creata una tupla, il suo contenuto non può essere più variato («immutabilità»)
  • 39. 39 Microsoft Quantum Development Kit Specifiche linguaggio Q#: singleton tuple equivalence • Una tupla con un singolo elemento viene chiamata singleton • Il linguaggio Q# tratta la tupla come il valore corrispondente del suo tipo, ad esempio: • (5) == 5 • (2)+1 == 3 • (8)+(1) == 9 • Questa caratteristica viene detta singleton tuple equivalence • Può essere usata nelle assegnazioni e nelle espressioni
  • 40. 40 Microsoft Quantum Development Kit Specifiche linguaggio Q#: user-defined types • Si possono derivare nuovi tipi derivati da tipi esistenti o da tuple: • newtype TypeA = (Int, TypeB); • newtype TypeB = (Double, TypeC); • newtype TypeC = (TypeA, Range); • La «mutabilità» di un tipo derivato dipende da quella del tipo base • Non si possono creare strutture ricorsive
  • 41. 41 Microsoft Quantum Development Kit Specifiche linguaggio Q#: alcune porte logiche Porta Descrizione H applica la trasformazione di Hadamard ad un singolo qubit I esegue l’operazione di identity su un singolo qubit (no-op) M misura di un singolo qubit (utilizzando la matrice PauliZ) R applica una rotazione su un certo asse di Pauli X inverte lo stato di un qubit (not) CNOT controlled NOT (xor)
  • 42. 42 Microsoft Quantum Development Kit Specifiche linguaggio Q#: le «callables» • Operations • sono subroutine quantistiche • possono contenere operazioni quantistiche • sono paragonabili ai metodi «statici» in C# • Functions • sono subroutine classiche • non possono contenere operazioni quantistiche • possono essere utilizzate all'interno di algoritmi quantistici • non possono richiamare le Operations • non possono istanziare qubit, ma possono riceverli come parametro
  • 43. 43 Microsoft Quantum Development Kit Specifiche linguaggio Q#: le «callables» • Le Operations e le Functions devono avere sempre un solo input e un solo output • Possono usare come input e/o output le tuple, anche vuote • Operations ('Tinput => 'Tresult) • Functions ('Tinput -> 'Tresult) Quantum algorithm Classical code Operation Function
  • 44. 44 Specifiche linguaggio Q#: Functors • Si tratta di factory che definiscono una nuova Operation a partire da una esistente • In Q# esistono due Functor standard: • Adjoint • Controlled • Applicando un Adjoint all’operazione Y, si ottiene una nuova operazione (Adjoint Y) • Un esempio: (Qubit => () : Adjoint, Controlled) Microsoft Quantum Development Kit
  • 45. 45 Specifiche linguaggio Q#: Functors • Adjoint • può creare una nuova operation che corrisponde alla trasposizione complessa della operation base • Controlled • può creare una nuova operation che consente l’applicazione della operation base solo se i qubit di controllo sono in uno specifico stato Microsoft Quantum Development Kit
  • 46. 46 Microsoft Quantum Development Kit Specifiche linguaggio Q#: le librerie standard • Prelude • operazioni e funzioni definite in base al sistema di destinazione • sistemi diversi possono avere implementazioni specifiche • utilizza il codice nativo .NET • Canon • operazioni e funzioni definite sulla base del Prelude • le implementazioni sono le stesse indipendentemente dalle macchine di destinazione
  • 47. 47 Quantum Simulator • Esegue localmente una quantità ridotta di Qubit • Esegue in cloud una versione con più Qubit • Richiede grandi quantità di memoria  32 qubits => 32GB di RAM  33 qubits => 64GB di RAM  34 qubits => 128GB di RAM  …  40 qubits => • Simile al simulatore LIQ𝑈𝑖|〉 sviluppato da Microsoft Research http://stationq.github.io/Liquid/ Microsoft Quantum Development Kit
  • 49. 49 Link utili • microsoft.com/quantum • docs.microsoft.com/quantum • cloudblogs.microsoft.com/quantum • github.com/Microsoft/Quantum • github.com/Microsoft/QuantumKatas • tio.run/#qs-core
  • 50. 50 «I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. L'insieme dei due costituisce una forza incalcolabile.» Albert Einstein «Cit.»
  • 51. 51 Grazie …per non aver sparato sul pianista :-D Più Qubit per Tutti! Vi prometto 1000 Qubit per ogni nuovo nato! Basta con i Qubit comunisti!

Editor's Notes

  1. I bit consentono solo l’elaborazione sequenziale anche quando la velocità degli attuali calcolatori ci dà l’illusione che le elaborazioni avvengano simultaneamente
  2. I bit consentono solo l’elaborazione sequenziale anche quando la velocità degli attuali calcolatori ci dà l’illusione che le elaborazioni avvengano simultaneamente