Mon premier code sur un ordinateur quantique
Les développeurs ont oublié le silicium.
Rien à faire du jeu d'instructions du CPU. Ni du protocole d'accès au bus mémoire. Du driver du disque dur.
C'était bon pour papy quand il codait son Linux maison.
Même plus besoin de s'occuper de la gestion de la mémoire, ni des paquets de données qui arrivent en désordre sur le réseau TCP/IP.
Il faut avouer qu'en contrepartie, on se retrouve à devoir installer 35,000 dépendances pour afficher "Hello World" dans une page web avec React. Mais c'est précisément tout ce code développé par d'autres qui nous rend productif.
Imaginez le cauchemar s'il fallait revenir à l'ENIAC de 1946, occupant 170 m2 et pesant 27 tonnes. Sans compilateur, ni même d'écran, mais un mur de câbles entremêlés.
L'ordinateur quantique
C'est un peu ce que j'ai ressenti lorsque j'ai essayé de coder un "Hello World" sur l'ordinateur quantique d'IBM.
La fleur au fusil, gonflé de certitudes, confiant en mes 35 années de dev. C'est pas une machine avec un registre de 3 bits qui va m'impressionner !
J'ai vite déchanté.
Parce dans un ordinateur quantique, il n'y a plus de bits qui vaut 0 ou 1. L'information est stockée dans des qbits
("quantum bits"). Et là on s'accroche à son clavier, parce qu'un qbit
vaut à la fois 0 et 1 avec une certaine amplitude de probabilité.
Pour se représenter l'état d'un qbit
, imaginez que c'est la planète Terre. Et son état, c'est un endroit.
Par exemple Miami, en Floride.
Dans un qbit
, on peut stocker les coordonnées de n'importe quel endroit : Paris, Mexico, Tokio. Car il réalise l'incroyable prouesse de gérer 2 angles, comme la latitude et la longitude d'un lieu sur la terre.
A titre de comparaison, un malheureux bit traditionnel ne parvient qu'à gérer 2 états : 0 ou 1, (=Nord ou Sud). Ridicule.
A la fin d'un calcul sur un ordinateur quantique, on récupère quand même un résultat numérique sous la forme binaire traditionnelle de 0 et de 1. Lorsqu'on lit l'état d'un qbit
, on récupère "plutôt un zéro" si la ville est dans l'hémisphère Nord, et "plutôt un 1" dans l'hémisphère Sud.
Pourquoi "plutôt" ?
Parce que la latitude représente une probabilité. Pour Miami, à peu près à 25° nord, la probabilité de valoir 1 est de 90%. Elle serait de 100% au pôle Nord. 50% à l'équateur.
Qu'est-ce que ça permet de coder ?
On se doute que les millions de dollars investis dans le développement des ordinateurs quantiques ne servent pas qu'à faire plaisir à des physiciens dépenaillés.
L'intérêt, c'est de pouvoir coder des trucs incroyables qui vont s'exécuter beaucoup plus vite. Lorsqu'il faut 3 millions d'années à un ordinateur actuel pour casser une clé RSA de 2048 bits, ça prendra (bientôt ?) 3 minutes sur un ordinateur quantique.
Alors quand on aime coder, on a envie d'essayer.
Le problème, c'est qu'il faut jeter à la poubelle presque tout ce qu'on connaît des portes AND, OR, des contrôles de flows avec des IFs. Et ré-ouvrir ses cours de Math parce que ça pique un peu.
Mon challenge, c'est de coder un algorithme de recherche dans une table comportant 4 entrées. Seule l'une des entrées comporte la valeur "bingo", le but est de trouver laquelle.
index | valeur |
---|---|
0 | "perdu" |
1 | "perdu" |
2 | "bingo" |
3 | "perdu" |
Ok, pas le truc le plus difficile avec un ordinateur classique. Mais combien de comparaisons dois-je effectuer avant de trouver la bonne valeur ?
Supposons qu'il n'y a pas d'autres choix de que lire une à une les entrées, et de s'arrêter lorsqu'on trouve "Bingo". Avec du bol, c'est tout au début. Mais ça peut être tout à la fin. En moyenne, il faudra lire la moitié des valeurs pour trouver la réponse.
Avec un ordinateur quantique, on va aller plus vite.
L'algorithme de Grover
Grover c'est lui
Il a imaginé une façon de coder une recherche dans une base de données pour un ordinateur quantique.
Comme on a 4 entrées, on peut coder les index de 0 à 3 sur 2 bits (00, 01, 10 et 11). Et on va faire une fonction qui retourne Vrai
si on trouve "bingo" à l'index passé en paramètre. On va appeler cette fonction l'Oracle.
L'astuce consiste à utiliser 2 qbits
au lieu de 2 bits. Par la magie de la superposition d'états, notre ordinateur quantique va travailler simultanément sur les 4 possibilités.
Montre moi le code
Alors voici mon tout premier code 🎉 en assembleur pour ordinateur quantique d'IBM. J'ai codé l'oracle pour qu'il retourne vrai à l'index n°2.
Résultat : l'algo trouve l'index recherché. Et en plus on l'affiche dans une boule.
Perspectives
Oui, alors trouver un résultat qu'on connaît à l'avance, ça paraît un peu inutile.
Et bien pas du tout.
Car il existe beaucoup de cas d'usages pour lesquels on recherche LA solution parmi de très nombreuses possibilités. Pour certains problèmes d'optimisation complexes, on sait évaluer si une solution est bonne ou pas, mais on ne sais pas comment faire pour la trouver du premier coup sans tout essayer.
Exemple : comment organiser le flux logistique de 4000 bateaux pour acheminer toutes les marchandises en parcourant la + petite distance ? On ne sait pas calculer ça sans tester les innombrables combinaisons possibles les unes après les autres.
Avec un ordinateur quantique, on parvient à les tester toutes en même temps. Et ca monte vite : avec 20 qbits
, on peut tester 1 million de possibilités simultanément.
C'est la fin des boucles for
. C'est trop fort.
Pour comprendre :
- La série de vidéos "Quantum" : https://www.youtube.com/playlist?list=PLMP-9Tz3oGTYNO-ntLSYMA_wCneO8ioGF
- Le guide Learn quantum computing d'IBM : https://quantum-computing.ibm.com/composer/docs/iqx/guide
- La tech au carré de Microsoft : https://experiences.microsoft.fr/articles/cybersecurite/tech-au-carre-linformatique-quantique-naura-plus-de-secret-pour-vous/
Pour coder :
- Le composer d'IBM : https://quantum-computing.ibm.com/composer