# Programació quàntica

La programació quàntica és el procés de disseny o assemblatge de seqüències d'instruccions, anomenades circuits quàntics, utilitzant portes, interruptors i operadors per manipular un sistema quàntic per obtenir un resultat o resultats desitjats d'un experiment determinat. Els algorismes de circuit quàntic es poden implementar en circuits integrats, realitzar-se amb instrumentació o escriure en un llenguatge de programació per utilitzar-lo amb un ordinador quàntic o un processador quàntic.
Amb els sistemes basats en processadors quàntics, els llenguatges de programació quàntics ajuden a expressar algorismes quàntics mitjançant construccions d'alt nivell. El camp està profundament arrelat en la filosofia de codi obert i, com a resultat, la majoria del programari quàntic que es parla en aquest article està disponible gratuïtament com a programari de codi obert.
Els ordinadors quàntics, com els basats en el protocol KLM, un model de computació quàntica òptica lineal (LOQC), utilitzen algorismes quàntics (circuits) implementats amb electrònica, circuits integrats, instrumentació, sensors i/o per altres mitjans físics.
Altres circuits dissenyats per a l'experimentació relacionats amb sistemes quàntics poden estar basats en instrumentació i sensors.

## Conjunts d'instruccions quàntiques

Els conjunts d'instruccions quàntiques s'utilitzen per convertir algorismes de nivell superior en instruccions físiques que es poden executar en processadors quàntics. De vegades, aquestes instruccions són específiques d'una plataforma de maquinari determinada, per exemple, trampes d'ions o qubits superconductors.

### Blackbird

Blackbird és un conjunt d'instruccions quàntiques i una representació intermèdia utilitzada per Xanadu Quantum Technologies i Strawberry Fields. Està dissenyat per representar programes quàntics de variable contínua que es poden executar amb maquinari quàntic fotònic

### cQASM

cQASM, també conegut com a QASM comú, és un llenguatge d'assemblatge quàntic independent del maquinari que garanteix la interoperabilitat entre totes les eines de compilació i simulació quàntica. Va ser presentat pel QCA Lab de TUDelft.

### OpenQASM

OpenQASM és la representació intermèdia introduïda per IBM per utilitzar-la amb Qiskit i IBM Q Experience.

### Quil

Quil és una arquitectura de conjunt d'instruccions per a la informàtica quàntica que va introduir per primera vegada un model de memòria quàntica/clàssica compartida. Va ser presentat per Robert Smith, Michael Curtis i William Zeng a A Practical Quantum Instruction Set Architecture. Molts algorismes quàntics (incloent la teleportació quàntica, la correcció d'errors quàntics, la simulació, i els algorismes d'optimització) requereixen una arquitectura de memòria compartida.

## Kits de desenvolupament de programari quàntic

Els kits de desenvolupament de programari quàntic ofereixen col·leccions d'eines per crear i manipular programes quàntics. També proporcionen els mitjans per simular els programes quàntics o preparar-los per executar-los mitjançant dispositius quàntics basats en núvol i dispositius quàntics autoallotjats.

### SDK amb accés a processadors quàntics

Els kits de desenvolupament de programari següents es poden utilitzar per executar circuits quàntics en dispositius quàntics prototips, així com en simuladors.

#### Cirq

Un projecte de codi obert desenvolupat per Google, que utilitza el llenguatge de programació Python per crear i manipular circuits quàntics. Els programes escrits en Cirq es poden executar a IonQ, Pasqual, Rigetti i Alpine Quantum Technologies.

#### Classiq

Un IDE quàntic basat en núvol desenvolupat per Classiq, utilitza un llenguatge quàntic d'alt nivell, Qmod, per generar circuits quàntics escalables i eficients amb un motor de síntesi conscient del maquinari, que es pot desplegar en una àmplia gamma de QPU. La plataforma inclou una gran biblioteca d'algorismes quàntics.

#### Forest

Un projecte de codi obert desenvolupat per Rigetti, que utilitza el llenguatge de programació Python per crear i manipular circuits quàntics. Els resultats s'obtenen mitjançant simuladors o prototips de dispositius quàntics proporcionats per Rigetti. A més de la possibilitat de crear programes mitjançant operacions quàntiques bàsiques, hi ha algorismes de nivell superior disponibles dins del paquet Grove. Forest es basa en el conjunt d'instruccions Quil.

#### MindQuantum

MindQuantum és un marc de computació quàntica basat en MindSpore, centrat en la implementació d'algorismes NISQ.

#### Ocean

Un conjunt d'eines de codi obert desenvolupat per D-Wave. Escrit principalment en el llenguatge de programació Python, permet als usuaris formular problemes en els formats Ising Model i Quadratic Unconstrained Binary Optimization (QUBO). Els resultats es poden obtenir enviant-los a un ordinador quàntic en línia a Leap, l'entorn d'aplicacions quàntiques en temps real de D-Wave, màquines propietat del client o mostrejos clàssics

#### PennyLane

Una biblioteca Python de codi obert desenvolupada per Xanadu Quantum Technologies per a la programació diferenciable d'ordinadors quàntics. PennyLane ofereix als usuaris la possibilitat de crear models amb TensorFlow, NumPy o PyTorch, i connectar-los amb backends d'ordinadors quàntics disponibles a IBMQ, Google Quantum, Rigetti, Quantinuum i Alpine Quantum Technologies.

#### Perceval

Un projecte de codi obert creat per Quandela (fr) per dissenyar circuits quàntics fotònics i desenvolupar algorismes quàntics, basats en Python. Les simulacions s'executen a l'ordinador de l'usuari o al núvol. Perceval també s'utilitza per connectar-se al processador quàntic fotònic basat en núvol de Quandela.

#### Projecte Q

Un projecte de codi obert desenvolupat a l'Institut de Física Teòrica de l'ETH, que utilitza el llenguatge de programació Python per crear i manipular circuits quàntics. Els resultats s'obtenen mitjançant un simulador o enviant treballs a dispositius quàntics d'IBM.

#### Qibo

Una API full-stack de codi obert per a la simulació quàntica, el control de maquinari quàntic i el calibratge desenvolupat per diversos laboratoris de recerca, inclosos QRC, CQT i INFN. Qibo és un marc modular que inclou múltiples backends per a la simulació quàntica i el control de maquinari. Aquest projecte té com a objectiu proporcionar un marc de control de maquinari quàntic agnòstic de la plataforma amb controladors per a diversos instruments i eines per a la calibració quàntica, la caracterització i la validació. Aquest marc se centra en dispositius quàntics autoallotjats simplificant el desenvolupament de programari necessari als laboratoris.

#### Qiskit

Un projecte de codi obert desenvolupat per IBM. Els circuits quàntics es creen i manipulen amb Python. Els resultats s'obtenen mitjançant simuladors que s'executen al dispositiu propi de l'usuari, simuladors proporcionats per IBM o prototips de dispositius quàntics proporcionats per IBM. A més de la capacitat de crear programes mitjançant operacions quàntiques bàsiques, hi ha disponibles eines de nivell superior per a algorismes i benchmarking dins de paquets especialitzats. Qiskit es basa en l'estàndard OpenQASM per representar circuits quàntics. També admet el control del nivell de pols dels sistemes quàntics mitjançant l'estàndard QiskitPulse.

#### Qrisp

Qrisp és un projecte de codi obert coordinat per la Fundació Eclipse i desenvolupat en programació Python per Fraunhofer FOKUS Qrisp és un llenguatge de programació d'alt nivell per crear i compilar algorismes quàntics. El seu model de programació estructurada permet un desenvolupament i manteniment escalables. La sintaxi expressiva es basa en variables en lloc de qubits, amb la QuantumVariable com a classe bàsica, i funcions en lloc de portes. Eines addicionals, com ara un simulador de rendiment i la descomputació automàtica, complementen l'ampli marc. A més, és independent de la plataforma, ja que ofereix una compilació alternativa de funcions elementals fins al nivell de circuit, basada en conjunts de portes específics del dispositiu.

#### Kit de desenvolupament quàntic

Un projecte desenvolupat per Microsoft[1] com a part del Framework .NET. Els programes quàntics es poden escriure i executar a Visual Studio i VSCode mitjançant el llenguatge de programació quàntica Q#. Els programes desenvolupats al QDK es poden executar a l'Azure Quantum de Microsoft, i en ordinadors quàntics de Quantinuum, IonQ i Pasqual.

#### Strawberry Fields

Una biblioteca Python de codi obert desenvolupada per Xanadu Quantum Technologies per dissenyar, simular i optimitzar circuits òptics quàntics de variable contínua (CV). Es proporcionen tres simuladors: un a la base Fock, un que utilitza la formulació gaussiana d'òptica quàntica, i un altre que utilitza la biblioteca d'aprenentatge automàtic TensorFlow. Strawberry Fields també és la biblioteca per executar programes al maquinari fotònic quàntic de Xanadu.

#### t|ket>

Un entorn de programació quàntica i un compilador d'optimització desenvolupat per Cambridge Quantum Computing que s'orienta a simuladors i diversos back-ends de maquinari quàntic, llançat el desembre de 2018.

## Llenguatges de programació quàntics

Hi ha dos grups principals de llenguatges de programació quàntica: llenguatges de programació quàntic imperatiu i llenguatges de programació quàntica funcional.

### Llengües imperatius

Els representants més destacats dels llenguatges imperatius són QCL, LanQ i Q|SI>.

### Llenguatges funcionals

S'estan realitzant esforços per desenvolupar llenguatges de programació funcionals per a la computació quàntica. Els llenguatges de programació funcionals són molt adequats per raonar sobre programes. Alguns exemples inclouen el QPL de Selinger, i el llenguatge semblant a Haskell QML d'Altenkirch i Grattage. Els llenguatges de programació quàntica d'ordre superior, basats en el càlcul lambda, han estat proposats per van Tonder, Selinger i Valiron i per Arrighi i Dowek.

## Referències

* ↑ Dargan, James. «Top 5 Quantum Programming Languages in 2024» (en anglès americà), 28-07-2022. [Consulta: 10 desembre 2024].
* ↑ Jarosław Adam Miszczak. High-level Structures in Quantum Computing (en anglès). Morgan & Claypool Publishers, 2012. ISBN 9781608458516.
* ↑ «Comprehensive list of quantum open-source projects». Github. [Consulta: 27 gener 2022].
* ↑ «Blackbird Quantum Assembly Language — Blackbird 0.2.0 documentation» (en anglès). quantum-blackbird.readthedocs.io. [Consulta: 24 juny 2019].
* ↑ Weedbrook, Christian; Amy, Matthew; Bergholm, Ville; Quesada, Nicolás; Izaac, Josh (en anglès) Quantum, 3, 11-03-2019, pàg. 129. arXiv: 1804.03159. Bibcode: 2019Quant...3..129K. DOI: 10.22331/q-2019-03-11-129.
* ↑ McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán New Journal of Physics, 18, 2, 04-02-2016, pàg. 023023. arXiv: 1509.04279. Bibcode: 2016NJPh...18b3023M. DOI: 10.1088/1367-2630/18/2/023023. ISSN: 1367-2630.
* ↑ Häner, Thomas; Steiger, Damian S.; Svore, Krysta; Troyer, Matthias Quantum Science and Technology, 3, 2, 2018, pàg. 020501. arXiv: 1604.01401. Bibcode: 2018QS&T....3b0501H. DOI: 10.1088/2058-9565/aaa5cc. ISSN: 2058-9565.
* ↑ «PASQAL» (en anglès). PASQAL.
* ↑ «Home» (en anglès). AQT | ALPINE QUANTUM TECHNOLOGIES.
* ↑ «Welcome to the Documentation for Grove! — Grove 1.7.0 documentation» (en anglès). grove-docs.readthedocs.io.
* ↑ «MindSpore Quantum Documentation» (en anglès). www.mindspore.cn/mindquantum.
* ↑ «mindquantum» (en anglès). github.com.
* ↑ «PennyLane Documentation — PennyLane 0.14.1 documentation» (en anglès). pennylane.readthedocs.io. [Consulta: 26 març 2021].
* ↑ «AWS joins PennyLane, an open-source framework that melds machine learning with quantum computing» (en anglès americà). SiliconANGLE, 17-02-2021. [Consulta: 26 març 2021].
* ↑ «SD Times Open-Source Project of the Week: PennyLane» (en anglès americà). SD Times, 26-02-2021. [Consulta: 26 març 2021].
* ↑ Salamone, Salvatore. «Real-time Analytics News Roundup for Week Ending December 12» (en anglès americà). RTInsights, 13-12-2020. [Consulta: 26 març 2021].
* ↑ «Accelerating Quantum Computing». www.quantinuum.com.
* ↑ «Home» (en anglès). AQT | ALPINE QUANTUM TECHNOLOGIES.
* ↑ «Plugins and ecosystem — PennyLane» (en anglès). pennylane.ai. [Consulta: 26 març 2021].
* ↑ Heurtel, Nicolas; Fyrillas, Andreas; de Gliniasty, Grégoire; Le Bihan, Raphaël; Malherbe, Sébastien Quantum, 7, 21-02-2023, pàg. 931. arXiv: 2204.00602. Bibcode: 2023Quant...7..931H. DOI: 10.22331/q-2023-02-21-931.
* ↑ «Home» (en anglès).
* ↑ Efthymiou, Stavros; Ramos-Calderer, Sergi; Bravo-Prieto, Carlos; Pérez-Salinas, Adrián; García-Martín, Diego Quantum Science and Technology, 7, 1, 01-01-2022, pàg. 015018. arXiv: 2009.01845. Bibcode: 2022QS&T....7a5018E. DOI: 10.1088/2058-9565/ac39f5. ISSN: 2058-9565.
* ↑ Efthymiou, Stavros; Lazzarin, Marco; Pasquale, Andrea; Carrazza, Stefano (en anglès) Quantum, 6, 22-09-2022, pàg. 814. arXiv: 2203.08826. Bibcode: 2022Quant...6..814E. DOI: 10.22331/q-2022-09-22-814 [Consulta: free].
* ↑ «Qibolab» (en anglès), 02-11-2022.
* ↑ «Qibocal» (en anglès), 01-11-2022.
* ↑ «qiskit.org» (en anglès). qiskit.org.
* ↑ «Qiskit Overview» (en anglès). [Consulta: 10 febrer 2021].
* ↑ «Qrisp official website» (en anglès).
* ↑ «Eclipse Foundation (website)» (en anglès).
* ↑ «Fraunhofer FOKUS (website)» (en anglès).
* ↑ «Strawberry Fields — Strawberry Fields 0.8.0 documentation» (en anglès). strawberryfields.readthedocs.io. [Consulta: 25 setembre 2018].
* ↑ Killoran, Nathan; Izaac, Josh; Quesada, Nicolás; Bergholm, Ville; Amy, Matthew Quantum, 3, 2019, pàg. 129. arXiv: 1804.03159. Bibcode: 2019Quant...3..129K. DOI: 10.22331/q-2019-03-11-129.
* ↑ Weedbrook, Christian; Pirandola, Stefano; García-Patrón, Raúl; Cerf, Nicolas J.; Ralph, Timothy C. Reviews of Modern Physics, 84, 2, 01-05-2012, pàg. 621–669. arXiv: 1110.3234. Bibcode: 2012RvMP...84..621W. DOI: 10.1103/RevModPhys.84.621.
* ↑ «Hardware — Strawberry Fields» (en anglès). strawberryfields.ai. [Consulta: 26 març 2021].
* ↑ «In the Race to Hundreds of Qubits, Photons May Have "Quantum Advantage"» (en anglès). IEEE Spectrum: Technology, Engineering, and Science News, 05-03-2021. [Consulta: 26 març 2021].
* ↑ «pytket» (en anglès). GitHub, 22-01-2022.
* ↑ Bernhard Omer. «The QCL Programming Language» (en anglès).
* ↑ Hynek Mlnařík. «LanQ – a quantum imperative programming language» (en anglès).
* ↑ Liu, Shusen; Zhou, li; Guan, Ji; He, Yang; Duan, Runyao Scientia Sinica Informationis, 47, 10, 09-05-2017, pàg. 1300. arXiv: 1710.09500. DOI: 10.1360/N112017-00095.