A differenza dei computer tradizionali che utilizzano i bit, i computer quantistici utilizzano i qubit per codificare le informazioni come zeri o uno, o entrambi contemporaneamente.
Insieme a un cocktail di forze della fisica quantistica, queste macchine delle dimensioni di un frigorifero possono elaborare un sacco di informazioni, ma sono tutt’altro che impeccabili. Proprio come i nostri normali computer, abbiamo bisogno dei giusti linguaggi di programmazione per calcolare correttamente sui computer quantistici.
La programmazione di computer quantistici
La programmazione di computer quantistici richiede la consapevolezza di qualcosa chiamato “entanglement”, un moltiplicatore computazionale per una sorta di qubit, che si traduce in molta potenza. Quando due qubit sono intrecciati, le azioni su un qubit possono cambiare il valore dell’altro anche quando sono fisicamente separati, dando origine alla caratterizzazione di Einstein di “azione spettrale a distanza”. Ma quella potenza è in parti uguali una fonte di debolezza.
Durante la programmazione, scartare un qubit senza essere consapevoli del suo intreccio con un altro qubit può distruggere i dati memorizzati nell’altro, mettendo a repentaglio la correttezza del programma.
Gli scienziati del Computer Science and Artificial Intelligence (CSAIL) del MIT miravano a fare un po’ di disfacimento creando il proprio linguaggio di programmazione per l’informatica quantistica chiamato Twist.
Twist può descrivere e verificare quali dati sono impigliati in un programma quantistico, attraverso un linguaggio comprensibile a un programmatore classico. Il linguaggio utilizza un concetto chiamato purezza, che impone l’assenza di entanglement e si traduce in programmi più intuitivi, idealmente con meno bug. Ad esempio, un programmatore può usare Twist per dire che i dati temporanei generati come spazzatura da un programma non sono intrecciati con la risposta del programma, rendendoli sicuri da buttare via.
Mentre il campo nascente può sembrare un po’ appariscente e futuristico, con immagini di gigantesche macchine d’oro filiformi che vengono in mente, i computer quantistici hanno il potenziale per scoperte computazionali in compiti classicamente irrisolvibili, come protocolli crittografici e di comunicazione, ricerca, fisica e chimica computazionale. Una delle sfide chiave nelle scienze computazionali è affrontare la complessità del problema e la quantità di calcolo necessaria.
Mentre un computer digitale classico avrebbe bisogno di un numero esponenziale molto grande di bit per essere in grado di elaborare una tale simulazione, un computer quantistico potrebbe farlo, potenzialmente, utilizzando un numero molto piccolo di qubit, se ci sono i programmi giusti.
“Il nostro linguaggio Twist consente a uno sviluppatore di scrivere programmi quantistici più sicuri affermando esplicitamente quando un qubit non deve essere intrecciato con un altro”, ha affermato lo studente di dottorato del MIT Charles Yuan, autore principale di un articolo su Twist.
“Poiché la comprensione dei programmi quantistici richiede la comprensione dell’entanglement, speriamo che Twist apra la strada a linguaggi che rendano le sfide uniche dell’informatica quantistica più accessibili ai programmatori”.
Districare il groviglio quantistico
Immagina una scatola di legno con mille cavi che sporgono da un lato. Puoi estrarre qualsiasi cavo dalla scatola o spingerlo fino in fondo.
Dopo aver eseguito questa operazione per un po’, i cavi formano uno schema di bit, zero e uno, a seconda che si trovino dentro o fuori. Questa scatola rappresenta la memoria di un computer classico. Un programma per questo computer è una sequenza di istruzioni su quando e come tirare i cavi.
Ora immagina una seconda scatola dall’aspetto identico. Questa volta, tiri un cavo e vedi che mentre emerge, un paio di altri cavi vengono tirati all’interno. Chiaramente, all’interno della scatola, questi cavi sono in qualche modo aggrovigliati tra loro.
La seconda casella è un’analogia per un computer quantistico e la comprensione del significato di un programma quantistico richiede la comprensione dell’entanglement presente nei suoi dati. Ma rilevare l’entanglement non è semplice. Non riesci a vedere all’interno della scatola di legno, quindi il meglio che puoi fare è provare a tirare i cavi e ragionare attentamente su quali sono aggrovigliati. Allo stesso modo, i programmatori quantistici oggi devono ragionare manualmente sull’entanglement. È qui che il design di Twist aiuta a massaggiare alcuni di quei pezzi intrecciati.
Gli scienziati hanno progettato Twist in modo che fosse sufficientemente espressivo da scrivere programmi per noti algoritmi quantistici e identificare i bug nelle loro implementazioni. Per valutare il design di Twist, hanno modificato i programmi per introdurre una sorta di bug che sarebbe stato relativamente sottile da rilevare per un programmatore umano e hanno dimostrato che Twist potrebbe identificare automaticamente i bug e rifiutare i programmi.
Hanno anche misurato il rendimento pratico dei programmi in termini di runtime, che aveva un sovraccarico inferiore al quattro percento rispetto alle tecniche di programmazione quantistica esistenti.
I computer quantistici saranno in grado di raggiungere le loro promesse di prestazioni?
Per coloro che sono diffidenti nei confronti della reputazione “squallida” del quantistico nel suo potenziale di infrangere i sistemi di crittografia, Yuan afferma che non è ancora molto noto fino a che punto i computer quantistici saranno effettivamente in grado di raggiungere le loro promesse di prestazioni nella pratica.
“C’è molta ricerca in corso nella crittografia post-quantistica, che esiste perché anche il calcolo quantistico non è onnipotente. Finora, c’è un insieme molto specifico di applicazioni in cui le persone hanno sviluppato algoritmi e tecniche in cui un computer quantistico può superano i computer classici.”
Un passo successivo importante è l’utilizzo di Twist per creare linguaggi di programmazione quantistica di livello superiore. La maggior parte dei linguaggi di programmazione quantistica oggi assomiglia ancora al linguaggio assembly, mettendo insieme operazioni di basso livello, senza consapevolezza verso cose come tipi di dati e funzioni e ciò che è tipico nell’ingegneria del software classica.
“I computer quantistici sono soggetti a errori e difficili da programmare. Introducendo e ragionando sulla purezza del codice di programma, Twist compie un grande passo verso la semplificazione della programmazione quantistica, garantendo che i bit quantistici in un puro pezzo di codice non possano essere alterati per bit non in quel codice”,ha affermato Fred Chong, Seymour Goodman Professor of Computer Science presso l’Università di Chicago e Chief Scientist presso Super.tech.