Parlavamo di Quantum Computing - sicurezza della Blockchain e siamo finiti sul tema Q# (nominato Q Sharp), un linguaggio di programmazione nato per "lavorare con algoritmi quantistici".
In breve: ho fatto qualche ricerca, anche qualche prova nonostante i numerosi ostacoli che poi spiego e infine sono arrivato alla conclusione che consiglio vivamente delle alternative a Q#.
Vediamo gli aspetti principali:
- Q Sharp è fortemente incentrato in ambiente Microsoft, quindi Windows, essendo stato sviluppato dalla stessa Microsoft (analogamente a C# ma ancora peggio essendo meno diffuso e quindi con meno soluzioni alternative); non a caso si trovano tutte le guide per Visual Studio Code
- procedura di installazione su Linux molto complessa, problemi di dipendenze, pacchetti non aggiornati da sostituire ecc (nessuna delle guide che ho trovato funziona dall'inizio alla fine, occorrono sempre "aggiustamenti")
- procedura più semplice se si installa l'ambiente integrato Anaconda di Python, che tuttavia sconsiglio salvo usi specifici, per il semplice fatto che è inutile e inefficiente caricare 1000 librerie se poi nella pratica dobbiamo scrivere un Hello World o poco più!
L'eventuale unione Python - Qsharp porterebbe quindi ad un compromesso, integrazione fra Python e Q#. In pratica in ambiente Linux abbiamo come vantaggio solamente l'uso di librerie e funzioni già predisposte per Qsharp, dato che è nato per questo scopo. Altrimenti a questo punto, tanto vale usare Python!
Infatti Q# non è l'unica soluzione per lavorare con algoritmi di meccanica quantistica, esiste la libreria Qiskit, "Open-Source Quantum Development" (sito ufficiale qiskit.org), che funziona con le versioni Python 3.7+.
Installazione semplicissima:
pip install qiskit
Qiskit è composto da più elementi, pacchetti, contenenti funzioni specifiche in base all'ambito. Secondo Wikipedia:
- Qiskit Terra
- Qiskit Aer
- Qiskit Ignis
- Qiskit Aqua
- Qiskit Optimization
- Qiskit Finance
- Qiskit Machine Learning
- Qiskit Nature
Le applicazioni di ricerca di Qiskit vanno dalle procedure di ottimizzazione di algoritmi, finanza, machine learning e IA, chimica.
Eventualmente interessante il funzionamento abbinato alla libreria Matplotlib di Python, per poter creare un risultato grafico con estrema semplicità:
pip install matplotlib
Quindi in definitva, lavorando con Python e partendo da questi template e funzioni di base, si può creare qualunque algoritmo, conoscendo la materia (ovviamente è questo il punto ahah).
Infine una rappresentazione con Qiskit:
