Categorias

Conheça Silq: a primeira linguagem criada para popularizar a programação quântica

A computação quântica segue sendo a grande promessa do futuro da tecnologia da informação. Entretanto, essa promessa vem cercada de desafios a serem superados, apesar do otimismo dos envolvidos. Um desses obstáculos parece ter sido conquistado por um time de quatro pesquisadores do Instituto Federal de Tecnologia (ETH) de Zurique, na Suíça: desenvolver uma linguagem de programação específica que atenda suas necessidades mas que seja intuitiva para os programadores.

Essa linguagem foi batizada de Silq e tem seu funcionamento parecido com as linguagens C, Java, Python e outras projetadas para computadores eletrônicos. De acordo com um dos envolvidos em sua concepção, o professor de Ciência da Computação Martin Vechev, do laboratório SRI do ETH, “nossa linguagem de programação quântica Silq permite que os programadores utilizem o potencial dos computadores quânticos melhor do que com as linguagens existentes, porque o código é mais compacto, mais rápido, mais intuitivo e mais fácil de entender para os programadores”.

Origem

Silq é fruto dos esforços dos estudantes de Doutorado em Ciência da Computação Benjamin Bichsel , Maximilian BaaderTimon Gehr e do professor Martin Vechev.

Ela veio para atender uma necessidade do ecossistema da computação quântica: “ajudar a preencher a lacuna conceitual entre linguagens clássicas e quântica. Como conseqüência, Silq reduz a barreira de entrada para programadores não especialistas em quântica,  ajuda a expressar algoritmos complicados de forma limpa e concisa e facilita a transferência de tecnologia de mais de 50 anos de técnicas de programação e análise desenvolvidas para computação clássica, no domínio da programação quântica”.

Curiosamente, essa não era a meta original do time de pesquisadores. O objetivo era simplesmente analisar algoritmos quânticos. Entretanto, o time percebeu que as linguagens atuais de computação clássica não conseguiam expressar seu objeto de estudo com o nível de abstração necessário. Por causa disso, eles optaram em focar seus esforços para o desenvolvimento de uma ferramenta que pudesse ser utilizada não apenas nos laboratórios de sua universidade, mas também por outros entusiastas de computação quântica com as mesmas dificuldades.

“A história do projeto é que queríamos resolver um problema central na computação quântica. E se você deseja resolver um problema central da computação quântica, por exemplo, se deseja analisar e raciocinar sobre programas quânticos, precisa ter uma linguagem na qual esses problemas sejam expressos – e há linguagens existentes. Examinamos vários problemas na computação quântica, mas o que continuava surgindo como uma questão fundamental é que analisamos os programas e como eles são expressos – e você vê que isso não é o ideal, não está otimizado”, contou Vechev.

Foram quase dois anos de desenvolvimento até chegarem no ponto em que a linguagem desenvolvida estava pronta para ser disponibilizada para todos. De acordo com Bichsel, isso foi possível “graças à combinação de diferentes conhecimentos em design de linguagem, física quântica e implementação. Se outras equipes de pesquisa e desenvolvimento abraçarem nossas inovações, será um grande sucesso”.

No momento, Silq conta com um portal oficial, onde é possível ter uma introdução a seus principais conceitos.  Além disso, a linguagem também está hospedada no Github, licenciada de forma gratuita e aberta sob uma Boost Software License 1.0. No Github, também estão disponibilizados um parser, um type checker e um simulador.

Características

Atualmente, a programação quântica é extremamente dependente do hardware sendo utilizado. A abordagem até então envolvia enviar instruções detalhadas para os circuitos subjacentes, uma tarefa suscetível a erros dada a complexidade dos componentes e cansativa por causa da necessidade de se descrever cada minúcia para a implementação dos algoritmos quânticos.

Silq veio para mudar isso: “o Silq é a primeira linguagem de programação quântica que não é projetada principalmente para a construção e funcionalidade do hardware, mas para a mentalidade dos programadores quando eles querem resolver um problema – sem exigir que eles entendam todos os detalhes da arquitetura e implementação do computador”, explicou Bichsel.

Isso implica em uma série de vantagens. Por ser uma linguagem de alto nível, ela é mais expressiva, podendo descrever tarefas mais complexas com menos código. Ela também é mais acessível aos programadores e mais flexível, uma vez que pode ser utilizada com mais arquiteturas de computadores quânticos e não focada em um hardware em específico.

Seus criadores também apontam um recurso poderoso da Silq: descomputação automática, sem intervenção do programador. O termo descomputação é relativamente novo e é característico do ambiente quântico. Na computação clássica, o processo de “coleta de lixo”, ou seja, a eliminação de valores temporários desnecessários, é uma simples questão de gerenciamento de memória. Na computação quântica, esse processo é fundamental, porém mais complexo devido ao fenômeno do entrelaçamento quântico, que é a base dos qubits. Valores tendem a ser preservados através de qubits e podem interferir ao interagir com dados novos, provocando erros. Para essa limpeza, é preciso executar a descomputação.

De acordo com Bichsel, “Silq é a primeira linguagem de programação que identifica e apaga automaticamente  valores que não são mais necessários”, libertando o programador da necessidade de se preocupar constantemente com a descomputação. “Entre outros benefícios, isso nos permite dar suporte nativo a expressões aninhadas, conhecidas das linguagens clássicas”.

E o Q#?

O Q# foi lançado pela Microsoft em 2017, como parte do seus esforços para evoluir a computação quântica com o Quantum Development Kit. Sua proposta era muito similar à do Silq. Nas palavras da própria Microsoft, “projetado para quantum, o Q # é a linguagem de programação de alto nível mais acessível com um sistema de tipo nativo para qubits, operadores e outras abstrações”.

Então, quais são as vantagens do Silq em relação àquela que veio antes? Silq requer menos código e emprega menos funções pré-criadas.

Para demonstrar a eficiência de seu projeto, os quatro pesquisadores resolveram todas as 28 tarefas que a Microsoft havia proposto em desafios de Q# em 2018 e 2019. O resultado foi mais satisfatório e intuitivo em Silq.

Compare os dois fragmentos de código abaixo que realizam as mesmas tarefas:

// Q#
X(qs[0]); X(qs[1]);
(Controlled X)(qs, a[0]);
X(qs[0]); X(qs[1]);

e

// Silq (correspondente)
if !qs[0] && !qs[1] {
a[0] := X(a[0]);
}

Mais recursos

Por enquanto, Silq ainda está em seus primeiros momentos. Ela sequer foi testada em computadores quânticos reais e foi desenvolvida com o uso de simuladores.

Para os interessados em se aventurar nessa nova fronteira, há mais recursos disponíveis relacionados a Silq: