Las computadoras cuánticas son diferentes a las que tenemos en casa. Funcionan bajo los misteriosos principios de la mecánica cuántica, en donde, por ejemplo, un objeto puede tener diferentes estados cuánticos y solamente, cuando se colapsa la función de onda (lo observamos), entonces se conoce su estado final.
Este tipo de ideas han permitido el desarrollo de lo que se llaman computadoras cuánticas, que buscan en el fondo poder hacer cálculos mucho más rápidamente, para poder atacar problemas como el del clima, que hoy en día sigue sin ser predecible en muchos sentidos.
Pero las computadoras cuánticas requieren de lenguajes de programación que los seres humanos podamos usar.
Se sabe que científicos de cómputo, del ETH Zurich, han diseñado el primer lenguaje de programación para ser usado en las computadoras cuánticas que es simple, confiable y tan seguro como los lenguajes de programación que tenemos en las computadoras clásicas.
«Programar las computadoras cuánticas sigue siendo un reto para los investigadores», dice Martin Vechev, profesor de ciencias de la computación en el ETH, quien agrega: «es por lo que estoy tan emocionado en continuar la tradición de ETH Zurich en el desarrollo de computadoras cuánticas y sus lenguajes de programación».
Como los lenguajes tradicionales
«Nuestro lenguaje de computadoras, llamado Silq, permite a los programadores usar el potencial de las computadoras cuánticas mejor que con los lenguajes hasta ahora diseñados, porque el código es más compacto, más rápido, más intuitivo y más fácil de entender para los programadores», destaca el experto.
Vechev ha mostrado Silq a otros expertos en la conferencia PLDI 2020, que trata sobre los lenguajes de programación. Pero más aún, para facilitar la discusión y el desarrollo posterior, el lenguaje se puede descargar del propio sitio de Silq.
El potencial de las computadoras cuánticas es evidente, pero se necesita trabajar mucho más en una infraestructura fuerte que pueda soportar los avances en este rubro.
Por ejemplo, con computadoras cuánticas, usando principios como la superposición de estados, se puede llegar a resolver problemas de forma más eficiente que, además, las computadoras clásicas no pueden resolver en un tiempo razonable.
Algunos algoritmos cuánticos, valga la expresión, que no son más que estrategias de computación, pueden ser más rápidos que los algoritmos clásicos, los cuales no explotan todo el potencial de las máquinas cuánticas. Sin embargo, a la fecha, estos nuevos algoritmos no pueden usarse en las computadoras cuánticas por la cantidad de errores que hay que contemplar.
Un lenguaje de programación que describa la intención de programador
Usar el potencial de la computación cuántica no solamente requiere de tener la última tecnología, sino el tener a la mano un lenguaje que pueda describir los algoritmos cuánticos, los cuales podemos pensar como «recetas» para solucionar problemas. Así, un lenguaje de programación describe un algoritmo de forma tal que la computadora pueda ejecutar los cálculos deseados.
Uno de los problemas actuales es que los lenguajes de programación cuánticos están relacionados muy cercanamente con el hardware específico de estas nuevas computadoras.
Para los programadores, estos lenguajes basados en el hardware de las máquinas son susceptibles de muchísimos más errores, pues cada instrucción debe ser extremadamente detallada y describir explícitamente las necesidades que se requieren para implementar dichos algoritmos.
Por ello, el equipo de Vechev decidió desarrollar Silq, el cual es una idea que ya más de un programador habría contemplado, pero que ponerla a trabajar dista de ser fácil.
«Silq es el primer lenguaje de programación cuántico que no está diseñado alrededor de la construcción y funcionalidad del hardware, sino más bien pensando en la manera en que los programadores quieren resolver un problema, sin tener que entender todos los detalles del hardware que usan, de la arquitectura e implementación», dice Benjamin Bischsel, un estudiante de doctorado del grupo de Vechev que está supervisando el desarrollo de Silq.
Un lenguaje de alto nivel
Los científicos de cómputo hablan de los lenguajes de programación como la manera de abstraer las ideas para potenciarlas en instrucciones que se ejecuten en una computadora para resolver un problema.
Los lenguajes de programación pueden ser de muy bajo nivel, cosa que está muy asociada con las computadoras cuánticas, en donde se tiene una correlación entre los detalles del hardware y el software a usar, o bien los lenguajes de alto nivel, que toman muchas de estas consideraciones de bajo nivel pero que el programador omite, pues la máquina se encarga de esto.
Silq es el primer lenguaje de computadoras cuánticas de alto nivel, el cual es mucho más expresivo en su abstracción de ideas y de esa manera se pueden programar problemas complejos incluso usando menos código. Esto hace que los algoritmos sean más comprensibles y más fácil de usar el lenguaje a los programadores. Además, la idea es que pueda usarse en diferentes arquitecturas.
Los errores cuánticos y cómo eliminarlos
Probablemente la innovación más interesante es el trabajo hecho para tratar con los errores que en el mundo de la computación cuántica son enormes. Para ello, Silq sigue una interesante estrategia: la computadora hace los cálculos en pasos intermedios, lo que crea resultados intermedios o temporales.
En una computadora cuántica estos valores se borran automáticamente y se denomina como «recolección de basura», en donde datos ya no usados se eliminan para disponer de más memoria.
En el caso cuántico, esto no es tan sencillo debido a algunos principios cuánticos como el entrelazamiento cuántico, en donde datos previamente calculados pueden interactuar con los actuales, lo que interfiere con los cálculos, dando posibilidades enormes de error. Por ello, borrar los datos temporales de las computadoras cuánticas requieren de una técnica más avanzada llamada «uncomputation».
Por ello, de acuerdo con los investigadores:
«Silq es el primer lenguaje de programación que automáticamente identifica y borra los valores que no se necesitan más», explica Bichsel. A través de un método automático de uncomputation, se pueden eliminar datos de operaciones cuánticas, a lo que se le denomina en Silq como «qfree».
«Silq es el mayor avance en términos de optimización de los lenguajes de programación para computadoras cuánticas, aunque esto no es la fase final del desarrollo», indica Vechev.
Y sí, hay muchos problemas que resolver aún, pero como Silq es más fácil de entender, los creadores esperan que eso estimule el desarrollo de lenguajes de programación cuánticos que a la postre permita el desarrollo de nuevos algoritmos cuánticos.