Programação quântica é o processo de projetar ou montar sequências de instruções, chamadas circuitos quânticos, utilizando portas, interruptores e operadores para manipular um sistema quântico visando um resultado desejado ou os resultados de um experimento específico. Algoritmos de circuitos quânticos podem ser implementados em circuitos integrados, conduzidos com instrumentação, ou escritos em uma linguagem de programação para uso com um computador quântico ou um processador quântico.
Com sistemas baseados em processadores quânticos, as linguagens de programação quânticas ajudam a expressar algoritmos quânticos usando construções de alto nível. O campo está profundamente enraizado na filosofia de código aberto e, como resultado, a maioria do software quântico discutido neste artigo está livremente disponível como software de código aberto.
Computadores quânticos, como aqueles baseados no Protocolo KLM, um modelo de computação quântica óptica linear (CQOL), utilizam algoritmos quânticos (circuitos) implementados com eletrônicos, circuitos integrados, instrumentação, sensores e/ou por outros meios físicos.
Outros circuitos projetados para experimentação relacionada a sistemas quânticos podem ser baseados em instrumentação e sensores.
Conjuntos de instruções quânticas Conjuntos de instruções quânticas são usados para transformar algoritmos de nível superior em instruções físicas que podem ser executadas em processadores quânticos. Às vezes, essas instruções são específicas para uma plataforma de hardware específica, por exemplo, armadilhas de íons ou qubits supercondutores.
cQASM cQASM, também conhecido como QASM comum, é uma linguagem de montagem quântica independente de hardware que garante a interoperabilidade entre todas as ferramentas de compilação e simulação quântica. Foi introduzido pelo Laboratório QCA na TUDelft.
Quil
Quil é uma arquitetura de conjunto de instruções para computação quântica que introduziu primeiro um modelo de memória compartilhada quântica/clássica. Foi introduzido por Robert Smith, Michael Curtis e William Zeng em Uma Arquitetura de Conjunto de Instruções Quânticas Práticas. Muitos algoritmos quânticos (incluindo teletransporte quântico, correção de erros quânticos, simulação, e algoritmos de otimização.) exigem uma arquitetura de memória compartilhada.
OpenQASM
OpenQASM é a representação intermediária introduzida pela IBM para uso com Qiskit e o IBM Q Experience.
Blackbird Blackbird é um conjunto de instruções quânticas e representação intermediária usada pela Xanadu Quantum Technologies e Strawberry Fields. Foi projetado para representar programas quânticos de variáveis contínuas que podem ser executados em hardware quântico fotônico.
Kits de desenvolvimento de software quântico Os kits de desenvolvimento de software quântico fornecem coleções de ferramentas para criar e manipular programas quânticos. Eles também fornecem os meios para simular os programas quânticos ou prepará-los para serem executados usando dispositivos quânticos baseados em nuvem e dispositivos quânticos auto-hospedados.
SDKs com acesso a processadores quânticos Os seguintes kits de desenvolvimento de software podem ser usados para executar circuitos quânticos em dispositivos quânticos de protótipo, bem como em simuladores.
Perceval Um projeto de código aberto criado por para projetar circuitos quânticos fotônicos e desenvolver algoritmos quânticos, baseado em Python. As simulações são executadas tanto no próprio computador do usuário quanto na nuvem. Perceval também é usado para se conectar ao processador quântico fotônico baseado em nuvem da Quandela.
Ocean Um conjunto de ferramentas de código aberto desenvolvido pela D-Wave. Escrito principalmente na linguagem de programação Python, permite aos usuários formular problemas nos formatos do Modelo de Ising e da Otimização Binária Quadrática Irrestrita (QUBO). Os resultados podem ser obtidos enviando para um computador quântico online no Leap, o Ambiente de Aplicação Quântica em tempo real da D-Wave, máquinas de propriedade do cliente ou amostradores clássicos.
ProjectQ Um projeto de código aberto desenvolvido no Instituto de Física Teórica da ETH, que usa a linguagem de programação Python para criar e manipular circuitos quânticos. Os resultados são obtidos usando um simulador ou enviando tarefas para dispositivos quânticos da IBM.
Qrisp Qrisp é um projeto de código aberto coordenado pela Fundação Eclipse e desenvolvido em linguagem de programação Python pelo Fraunhofer FOKUS Qrisp é uma linguagem de programação de alto nível para criar e compilar algoritmos quânticos. Seu modelo de programação estruturada permite um desenvolvimento e manutenção escaláveis. A sintaxe expressiva é baseada em variáveis em vez de qubits, com a QuantumVariable como classe central, e funções em vez de portas. Ferramentas adicionais, como um simulador eficiente e descompilação automática, complementam o amplo framework. Além disso, é independente de plataforma, pois oferece compilação alternativa de funções elementares até o nível do circuito, com base em conjuntos de portas específicas do dispositivo.
Qiskit
Um projeto de código aberto desenvolvido pela IBM. Circuitos quânticos são criados e manipulados usando Python. Os resultados são obtidos utilizando simuladores que rodam no dispositivo do usuário, simuladores fornecidos pela IBM ou dispositivos quânticos de protótipo fornecidos pela IBM. Além da capacidade de criar programas usando operações quânticas básicas, ferramentas de nível superior para algoritmos e benchmarking estão disponíveis dentro de pacotes especializados. Qiskit é baseado no padrão OpenQASM para representar circuitos quânticos. Ele também oferece suporte ao controle em nível de pulso de sistemas quânticos por meio do padrão QiskitPulse.
Qibo Uma API de pilha completa de código aberto para simulação quântica, controle de hardware quântico e calibração desenvolvida por vários laboratórios de pesquisa, incluindo QRC, CQT e INFN. Qibo é um framework modular que inclui vários back-ends para simulação quântica e controle de hardware. Este projeto visa fornecer um framework de controle de hardware quântico independente de plataforma com drivers para vários instrumentos e ferramentas para calibração, caracterização e validação quânticas. Este framework foca em dispositivos quânticos auto-hospedados, simplificando o desenvolvimento de software necessário em laboratórios.
Forest Um projeto de código aberto desenvolvido pela Rigetti, que utiliza a linguagem de programação Python para criar e manipular circuitos quânticos. Os resultados são obtidos utilizando simuladores ou dispositivos quânticos de protótipo fornecidos pela Rigetti. Além da capacidade de criar programas usando operações quânticas básicas, algoritmos de nível superior estão disponíveis dentro do pacote Grove. Forest é baseado no conjunto de instruções Quil.
t|ket> Um ambiente de programação quântica e compilador otimizador desenvolvido pela Cambridge Quantum Computing que visa simuladores e diversos back-ends de hardware quântico, lançado em dezembro de 2018.
Strawberry Fields Uma biblioteca de código aberto em Python desenvolvida pela Xanadu Quantum Technologies para projetar, simular e otimizar circuitos quânticos de variáveis contínuas (CV) em óptica quântica. Três simuladores são fornecidos - um na base de Fock, outro utilizando a formulação Gaussiana da óptica quântica, e um utilizando a biblioteca de aprendizado de máquina TensorFlow. Strawberry Fields também é a biblioteca para executar programas no hardware fotônico quântico da Xanadu.
PennyLane Uma biblioteca open-source em Python desenvolvida pela Xanadu Quantum Technologies para programação diferenciável de computadores quânticos. PennyLane oferece aos usuários a capacidade de criar modelos usando TensorFlow, NumPy ou PyTorch, e conectá-los com plataformas de computação quântica disponíveis de IBMQ, Google Quantum, Rigetti, Quantinuum e Alpine Quantum Technologies.
Kit de Desenvolvimento Quântico Um projeto desenvolvido pela Microsoft como parte do .NET Framework. Programas quânticos podem ser escritos e executados dentro do Visual Studio e do VSCode usando a linguagem de programação quântica Q#. Programas desenvolvidos no QDK podem ser executados no Azure Quantum da Microsoft, e executar em computadores quânticos da Quantinuum, IonQ e Pasqal.
Cirq
Um projeto de código aberto desenvolvido pelo Google, que utiliza a linguagem de programação Python para criar e manipular circuitos quânticos. Programas escritos em Cirq podem ser executados em IonQ, Pasqal, Rigetti, e Alpine Quantum Technologies.
Linguagens de programação quântica Existem dois principais grupos de linguagens de programação quântica: linguagens de programação quântica imperativas e linguagens de programação quântica funcionais.
Linguagens imperativas Os representantes mais proeminentes das linguagens imperativas são QCL, LanQ e Q|SI>.
Ket Ket é uma linguagem embutida de código aberto projetada para facilitar a programação quântica, aproveitando a sintaxe familiar e a simplicidade do Python. Ele serve como um componente integral da Plataforma de Programação Quântica Ket, integra-se perfeitamente a uma biblioteca de tempo de execução Rust e a um simulador quântico. Mantido pela Quantuloop, o projeto enfatiza acessibilidade e versatilidade para pesquisadores e desenvolvedores. O exemplo a seguir demonstra a implementação de um estado de Bell usando Ket:from ket import * a, b = quant(2) # Aloca dois bits quânticos H(a) # Coloca o qubit `a` em uma superposição cnot(a, b) # Entrelaça os dois qubits no estado de Bell m_a = measure(a) # Mede o qubit `a`, colapsando também o qubit `b` m_b = measure(b) # Mede o qubit `b` # Verifica que a medida de ambos os qubits sempre será igual assert m_a.value == m_b.value
QCL
Linguagem de computação quântica, em inglês "Quantum Computation Language" (QCL), é uma das primeiras linguagens de programação quântica implementadas. A característica mais importante do QCL é o suporte para operadores e funções definidos pelo usuário. Sua sintaxe se assemelha à sintaxe da linguagem de programação C e seus tipo de dados clássicos são semelhantes aos tipos de dados primitivos em C. É possível combinar código clássico e código quântico no mesmo programa.
Pseudocódigo quântico O pseudocódigo quântico proposto por E. Knill é a primeira linguagem formalizada para a descrição de algoritmo quânticos. Foi introduzido e, além disso, estava intimamente ligado a um modelo de máquina quântica chamada Máquina de Acesso Aleatório Quântico (QRAM).
Q#
Uma linguagem desenvolvida pela Microsoft para ser usada com o Kit de Desenvolvimento Quântico.
Q|SI> Q|SI> é uma plataforma incorporada na linguagem .Net que oferece suporte à programação quântica em uma extensão quântica da linguagem while. Esta plataforma inclui um compilador da linguagem while quântica e uma cadeia de ferramentas para a simulação de computação quântica, otimização de circuitos quânticos, análise de terminação de programas quânticos, e verificação de programas quânticos.
Linguagem Q A Linguagem Q é a segunda linguagem de programação quântica imperativa implementada.
Linguagem Q A Linguagem Q foi implementada como uma extensão da linguagem de programação C++. Ela fornece classes para operações quânticas básicas como QHadamard, QFourier, QNot e QSwap, que são derivadas da classe base Qop. Novos operadores podem ser definidos usando o mecanismo de classe C++.
A memória quântica é representada pela classe Qreg. Qreg x1; // Registro quântico de 1 qubit com valor inicial 0 Qreg x2(2,0); // Registro quântico de 2 qubits com valor inicial 0
O processo de computação é executado usando um simulador fornecido. Ambientes ruidosos podem ser simulados usando parâmetros do simulador.
qGCL