A Programação do Futuro

A Programação do Futuro

Fernando Henrique Oliveira Abreu

João Paulo Domingues dos Santos


É do saber de todo curioso em Tecnologia da Informação que hoje em dia um desenvolvedor de software necessita das mais variadas habilidades em computação, dos paradigmas de programação em linguagens de alto nível às particularidades das instruções executadas em baixo nível. Contudo, pesquisas recentes em Computação Quântica, como as desenvolvidas no NIST – National Institute of Standards and Technology, mostram que estas competências desejáveis devem mudar substancialmente.

A computação clássica utiliza-se do sistema binário para realizar operações com sequências de informações lógicas conhecidas por bits, onde cada bit pode assumir o valor 0 ou 1. Informalmente, na Computação Quântica a unidade básica de armazenamento de dados são os qubits, que podem assumir estados lógicos como os bits, porém simultaneamente, ou seja, uma mesma unidade básica de armazenamento pode conter 0 e 1 ao mesmo tempo. Isto se deve ao fenômeno de sobreposição, oriundo da mecânica quântica, onde admite-se que uma partícula pode estar em dois lugares ao mesmo tempo (a quem interessar este assunto, recomendamos uma leitura sobre o paradoxo do Gato de Schrödinger). Sem pormenores, a capacidade de um qubit assumir mais estados do que o bit tradicional dos computadores clássicos amplia exponencialmente a capacidade dos processadores quânticos, como ilustra a Tabela 1.

Tabela 1: qubits x bits

Assim, se hoje em dia um programador se preocupa em manipular bits de 0s e 1s, o programador do futuro além de se preocupar com esses estados deverá considerar a representação simultânea de 0 e 1 que os qubits possibilitam. Para não ficarmos apenas sob ideias abstratas, vale citar que em 2009 foi demonstrado o funcionamento do primeiro processador quântico programável no NIST, além de frequentes descobertas e publicações nesta área de pesquisa (ver <http://www.nist.gov/quantum-computing-quantum-computation.cfm>).

Além disso, já é possível simular computadores quânticos em máquinas convencionais. Isso é feito através de algoritmos e linguagens de programação quânticos. O objetivo é prever do que os computadores quânticos serão capazes.

Segundo P. S. Schüler e o Luis O. C. Alvares, autores do artigo Operações Lógicas e Quânticas e Colorabilidade de Grafos: “imagina-se que programadores que já programam computadores clássicos aprenderão a programar computadores quânticos despendendo relativamente pouco esforço”.  Eles também diferenciam as duas formas de programar: “A forma convencional de programar baseia-se no desenvolvimento da solução manipulando-se a informação de entrada até obter-se a saída esperada. Em máquinas quânticas, a forma de programar mais comum é simplesmente gerar e testar todas as soluções possíveis em paralelo e selecionar a solução válida se ela existir. Na computação quântica, o trabalho do projetista de software é construir um conjunto de operações que verifica a validade de uma solução

O advento das linguagens quânticas para simulações resulta de recentes estudos. Eis algumas linguagens e suas diferenças segundo o mini-curso de Juliana K. Vizotto e Antonio C. R. Costa “Linguagens de Programação Quântica: Um apanhado geral”:

  • QCL (Quantum Computing Language), criada por Bernhard Ömer em 1998, é a primeira linguagem real para programação quântica. Sua sintaxe se assemelha à de linguagens de programação clássicas e estruturadas como a linguagem C. Ela permite a simulação de computadores quânticos em máquinas comuns, e é a mais indicada para o ensino da linguagem de programação de computador quântico. Possui dados e estruturas de controle (comandos) clássicos.
  • QPL (Quantum Programming Language), criada por Peter Selinger em 2004, é a primeira linguagem funcional¹ quântica, teve sintaxe baseada em diagrama de fluxo e textual. Possui controle clássico e dados quânticos (qubits).
  • QML (Quantum Markup Language), criada por Altenkirch e Grattage em 2005, é uma linguagem funcional baseada na XML. Possui controle e dados quânticos.
  • QHaskell (Quantum Haskell), criada por Juliana K. Vizzotto e Antonio C. R. Costa em 2006, é uma linguagem funcional mista. Possui tanto controle e dados quânticos quanto clássicos.

Acredita-se que problemas hoje insolúveis em função de sua complexidade assintótica poderão ser solucionados com o computador quântico. Os próximos anos dirão.

Para quem quiser saber mais sobre o assunto, aqui estão ótimas referências:

1-Amir O. Caldeira. Computaçaão Quântica: realidade ou precipitação. Ciência
Hoje, vol.40 numero236
2-Luiz Davidovich. Informação Quantica: do telestransporte ao computador.
Cinecia Hoje, vol.35, numero 206
3-Paulo H. S. Ribeiro. Criptografia Quantica. Ciencia Hoje, vol 47, n277
4- E. Rieffel and W. Polak, An Introduction to Quantum Computing for
Non-Physicist.Arxiv:quant-ph/9809016
http://arxiv.org/abs/quant-ph/9809016

¹Linguagem funcional, é um tipo de linguagem de programação que utiliza funções primitivas, elementares, com os quais o programador deverá construir outras mais elaboradas, necessárias para resolver um determinado problema.