O 29º Simpósio Brasileiro de Linguagens de Programação (SBLP) premiou como “artigo destaque” a pesquisa “Modeling Quantum Computing Constraints: No-Cloning Theorem and Monadic Expressiveness with Type-Level Programming” (Modelagem de Restrições de Computação Quântica: Teorema de Não-Clonagem e Expressividade Monádica com Programação em Nível de Tipo), produzido por Flávio Borin Junior, estudante de Ciência da Computação, e por Juliana Vizzotto, professora associada do Departamento de Linguagens e Sistemas de Computação (DLSC). O simpósio, promovido pela Sociedade Brasileira de Computação (SBC), é um fórum para que estudantes, pesquisadores e profissionais apresentem e discutam ideias e inovações no projeto, definição, análise, implementação e uso prático de linguagens de programação.

Segundo Flávio Borin, a ideia de produzir o artigo veio a partir da leitura de outra pesquisa, o Modeling Quantum Computing in Haskell (Modelagem de Computação Quântica em Haskell), que introduz computação quântica através da programação funcional. “É um artigo bem antigo e eu percebi que ele era um artigo bem limitado e eu disse ‘ah, dá pra melhorar isso.’ Então fui tentando, sabia que tinha como. Eu não estava fazendo isso pra publicar. Estava fazendo isso porque sabia que dava pra fazer”, relata Flávio.
Em Haskell, uma linguagem de programação funcional, Flávio Borin e Juliana Vizzotto criaram uma biblioteca que simula a computação quântica. Segundo Flávio, o sistema impede que os programadores copiem dados de forma indevida, respeitando um princípio fundamental da computação quântica conhecido como teorema da não-clonagem.
Premiado no SBLP, o estudo de Flávio Borin e Juliana Vizzotto não só reforça a posição do Centro de Tecnologia na pesquisa em computação quântica, como também abre caminhos para o desenvolvimento de sistemas mais seguros e precisos, com aplicações em inteligência artificial, criptografia e outras tecnologias emergentes.
Se você entende da área da computação, provavelmente você entendeu tudo (ou quase tudo) até aqui. Caso contrário, a seguir iremos detalhar alguns conceitos importantes para que você compreenda melhor a pesquisa.
O que é a linguagem Haskell?
Haskell é uma linguagem de programação diferente das mais comuns, como Python ou Java, porque funciona como uma cozinha de receitas precisas. Em vez de dar ordens passo a passo, o programador define funções, que são como receitas que transformam ingredientes em resultados previsíveis e confiáveis.
Outra característica importante é que Haskell só executa o que realmente é necessário, permitindo trabalhar com cálculos complexos de forma eficiente. Por isso, é muito usada em pesquisas acadêmicas, computação teórica e sistemas que exigem alta precisão, como a computação quântica e inteligência artificial.
O que é a computação quântica?
Enquanto a computação clássica depende de circuitos elétricos para processar informações, a computação quântica busca novas formas de realizar cálculos, aproveitando as propriedades da física quântica.
Uma das principais diferenças é que a computação quântica é reversível, ou seja, todas as operações podem ser desfeitas. Além disso, ler um valor quântico altera o próprio sistema. “Na computação clássica, você lê um valor da memória e é normal. Na computação quântica, não. Ler um valor tem um efeito global que se estende por todo o resto da memória”, explica o pesquisador.
Essa característica também traz uma vantagem importante: o paralelismo natural. Segundo Flávio, “na computação quântica, você consegue executar várias coisas ao mesmo tempo utilizando o próprio sistema físico. Enquanto na computação clássica você precisa de mecanismos para tratar concorrência, na quântica isso já vem embutido na física”.
O que são qubits?
Na computação clássica existem os bits, que podem estar em dois estados possíveis, o 0 ou o 1. Tudo o que é feito por um computador é formado por combinações de zeros ou uns.
Já os qubits (quantum bit) são a versão quântica dos bits. A diferença entre eles é que, enquanto um bit só pode estar em um estado, o qubit pode estar em uma combinação de dois estados diferentes.
O que é teorema da não-clonagem?
O teorema da não-clonagem proíbe a cópia de informações quânticas. Como explica Flávio, “ao contrário da computação clássica, em que você pode copiar um valor e colar em outra variável, na computação quântica isso é impossível”.
Isso acontece porque os estados quânticos podem estar em sobreposição, em outras palavras, podem representar vários valores ao mesmo tempo. Para copiar um dado quântico, seria necessário “ler” esse estado, mas, ao fazer isso, ele “colapsa”, perdendo sua superposição e assumindo um único valor. “Você até consegue copiar o estado depois de ele ser colapsado, mas não o original”, explica o estudante.
Em linguagens quânticas, não é permitido reutilizar uma mesma variável mais de uma vez na mesma operação, pois isso equivaleria a copiar ela. “Você não pode somar um número com ele mesmo, por exemplo, porque estaria fazendo uma cópia”, comenta Flávio. Por isso, os programadores precisam buscar outras maneiras de realizar cálculos equivalentes, respeitando as limitações impostas pelas leis da física quântica.
O que é a expressividade monádica?
A expressividade monádica quer dizer o quanto o modelo de programação baseado em mônadas consegue representar os fenômenos quânticos. Ou seja, é a capacidade de uma linguagem de programação quântica expressar, controlar e combinar operações quânticas complexas usando mônadas.
Para Flávio, uma mônada pode ser entendida como uma “cápsula que envolve um tipo de dado”. A ideia é que a mônada permite organizar e combinar operações de forma segura e previsível, mesmo quando essas operações têm efeitos especiais, como erros ou incertezas.
Em Haskell, as mônadas são essenciais para lidar com operações que podem gerar incertezas, como uma divisão que resulta em erro. “Se eu tenho uma operação que divide por zero, ela pode me tornar um tipo opcional. Pode ser que essa operação tenha um resultado, pode ser que não”, explica Flávio. Esse tipo de controle evita falhas e torna o código mais confiável.
O que é a programação em nível de tipo?
A programação em nível de tipo pode ser utilizada não somente na computação quântica. Segundo Flávio, “é algo geral, pode ser usado em qualquer problema.”
Em linguagens comuns, o programador tem liberdade para manipular dados quase de qualquer forma, inclusive de modos sem sentido lógico, como “somar duas palavras”. Para evitar esse tipo de erro, existe o compilador, um programa que traduz o código e verifica se ele faz sentido. “O compilador impede e barra, e manda uma mensagem de erro pro programador: ‘tu não pode somar duas palavras, tu não pode passar um parâmetro desse tipo para um processo que espera outro tipo’”, explica Flávio.
A programação em nível de tipo leva essa verificação a um novo patamar. Em vez de apenas checar se o dado é do tipo certo, o programador pode definir regras e restrições específicas dentro dos próprios tipos. “Com a programação em nível de tipo, o programador consegue descrever lógica no tipo”, afirma. Isso significa que é possível criar funções que aceitem, por exemplo, apenas números pares. “Se o programador tentar passar um número ímpar, vai dar erro”, completa.
Com esse recurso, o próprio desenvolvedor pode criar suas limitações personalizadas dentro do código, garantindo que erros sejam detectados antes da execução. “O próprio programador consegue controlar a tipagem. Se eu precisar que seja um inteiro com alguma outra limitação, eu também posso construir a minha verificação nesse sentido”, destaca o pesquisador.

Texto por Emmanuelly Zini, acadêmica de jornalismo, com supervisão da Subdivisão de Comunicação do CT/UFSM
Quer divulgar suas ações, pesquisas, projetos ou eventos no site? Acesse os serviços de Comunicação do CT-UFSM! Siga o CT nas redes sociais: Facebook e Instagram!