Programação quântica

manipulação de sistemas quânticos por meio de sequências de instruções

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.[1] 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.[2]

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 editar

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 editar

cQASM,[3] 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 editar

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.[4] Muitos algoritmos quânticos (incluindo teletransporte quântico, correção de erros quânticos, simulação,[5][6] e algoritmos de otimização.[7]) exigem uma arquitetura de memória compartilhada.

OpenQASM editar

 Ver artigo principal: OpenQASM

OpenQASM[8] é a representação intermediária introduzida pela IBM para uso com Qiskit e o IBM Q Experience.

Blackbird editar

Blackbird[9][10] é 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 editar

Os kits de desenvolvimento de software quântico fornecem coleções de ferramentas para criar e manipular programas quânticos.[11] 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 editar

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 editar

Um projeto de código aberto criado por fr 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.[12][13]

Ocean editar

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.

 
Um código de exemplo usando o projectq com Python

ProjectQ editar

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.[14] Os resultados são obtidos usando um simulador ou enviando tarefas para dispositivos quânticos da IBM.

Qrisp editar

Qrisp é um projeto de código aberto coordenado pela Fundação Eclipse[15] e desenvolvido em linguagem de programação Python pelo Fraunhofer FOKUS[16] 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 editar

 Ver artigo principal: Qiskit

Um projeto de código aberto desenvolvido pela IBM.[17] 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.[18] 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.[19]

Qibo editar

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.[20][21] Este projeto visa fornecer um framework de controle de hardware quântico independente de plataforma com drivers para vários instrumentos[22] e ferramentas para calibração, caracterização e validação quânticas.[23] Este framework foca em dispositivos quânticos auto-hospedados, simplificando o desenvolvimento de software necessário em laboratórios.

Forest editar

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.[24] Forest é baseado no conjunto de instruções Quil.

t|ket> editar

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.[25]

Strawberry Fields editar

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.[26][27] Três simuladores são fornecidos - um na base de Fock, outro utilizando a formulação Gaussiana da óptica quântica,[28] 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.[29][30]

PennyLane editar

Uma biblioteca open-source em Python desenvolvida pela Xanadu Quantum Technologies para programação diferenciável de computadores quânticos.[31][32][33][34] 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[35] e Alpine Quantum Technologies.[36][37]

Kit de Desenvolvimento Quântico editar

Um projeto desenvolvido pela Microsoft[38] 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,[39] e executar em computadores quânticos da Quantinuum,[35] IonQ e Pasqal.[40]

Cirq editar

 Ver artigo principal: 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,[40] Rigetti, e Alpine Quantum Technologies.[36]

Linguagens de programação quântica editar

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 editar

Os representantes mais proeminentes das linguagens imperativas são QCL,[41] LanQ[42] e Q|SI>.[43]

Ket editar

Ket[44] é 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,[45] 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 editar

 Ver artigo principal: Linguagem de computação quântica

Linguagem de computação quântica, em inglês "Quantum Computation Language" (QCL), é uma das primeiras linguagens de programação quântica implementadas.[46] 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 editar

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# editar

 Ver artigo principal: Q Sharp

Uma linguagem desenvolvida pela Microsoft para ser usada com o Kit de Desenvolvimento Quântico.[47]

Q|SI> editar

Q|SI> é uma plataforma incorporada na linguagem .Net que oferece suporte à programação quântica em uma extensão quântica da linguagem while.[43][48] Esta plataforma inclui um compilador da linguagem while quântica[49] 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,[50] e verificação de programas quânticos.[51][52]

Linguagem Q editar

A Linguagem Q é a segunda linguagem de programação quântica imperativa implementada.[53]

Linguagem Q editar

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 editar

A Linguagem de Comando Guardado Quântico (qGCL) foi definida por P. Zuliani em sua tese de doutorado. É baseada na Linguagem de Comando Guardado criada por Edsger Dijkstra.

Pode ser descrita como uma linguagem de especificação de programas quânticos.

QMASM editar

Montador Macro Quântico (QMASM) é uma linguagem de baixo nível específica para recristalizadores quânticos como o D-Wave.[54]

Scaffold editar

Scaffold é uma linguagem semelhante a C, que compila para QASM e OpenQASM. É construída sobre a Infraestrutura do Compilador LLVM para realizar otimizações no código Scaffold antes de gerar um conjunto de instruções especificado.[55][56]

Silq editar

Silq é uma linguagem de programação de alto nível para computação quântica com um sistema de tipos estáticos robusto, desenvolvido na ETH Zürich.[57][58]

LQP editar

A Lógica dos Programas Quânticos (LQP) é uma lógica quântica dinâmica, capaz de expressar características importantes de medições quânticas e evoluções unitárias de estados multipartidos, e fornece caracterizações lógicas de várias formas de emaranhamento. A lógica tem sido usada para especificar e verificar a correção de vários protocolos na computação quântica.[59][60]

Linguagens Funcionais editar

Esforços estão em andamento para desenvolver linguagens de programação funcional para computação quântica. Linguagens de programação funcional são bem adequadas para raciocinar sobre programas. Exemplos incluem QPL de Selinger,[61] e a linguagem semelhante a Haskell QML, desenvolvida por Altenkirch e Grattage.[62][63] Linguagens de programação quântica de ordem superior, baseadas no cálculo lambda, foram propostas por van Tonder,[64] Selinger e Valiron[65] e por Arrighi e Dowek.[66]

QFC e QPL editar

QFC e QPL são duas linguagens de programação quântica intimamente relacionadas definidas por Peter Selinger. Elas diferem apenas em sua sintaxe: QFC usa uma sintaxe de fluxograma, enquanto QPL usa uma sintaxe textual. Essas linguagens têm fluxo de controle clássico, mas podem operar em dados quânticos ou clássicos. Selinger fornece uma semântica denotacional para essas linguagens em uma categoria de superoperadores.

QML editar

QML é uma linguagem de programação quântica semelhante ao Haskell desenvolvida por Altenkirch e Grattage.[67][62] Ao contrário do QPL de Selinger, esta linguagem considera a duplicação, em vez do descarte, da informação quântica como uma operação primitiva. A duplicação, neste contexto, é entendida como a operação que mapeia   para  , e não deve ser confundida com a operação impossível de clonagem; os autores afirmam que é semelhante à forma como o compartilhamento é modelado em linguagens clássicas. QML também introduz operadores de controle clássico e quântico, enquanto a maioria das outras linguagens depende de controle clássico.

Uma semântica operacional para QML é fornecida em termos de circuito quânticos, enquanto uma semântica denotacional é apresentada em termos de superoperadores, e estes são mostrados para concordar. Tanto a semântica operacional quanto a denotacional foram implementadas (de forma clássica) em Haskell.[68]

LIQUi|> editar

LIQUi|> (pronunciado como líquido) é uma extensão de simulação quântica na linguagem de programação F#.[69] Atualmente, está sendo desenvolvido pelo Grupo de Arquiteturas e Computação Quântica (QuArC)[70] Parte dos esforços da StationQ na Microsoft Research. O LIQUi|> busca permitir que os teóricos experimentem o design de algoritmos quânticos antes que computadores quânticos físicos estejam disponíveis para uso.[71]

Isso inclui uma linguagem de programação, algoritmos de otimização e agendamento, e simuladores quânticos. O LIQUi|> pode ser usado para traduzir um algoritmo quântico escrito na forma de um programa de alto nível em instruções de máquina de baixo nível para um dispositivo quântico.[72]

Cálculos lambda quânticos editar

Os cálculos lambda quânticos são extensões do clássico cálculo lambda introduzido por Alonzo Church e Stephen Cole Kleene na década de 1930. O propósito dos cálculos lambda quânticos é estender as linguagens de programação quântica com uma teoria de função de ordem superior.

A primeira tentativa de definir um cálculo lambda quântico foi feita por Philip Maymin em 1996.[73] Seu cálculo lambda-q é poderoso o suficiente para expressar qualquer computação quântica. No entanto, essa linguagem pode resolver eficientemente problemas NP-completos, e portanto parece ser estritamente mais forte do que os modelos computacionais quânticos padrão (como a máquina de Turing quântica ou o modelo de circuito quântico). Portanto, é provável que o cálculo lambda-q de Maymin não seja implementável em um dispositivo físico.

Em 2003, André van Tonder definiu uma extensão do cálculo lambda adequada para provar a correção de programas quânticos. Ele também forneceu uma implementação na linguagem de programação Scheme.[74]

Em 2004, Selinger e Valiron definiram um cálculo lambda fortemente tipado para computação quântica com um sistema de tipos baseado em lógica linear.[75]

Quipper editar

  Nota: Para a empresa de tecnologia educacional, veja Quipper (empresa).

Quipper foi publicado em 2013.[76][77] É implementado como uma linguagem incorporada, usando Haskell como a linguagem hospedeira.[78] Por esse motivo, os programas quânticos escritos em Quipper são escritos em Haskell usando bibliotecas fornecidas. Por exemplo, o seguinte código implementa a preparação de uma superposição:

import Quipper

spos :: Bool -> Circ Qubit
spos b = do q <- qinit b
            r <- hadamard q
            return r

Referências

  1. Jarosław Adam Miszczak (2012). High-level Structures in Quantum Computing. [S.l.]: Morgan & Claypool Publishers. ISBN 9781608458516 
  2. «Comprehensive list of quantum open-source projects». Github. Consultado em 27 de janeiro de 2022 
  3. Bertels, K.; Almudever, C. G.; Hogaboam, J. W.; Ashraf, I.; Guerreschi, G. G.; Khammassi, N. (24 de maio de 2018). «cQASM v1.0: Towards a Common Quantum Assembly Language» (em inglês). arXiv:1805.09607v1  [quant-ph] 
  4. Smith, Robert S.; Curtis, Michael J.; Zeng, William J. (2016). «A Practical Quantum Instruction Set Architecture». arXiv:1608.03355  [quant-ph] 
  5. McClean, Jarrod R.; Romero, Jonathan; Babbush, Ryan; Aspuru-Guzik, Alán (4 de fevereiro de 2016). «The theory of variational hybrid quantum-classical algorithms». New Journal of Physics. 18 (2). 023023 páginas. Bibcode:2016NJPh...18b3023M. ISSN 1367-2630. arXiv:1509.04279 . doi:10.1088/1367-2630/18/2/023023 
  6. Rubin, Nicholas C.; Curtis, Michael J.; Zeng, William J. (2016). «A Hybrid Classical/Quantum Approach for Large-Scale Studies of Quantum Systems with Density Matrix Embedding Theory». arXiv:1610.06910  [quant-ph] 
  7. Farhi, Edward; Goldstone, Jeffrey; Gutmann, Sam (2014). «A Quantum Approximate Optimization Algorithm». arXiv:1411.4028  [quant-ph] 
  8. qiskit-openqasm: OpenQASM specification, International Business Machines, 4 de julho de 2017, consultado em 6 de julho de 2017 
  9. «Blackbird Quantum Assembly Language — Blackbird 0.2.0 documentation». quantum-blackbird.readthedocs.io. Consultado em 24 de junho de 2019 
  10. Weedbrook, Christian; Amy, Matthew; Bergholm, Ville; Quesada, Nicolás; Izaac, Josh; Killoran, Nathan (11 de março de 2019). «Strawberry Fields: A Software Platform for Photonic Quantum Computing». Quantum (em inglês). 3. 129 páginas. Bibcode:2019Quant...3..129K. arXiv:1804.03159 . doi:10.22331/q-2019-03-11-129 
  11. Häner, Thomas; Steiger, Damian S.; Svore, Krysta; Troyer, Matthias (2018). «A software methodology for compiling quantum programs». Quantum Science and Technology. 3 (2). 020501 páginas. Bibcode:2018QS&T....3b0501H. ISSN 2058-9565. arXiv:1604.01401 . doi:10.1088/2058-9565/aaa5cc 
  12. «La puissance d'un ordinateur quantique testée en ligne (The power of a quantum computer tested online)». Le Monde.fr. Le Monde. Novembro 22, 2022 
  13. Heurtel, Nicolas; Fyrillas, Andreas; de Gliniasty, Grégoire; Le Bihan, Raphaël; Malherbe, Sébastien; Pailhas, Marceau; Bertasi, Eric; Bourdoncle, Boris; Emeriau, Pierre-Emmanuel; Mezher, Rawad; Music, Luka; Belabas, Nadia; Valiron, Benoît; Senellart, Pascale; Mansfield, Shane; Senellart, Jean (Fevereiro 21, 2023). «Perceval: A Software Platform for Discrete Variable Photonic Quantum Computing». Quantum. 7: 931. Bibcode:2023Quant...7..931H. arXiv:2204.00602 . doi:10.22331/q-2023-02-21-931 
  14. «Home» 
  15. «Eclipse Foundation (website)» 
  16. «Fraunhofer FOKUS (website)» 
  17. «qiskit.org». qiskit.org 
  18. «Qiskit Overview». Consultado em 10 de fevereiro de 2021 
  19. McKay, David C.; Alexander, Thomas; Bello, Luciano; Biercuk, Michael J.; Bishop, Lev; Chen, Jiayin; Chow, Jerry M.; Córcoles, Antonio D.; Egger, Daniel; Filipp, Stefan; Gomez, Juan; Hush, Michael; Javadi-Abhari, Ali; Moreda, Diego; Nation, Paul; Paulovicks, Brent; Winston, Erick; Wood, Christopher J.; Wootton, James; Gambetta, Jay M. (2018). «Qiskit Backend Specifications for OpenQASM and OpenPulse Experiments». arXiv:1809.03452  [quant-ph] 
  20. Efthymiou, Stavros; Ramos-Calderer, Sergi; Bravo-Prieto, Carlos; Pérez-Salinas, Adrián; García-Martín, Diego; Garcia-Saez, Artur; Latorre, José Ignacio; Carrazza, Stefano (1 de janeiro de 2022). «Qibo: a framework for quantum simulation with hardware acceleration». Quantum Science and Technology. 7 (1). 015018 páginas. Bibcode:2022QS&T....7a5018E. ISSN 2058-9565. arXiv:2009.01845 . doi:10.1088/2058-9565/ac39f5. hdl:2434/887963 
  21. Efthymiou, Stavros; Lazzarin, Marco; Pasquale, Andrea; Carrazza, Stefano (22 de setembro de 2022). «Quantum simulation with just-in-time compilation». Quantum (em inglês). 6. 814 páginas. Bibcode:2022Quant...6..814E. arXiv:2203.08826 . doi:10.22331/q-2022-09-22-814  
  22. «Qibolab». Novembro 2, 2022 – via GitHub 
  23. «Qibocal». Novembro 1, 2022 – via GitHub 
  24. «Welcome to the Documentation for Grove! — Grove 1.7.0 documentation». grove-docs.readthedocs.io 
  25. «pytket». GitHub. 22 Janeiro 2022 
  26. «Strawberry Fields — Strawberry Fields 0.8.0 documentation». strawberryfields.readthedocs.io (em inglês). Consultado em 25 de setembro de 2018 
  27. Killoran, Nathan; Izaac, Josh; Quesada, Nicolás; Bergholm, Ville; Amy, Matthew; Weedbrook, Christian (2019). «Strawberry Fields: A Software Platform for Photonic Quantum Computing». Quantum. 3. 129 páginas. Bibcode:2019Quant...3..129K. arXiv:1804.03159 . doi:10.22331/q-2019-03-11-129 
  28. Weedbrook, Christian; Pirandola, Stefano; García-Patrón, Raúl; Cerf, Nicolas J.; Ralph, Timothy C.; Shapiro, Jeffrey H.; Lloyd, Seth (1 de maio de 2012). «Gaussian quantum information». Reviews of Modern Physics. 84 (2): 621–669. Bibcode:2012RvMP...84..621W. arXiv:1110.3234 . doi:10.1103/RevModPhys.84.621 
  29. «Hardware — Strawberry Fields». strawberryfields.ai. Consultado em 26 de março de 2021 
  30. «In the Race to Hundreds of Qubits, Photons May Have "Quantum Advantage"». IEEE Spectrum: Technology, Engineering, and Science News (em inglês). 5 Março 2021. Consultado em 26 de março de 2021 
  31. «PennyLane Documentation — PennyLane 0.14.1 documentation». pennylane.readthedocs.io. Consultado em 26 de março de 2021 
  32. «AWS joins PennyLane, an open-source framework that melds machine learning with quantum computing». SiliconANGLE (em inglês). 17 de fevereiro de 2021. Consultado em 26 de março de 2021 
  33. «SD Times Open-Source Project of the Week: PennyLane». SD Times (em inglês). 26 de fevereiro de 2021. Consultado em 26 de março de 2021 
  34. Salamone, Salvatore (13 de dezembro de 2020). «Real-time Analytics News Roundup for Week Ending December 12». RTInsights (em inglês). Consultado em 26 de março de 2021 
  35. a b «Accelerating Quantum Computing». www.quantinuum.com 
  36. a b «Home». AQT | ALPINE QUANTUM TECHNOLOGIES 
  37. «Plugins and ecosystem — PennyLane». pennylane.ai (em inglês). Consultado em 26 de março de 2021 
  38. «Azure Quantum documentation, QDK & Q# API reference - Azure Quantum». learn.microsoft.com 
  39. «What is Azure Quantum? - Azure Quantum». learn.microsoft.com. Janeiro 11, 2023 
  40. a b «PASQAL». PASQAL 
  41. Bernhard Omer. «The QCL Programming Language» 
  42. Hynek Mlnařík. «LanQ – a quantum imperative programming language» 
  43. a b Liu, Shusen; Zhou, li; Guan, Ji; He, Yang; Duan, Runyao; Ying, Mingsheng (9 de maio de 2017). «Q|SI>: A Quantum Programming Language». Scientia Sinica Informationis. 47 (10). 1300 páginas. arXiv:1710.09500 . doi:10.1360/N112017-00095 
  44. Da Rosa, Evandro Chagas Ribeiro; De Santiago, Rafael (31 de janeiro de 2022). «Ket Quantum Programming». ACM Journal on Emerging Technologies in Computing Systems (em inglês). 18 (1): 1–25. ISSN 1550-4832. doi:10.1145/3474224 
  45. «Ket Quantum Programming». quantumket.org (em inglês). Consultado em 18 de maio de 2023 
  46. «QCL - A Programming Language for Quantum Computers». tuwien.ac.at. Consultado em 20 de julho de 2017 
  47. «Introduction to Q# & Quantum Development Kit - Azure Quantum». learn.microsoft.com. Março 30, 2023 
  48. Ying, Mingsheng (Janeiro 2012). «Floyd–hoare Logic for Quantum Programs». ACM Trans. Program. Lang. Syst. 33 (6): 19:1–19:49. ISSN 0164-0925. doi:10.1145/2049706.2049708  
  49. Ying, Mingsheng; Feng, Yuan (2010). «A Flowchart Language for Quantum Programming». IEEE Transactions on Software Engineering. 37 (4): 466–485. ISSN 0098-5589. doi:10.1109/TSE.2010.94 
  50. Ying, Mingsheng; Yu, Nengkun; Feng, Yuan; Duan, Runyao (2013). «Verification of quantum programs». Science of Computer Programming. 78 (9): 1679–1700. arXiv:1106.4063 . doi:10.1016/j.scico.2013.03.016 
  51. Ying, Mingsheng; Ying, Shenggang; Wu, Xiaodi (2017), «Invariants of quantum programs: Characterisations and generation», ACM SIGPLAN Notices, 52: 818–832, doi:10.1145/3093333.3009840, hdl:10453/127333  
  52. Liu, Tao; Li, Yangjia; Wang, Shuling; Ying, Mingsheng; Zhan, Naijun (2016). «A Theorem Prover for Quantum Hoare Logic and its Applications». arXiv:1601.03835  [cs.LO] 
  53. «Software for the Q language». 23 de novembro de 2001. Consultado em 20 de julho de 2017. Cópia arquivada em 20 de junho de 2009 
  54. Scott Pakin, "A Quantum Macro Assembler", Proceedings of the 20th Annual IEEE High Performance Extreme Computing Conference 2016
  55. Javadi-Abhari, Ali. «Scaffold: Quantum Programming Language». Princeton University-Department of Computer Science. Princeton University. Consultado em 22 Setembro 2020 
  56. Litteken, Andrew (28 Maio 2020). «An updated LLVM-based quantum research compiler with further OpenQASM support». Quantum Science and Technology. 5 (3): 034013. Bibcode:2020QS&T....5c4013L. OSTI 1803951. doi:10.1088/2058-9565/ab8c2c  
  57. «What is Silq?». silq.ethz.ch. Consultado em 21 de junho de 2020 
  58. Bichsel, Benjamin; Baader, Maximilian; Gehr, Timon; Vechev, Martin (11 de junho de 2020). «Silq: A high-level quantum language with safe uncomputation and intuitive semantics». Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (em inglês). London UK: ACM. pp. 286–300. ISBN 978-1-4503-7613-6. doi:10.1145/3385412.3386007 
  59. A. Baltag e S. Smets, "LQP: A Lógica Dinâmica da Informação Quântica", Estruturas Matemáticas em Ciência da Computação 16(3):491-525, 2006.
  60. Baltag, Alexandru; Bergfeld, Jort; Kishida, Kohei; Sack, Joshua; Smets, Sonja; Zhong, Shengyang (2014). «PLQP & Company: Decidable Logics for Quantum Algorithms». International Journal of Theoretical Physics. 53 (10): 3628–3647. Bibcode:2014IJTP...53.3628B. doi:10.1007/s10773-013-1987-3 
  61. Peter Selinger, "Towards a quantum programming language", Mathematical Structures in Computer Science 14(4):527-586, 2004.
  62. a b Jonathan Grattage: QML Research (website)
  63. T. Altenkirch, V. Belavkin, J. Grattage, A. Green, A. Sabry, J. K. Vizzotto, QML: A Functional Quantum Programming Language Arquivado em 2006-07-10 no Wayback Machine (website)
  64. Andre van Tonder, "A Lambda Calculus for Quantum Computation", SIAM J. Comput., 33(5), 1109–1135. (27 pages), 2004. Also available from arXiv:quant-ph/0307150
  65. Peter Selinger and Benoît Valiron, "A lambda calculus for quantum computation with classical control", Mathematical Structures in Computer Science 16(3):527-552, 2006.
  66. Pablo Arrighi, Gilles Dowek, "Linear-algebraic lambda-calculus: higher-order, encodings and confluence", 2006
  67. «QML: A Functional Quantum Programming Language». 26 de setembro de 2007. Cópia arquivada em 26 de setembro de 2007 
  68. Jonathan Grattage, QML: A Functional Quantum Programming Language (compiler) Arquivado em 2016-03-05 no Wayback Machine, 2005–2008
  69. «The Language Integrated Quantum Operations Simulator». github.io. Consultado em 20 de julho de 2017 
  70. Quantum Architectures and Computation Group (QuArC), https://www.microsoft.com/en-us/research/group/quantum-architectures-and-computation-group-quarc/, 2011
  71. «StationQ». microsoft.com. Consultado em 20 de julho de 2017 
  72. «Language-Integrated Quantum Operations: LIQUi|>». Microsoft. 2016 
  73. Philip Maymin, "Extending the Lambda Calculus to Express Randomized and Quantumized Algorithms", 1996
  74. André van Tonder. «A lambda calculus for quantum computation (website)» 
  75. Peter Selinger, Benoˆıt Valiron, "Quantum Lambda Calculus"
  76. «The Quipper Language» 
  77. Alexander S. Green; Peter LeFanu Lumsdaine; Neil J. Ross; Peter Selinger; Benoît Valiron. «The Quipper Language (website)» 
  78. Alexander S. Green; Peter LeFanu Lumsdaine; Neil J. Ross; Peter Selinger; Benoît Valiron (2013). «An Introduction to Quantum Programming in Quipper». Reversible Computation. Col: Lecture Notes in Computer Science. 7948. [S.l.: s.n.] pp. 110–124. ISBN 978-3-642-38985-6. arXiv:1304.5485 . doi:10.1007/978-3-642-38986-3_10 

Leitura adicional editar

Ligações externas editar

  Este artigo sobre computação é um esboço. Você pode ajudar a Wikipédia expandindo-o.