{"id":7389,"date":"2025-10-07T15:56:16","date_gmt":"2025-10-07T18:56:16","guid":{"rendered":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/?p=7389"},"modified":"2025-10-29T13:22:29","modified_gmt":"2025-10-29T16:22:29","slug":"estudante-de-ciencia-da-computacao-desenvolve-artigo-premiado-sobre-programacao-quantica","status":"publish","type":"post","link":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/2025\/10\/07\/estudante-de-ciencia-da-computacao-desenvolve-artigo-premiado-sobre-programacao-quantica","title":{"rendered":"Estudante de Ci\u00eancia da Computa\u00e7\u00e3o desenvolve artigo premiado sobre programa\u00e7\u00e3o qu\u00e2ntica"},"content":{"rendered":"\n<p><span style=\"font-weight: 400\">O <\/span><em><strong><a href=\"https:\/\/cbsoft.sbc.org.br\/2025\/sblp\/\">29\u00ba Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP)<\/a><\/strong><\/em><span style=\"font-weight: 400\"> premiou como \u201cartigo destaque\u201d a pesquisa <\/span><i><span style=\"font-weight: 400\">\u201cModeling Quantum Computing Constraints: No-Cloning Theorem and Monadic Expressiveness with Type-Level Programming\u201d <\/span><\/i><span style=\"font-weight: 400\">(Modelagem de Restri\u00e7\u00f5es de Computa\u00e7\u00e3o Qu\u00e2ntica: Teorema de N\u00e3o-Clonagem e Expressividade Mon\u00e1dica com Programa\u00e7\u00e3o em N\u00edvel de Tipo), produzido por Fl\u00e1vio Borin Junior, estudante de <\/span><strong><em><a href=\"https:\/\/www.ufsm.br\/cursos\/graduacao\/santa-maria\/ciencia-da-computacao\">Ci\u00eancia da Computa\u00e7\u00e3o<\/a><\/em><\/strong><span style=\"font-weight: 400\">, e por Juliana Vizzotto, <\/span><span style=\"font-weight: 400\">professora associada do <\/span><em><strong><a href=\"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/departamentos\/dlsc\">Departamento de Linguagens e Sistemas de Computa\u00e7\u00e3o (DLSC)<\/a><\/strong><\/em><span style=\"font-weight: 400\">. <\/span><span style=\"font-weight: 400\">O simp\u00f3sio, promovido pela Sociedade Brasileira de Computa\u00e7\u00e3o (SBC), \u00e9 um f\u00f3rum para que estudantes, pesquisadores e profissionais apresentem e discutam ideias e inova\u00e7\u00f5es no projeto, defini\u00e7\u00e3o, an\u00e1lise, implementa\u00e7\u00e3o e uso pr\u00e1tico de linguagens de programa\u00e7\u00e3o.&nbsp;<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/WhatsApp-Image-2025-10-02-at-10.58.33-1024x576.jpeg\" alt=\"\" class=\"wp-image-7390\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/WhatsApp-Image-2025-10-02-at-10.58.33-1024x576.jpeg 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/WhatsApp-Image-2025-10-02-at-10.58.33-300x169.jpeg 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/WhatsApp-Image-2025-10-02-at-10.58.33-768x432.jpeg 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/WhatsApp-Image-2025-10-02-at-10.58.33.jpeg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Certificado artigo de destaque (foto: Divulga\u00e7\u00e3o)<\/figcaption><\/figure>\n\n\n\n<p>&nbsp;<span style=\"font-weight: 400\">Segundo Fl\u00e1vio Borin, a ideia de produzir o artigo veio a partir da leitura de outra pesquisa, o <\/span><strong><a href=\"https:\/\/www.researchgate.net\/publication\/228786841_Modeling_Quantum_Computing_in_Haskell\"><i>Modeling Quantum Computing in Haskell<\/i><\/a><\/strong><span style=\"font-weight: 400\"> (Modelagem de Computa\u00e7\u00e3o Qu\u00e2ntica em Haskell), que introduz computa\u00e7\u00e3o qu\u00e2ntica atrav\u00e9s da programa\u00e7\u00e3o funcional. \u201c\u00c9 um artigo bem antigo e eu percebi que ele era um artigo bem limitado e eu disse \u2018ah, d\u00e1 pra melhorar isso.\u2019 Ent\u00e3o fui tentando, sabia que tinha como. Eu n\u00e3o estava fazendo isso pra publicar. Estava fazendo isso porque sabia que dava pra fazer\u201d, relata Fl\u00e1vio.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Em Haskell, uma linguagem de programa\u00e7\u00e3o funcional, Fl\u00e1vio Borin e Juliana Vizzotto criaram uma biblioteca que simula a computa\u00e7\u00e3o qu\u00e2ntica. Segundo Fl\u00e1vio, o sistema impede que os programadores copiem dados de forma indevida, respeitando um princ\u00edpio fundamental da computa\u00e7\u00e3o qu\u00e2ntica conhecido como teorema da n\u00e3o-clonagem.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Premiado no SBLP, o estudo de Fl\u00e1vio Borin e Juliana Vizzotto n\u00e3o s\u00f3 refor\u00e7a a posi\u00e7\u00e3o do Centro de Tecnologia na pesquisa em computa\u00e7\u00e3o qu\u00e2ntica, como tamb\u00e9m abre caminhos para o desenvolvimento de sistemas mais seguros e precisos, com aplica\u00e7\u00f5es em intelig\u00eancia artificial, criptografia e outras tecnologias emergentes.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Se voc\u00ea entende da \u00e1rea da computa\u00e7\u00e3o, provavelmente voc\u00ea entendeu tudo (ou quase tudo) at\u00e9 aqui. Caso contr\u00e1rio, a seguir iremos detalhar alguns conceitos importantes para que voc\u00ea compreenda melhor a pesquisa.&nbsp;<\/span><\/p>\n\n\n\n<p><b>O que \u00e9 a linguagem Haskell?<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Haskell \u00e9 uma linguagem de programa\u00e7\u00e3o 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\u00e7\u00f5es, que s\u00e3o como receitas que transformam ingredientes em resultados previs\u00edveis e confi\u00e1veis.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Outra caracter\u00edstica importante \u00e9 que Haskell s\u00f3 executa o que realmente \u00e9 necess\u00e1rio, permitindo trabalhar com c\u00e1lculos complexos de forma eficiente. Por isso, \u00e9 muito usada em pesquisas acad\u00eamicas, computa\u00e7\u00e3o te\u00f3rica e sistemas que exigem alta precis\u00e3o, como a computa\u00e7\u00e3o qu\u00e2ntica e intelig\u00eancia artificial.<\/span><\/p>\n\n\n\n<p><b>O que \u00e9 a computa\u00e7\u00e3o qu\u00e2ntica?<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Enquanto a computa\u00e7\u00e3o cl\u00e1ssica depende de circuitos el\u00e9tricos para processar informa\u00e7\u00f5es, a computa\u00e7\u00e3o qu\u00e2ntica busca novas formas de realizar c\u00e1lculos, aproveitando as propriedades da f\u00edsica qu\u00e2ntica.&nbsp;<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Uma das principais diferen\u00e7as \u00e9 que a computa\u00e7\u00e3o qu\u00e2ntica \u00e9 revers\u00edvel, ou seja, todas as opera\u00e7\u00f5es podem ser desfeitas. Al\u00e9m disso, ler um valor qu\u00e2ntico altera o pr\u00f3prio sistema. \u201cNa computa\u00e7\u00e3o cl\u00e1ssica, voc\u00ea l\u00ea um valor da mem\u00f3ria e \u00e9 normal. Na computa\u00e7\u00e3o qu\u00e2ntica, n\u00e3o. Ler um valor tem um efeito global que se estende por todo o resto da mem\u00f3ria\u201d, explica o pesquisador.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Essa caracter\u00edstica tamb\u00e9m traz uma vantagem importante: o paralelismo natural. Segundo Fl\u00e1vio, \u201cna computa\u00e7\u00e3o qu\u00e2ntica, voc\u00ea consegue executar v\u00e1rias coisas ao mesmo tempo utilizando o pr\u00f3prio sistema f\u00edsico. Enquanto na computa\u00e7\u00e3o cl\u00e1ssica voc\u00ea precisa de mecanismos para tratar concorr\u00eancia, na qu\u00e2ntica isso j\u00e1 vem embutido na f\u00edsica\u201d.<\/span><\/p>\n\n\n\n<p><b>O que s\u00e3o qubits?<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Na computa\u00e7\u00e3o cl\u00e1ssica existem os bits, que podem estar em dois estados poss\u00edveis, o 0 ou o 1. Tudo o que \u00e9 feito por um computador \u00e9 formado por combina\u00e7\u00f5es de zeros ou uns.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">J\u00e1 os qubits (<\/span><i><span style=\"font-weight: 400\">quantum bit<\/span><\/i><span style=\"font-weight: 400\">) s\u00e3o a vers\u00e3o qu\u00e2ntica dos bits. A diferen\u00e7a entre eles \u00e9 que, enquanto um bit s\u00f3 pode estar em um estado, o qubit pode estar em uma combina\u00e7\u00e3o de dois estados diferentes.<\/span><\/p>\n\n\n\n<p><b>O que \u00e9 teorema da n\u00e3o-clonagem?<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">O teorema da n\u00e3o-clonagem pro\u00edbe a c\u00f3pia de informa\u00e7\u00f5es qu\u00e2nticas. Como explica Fl\u00e1vio, \u201cao contr\u00e1rio da computa\u00e7\u00e3o cl\u00e1ssica, em que voc\u00ea pode copiar um valor e colar em outra vari\u00e1vel, na computa\u00e7\u00e3o qu\u00e2ntica isso \u00e9 imposs\u00edvel\u201d.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Isso acontece porque os estados qu\u00e2nticos podem estar em sobreposi\u00e7\u00e3o, em outras palavras, podem representar v\u00e1rios valores ao mesmo tempo. Para copiar um dado qu\u00e2ntico, seria necess\u00e1rio \u201cler\u201d esse estado, mas, ao fazer isso, ele \u201ccolapsa\u201d, perdendo sua superposi\u00e7\u00e3o e assumindo um \u00fanico valor. \u201cVoc\u00ea at\u00e9 consegue copiar o estado depois de ele ser colapsado, mas n\u00e3o o original\u201d, explica o estudante.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Em linguagens qu\u00e2nticas, n\u00e3o \u00e9 permitido reutilizar uma mesma vari\u00e1vel mais de uma vez na mesma opera\u00e7\u00e3o, pois isso equivaleria a copiar ela. \u201cVoc\u00ea n\u00e3o pode somar um n\u00famero com ele mesmo, por exemplo, porque estaria fazendo uma c\u00f3pia\u201d, comenta Fl\u00e1vio. Por isso, os programadores precisam buscar outras maneiras de realizar c\u00e1lculos equivalentes, respeitando as limita\u00e7\u00f5es impostas pelas leis da f\u00edsica qu\u00e2ntica.<\/span><\/p>\n\n\n\n<p><b>O que \u00e9 a expressividade mon\u00e1dica?&nbsp;<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">A expressividade mon\u00e1dica quer dizer o quanto o modelo de programa\u00e7\u00e3o baseado em m\u00f4nadas consegue representar os fen\u00f4menos qu\u00e2nticos. Ou seja, \u00e9 a capacidade de uma linguagem de programa\u00e7\u00e3o qu\u00e2ntica expressar, controlar e combinar opera\u00e7\u00f5es qu\u00e2nticas complexas usando m\u00f4nadas.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Para Fl\u00e1vio, uma m\u00f4nada pode ser entendida como uma \u201cc\u00e1psula que envolve um tipo de dado&#8221;. A ideia \u00e9 que a m\u00f4nada permite organizar e combinar opera\u00e7\u00f5es de forma segura e previs\u00edvel, mesmo quando essas opera\u00e7\u00f5es t\u00eam efeitos especiais, como erros ou incertezas.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Em Haskell, as m\u00f4nadas s\u00e3o essenciais para lidar com opera\u00e7\u00f5es que podem gerar incertezas, como uma divis\u00e3o que resulta em erro. \u201cSe eu tenho uma opera\u00e7\u00e3o que divide por zero, ela pode me tornar um tipo opcional. Pode ser que essa opera\u00e7\u00e3o tenha um resultado, pode ser que n\u00e3o\u201d, explica Fl\u00e1vio. Esse tipo de controle evita falhas e torna o c\u00f3digo mais confi\u00e1vel.<\/span><\/p>\n\n\n\n<p><b>O que \u00e9 a programa\u00e7\u00e3o em n\u00edvel de tipo?<\/b><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">A programa\u00e7\u00e3o em n\u00edvel de tipo pode ser utilizada n\u00e3o somente na computa\u00e7\u00e3o qu\u00e2ntica. Segundo Fl\u00e1vio, \u201c\u00e9 algo geral, pode ser usado em qualquer problema.\u201d<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Em linguagens comuns, o programador tem liberdade para manipular dados quase de qualquer forma, inclusive de modos sem sentido l\u00f3gico, como \u201csomar duas palavras\u201d. Para evitar esse tipo de erro, existe o compilador, um programa que traduz o c\u00f3digo e verifica se ele faz sentido. \u201cO compilador impede e barra, e manda uma mensagem de erro pro programador: \u2018tu n\u00e3o pode somar duas palavras, tu n\u00e3o pode passar um par\u00e2metro desse tipo para um processo que espera outro tipo\u2019\u201d, explica Fl\u00e1vio.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">A programa\u00e7\u00e3o em n\u00edvel de tipo leva essa verifica\u00e7\u00e3o a um novo patamar. Em vez de apenas checar se o dado \u00e9 do tipo certo, o programador pode definir regras e restri\u00e7\u00f5es espec\u00edficas dentro dos pr\u00f3prios tipos. \u201cCom a programa\u00e7\u00e3o em n\u00edvel de tipo, o programador consegue descrever l\u00f3gica no tipo\u201d, afirma. Isso significa que \u00e9 poss\u00edvel criar fun\u00e7\u00f5es que aceitem, por exemplo, apenas n\u00fameros pares. \u201cSe o programador tentar passar um n\u00famero \u00edmpar, vai dar erro\u201d, completa.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Com esse recurso, o pr\u00f3prio desenvolvedor pode criar suas limita\u00e7\u00f5es personalizadas dentro do c\u00f3digo, garantindo que erros sejam detectados antes da execu\u00e7\u00e3o. \u201cO pr\u00f3prio programador consegue controlar a tipagem. Se eu precisar que seja um inteiro com alguma outra limita\u00e7\u00e3o, eu tamb\u00e9m posso construir a minha verifica\u00e7\u00e3o nesse sentido\u201d, destaca o pesquisador.<\/span><\/p>\n\n\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"717\" src=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-1024x717.jpg\" alt=\"\" class=\"wp-image-7391\" srcset=\"https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-1024x717.jpg 1024w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-300x210.jpg 300w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-768x537.jpg 768w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-1536x1075.jpg 1536w, https:\/\/www.ufsm.br\/app\/uploads\/sites\/375\/2025\/10\/IMG-20250925-WA0017-2048x1433.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Fl\u00e1vio Borin Junior, ao centro, recebendo o certificado artigo de destaque (foto: Divulga\u00e7\u00e3o)<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n<p><em>Texto por Emmanuelly Zini, acad\u00eamica de jornalismo, com supervis\u00e3o da Subdivis\u00e3o de Comunica\u00e7\u00e3o do CT\/UFSM<\/em><\/p>\n<p><em>Quer divulgar suas a\u00e7\u00f5es, pesquisas, projetos ou eventos no site?\u00a0<\/em><a href=\"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/servicos\"><em><strong>Acesse os servi\u00e7os de Comunica\u00e7\u00e3o do CT-UFSM<\/strong><\/em><\/a><em>!<\/em>\u00a0<em>Siga o CT nas redes sociais:\u00a0<\/em><a href=\"https:\/\/www.facebook.com\/ctufsm\"><em><strong>Facebook<\/strong><\/em><\/a><em>\u00a0e\u00a0<\/em><a href=\"https:\/\/www.instagram.com\/ctufsm\/\"><em><strong>Instagram<\/strong><\/em><\/a><em>!<\/em><\/p>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Pesquisa explora simula\u00e7\u00e3o de qubits em Haskell e t\u00e9cnicas avan\u00e7adas para evitar c\u00f3pias de dados em sistemas qu\u00e2nticos &#8211; entenda a seguir!<\/p>\n","protected":false},"author":9090,"featured_media":7391,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[1228,961,205,1229,913,1230,1232],"class_list":["post-7389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-geral","tag-artigo-de-destaque","tag-centro-de-tecnologia","tag-ciencia-da-computacao","tag-computacao-quantica","tag-dlsc","tag-linguagens-de-programacao","tag-sblp"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/posts\/7389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/users\/9090"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/comments?post=7389"}],"version-history":[{"count":0,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/posts\/7389\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/media\/7391"}],"wp:attachment":[{"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/media?parent=7389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/categories?post=7389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ufsm.br\/unidades-universitarias\/ct\/wp-json\/wp\/v2\/tags?post=7389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}