Lenguajes de alto nivel para la computación cuántica (o computación cuántica para informáticos)

Por Francisco R. Villatoro, el 6 mayo, 2008. Categoría(s): Computación cuántica • Docencia • Informática • Mecánica Cuántica

 Los lenguajes de programación cuántica se pueden dividir en cuatro grandes clases (A) imperativos, (B) declarativos (normalmente, funcionales), y (C) otros (algunos son sólo formalismos matemáticos). Hay muchos lenguajes de programación útiles para la computación cuántica, algunos incluso de alto nivel. En la página web de I. Glendinning «Quantum programming languages and tools,» tienes un listado de los más interesantes. El artículo Donald A. Sofge, «A Survey of Quantum Programming Languages: History, Methods, and Tools,» ArXiv Preprint, 7 Apr 2008, presenta una revisión bastante completa de este tipo de lenguajes. Un artículo que también merece la pena leer, pero que es más antiguo, es Roland Rüdiger, «Quantum Programming Languages: An Introductory Overview,» The Computer Journal, Volume 50, Number 2, Pp. 134-150, 2006 (web). 

 

 El primer lenguaje de computación cuántica es la Máquina de Turing Cuántica o Máquina de Deutsch, sin embargo, no resulta nada práctica para implementar algoritmos cuánticas (¿quién usa la Máquina de Turing (Clásica) para programar?). Aún así, si conoces Mathematica, puedes usar el notebook de Joachim Hertel, «Quantum Turing Machine Simulator,» The Mathematica Journal, vol. 8, no. 3, 2002. La implementación de los algoritmos Deutsch-Jozsa, de factorización de Shor, y de búsqueda de Grover, son prácticas muy interesantes utilizando dicho simulador pero requerirían un trabajo «inmenso» (si lo logras no dejes de informarme).

El pseudocódigo propuesto por Knill acabó resultando en el primer lenguaje imperativo cuántico, C quántico (QCL http://tph.tuwien.ac.at/~oemer/qcl.html). Estos lenguajes se basan en utilizar una memoria RAM cuántica (QRAM), con un flujo de control clásico que involucra tantos datos clásicos como cuánticos. Merece la pena leer el proyecto fin de carrera (master thesis) de Bernhard Ömer, «Quantum Programming in QCL,» que incluye implementaciones QCL de los algoritmos cuánticos más populares. Por ejemplo, el algoritmo de Peter Shor para factorización de números requiere 9 páginas de texto en QCL, aunque en pesudocódigo es extraordinariamente corto.

Otro lenguaje cuántico basado en C++ es Q Language. Incluyo construcciones cuánticas básicas para todas las operaciones cuánticas más utilizadas, como QHadamard, QFourier, QNot, QSwap, and Qop. Permite definir nuevos operadores y todo en un contexto «orientado a objetos».  Discutir otros lenguajes imperativos, como qGCL (quantum Guarded Command Language) de Sanders-Zuliani o LanQ de Mlnarik nos llevaría lejos.

Los lenguajes cuánticos declarativos se basan en el paradigma funcional utilizando una variante cuántica del Lambda cálculo de Church, por ejemplo, el lenguaje introducido por Maymin que ha sido la base de QFC (Quantum Flow Charts) de Selinger que ha dado lugar a QPL (Quantum Programming Language) y a cQPL.

Más información en la Wiki http://www.quantiki.org/wiki/index.php/Quantum_Programming_Language 



0 Comentarios

  1. increible, ya hay tantos lenguajes cuando todavia esta rama de la computacion esta en pañales, estan todavia en fasee teorica, mucho lenguaje y poco hardware demostrado, almenos ya mostraron la estructura de la maquina no turing?

    1. Rogeiro, no entiendo a qué llamas «máquina no Turing» pero supongo que te refieres a la máquina de Deutsch («máquina de Turing cuántica») que desarrollada en 1985.

      Ya hay hardware cuántico, pero con pocos cubits. El récord (que yo sepa) son 84 cubits de los cuales 28 son para el algoritmo cuántico y el resto para el algoritmo de corrección de errores (más info).

Deja un comentario