¿Qué lenguajes de programación se usan en la computación cuántica?

Basado en un escaneo rápido para actualizarme, Try Your Hand at Quantum Computing With Quantum Playground de Google sigue siendo la mejor base para la experimentación cuántica en la actualidad.

“Quantum Computing Playground es un experimento WebGL Chrome basado en navegador. Cuenta con una computadora cuántica acelerada por GPU con una interfaz IDE simple y su propio lenguaje de scripting con depuración y funciones de visualización de estado cuántico en 3D. Quantum Computing Playground puede simular registros cuánticos de manera eficiente a 22 qubits, ejecuta los algoritmos de Grover y Shor, y tiene una variedad de puertas cuánticas integradas en el lenguaje de script “.

Javascript es el modelo para Qscript. Mirando hacia el futuro, probablemente sea el caso en que un lenguaje de programación de sistemas pesados ​​como C ++, aumentado por llamadas de función para acceder al procesador cuántico, será el modo en el que los desarrolladores y programadores de aplicaciones trabajan con la computación cuántica. En el nivel más profundo de construcción del sustrato que admite llamadas de función, un desarrollador usaría un lenguaje como The Quipper Language.

(citando) “ Quipper es un lenguaje de programación funcional incrustado y escalable para la computación cuántica. Proporciona, entre otras cosas:

  • Un lenguaje de descripción de circuito de alto nivel. Esto incluye descripciones puerta a puerta de fragmentos de circuitos, así como potentes operadores para ensamblar y manipular circuitos.
  • Una semántica monádica, que permite una mezcla de estilos de programación procesal y declarativa.
  • Instalaciones integradas para la síntesis automática de circuitos cuánticos reversibles, incluso a partir del código clásico.
  • Soporte para circuitos jerárquicos.
  • Tipos de datos cuánticos extensibles.
  • Transformadores de circuito programables.
  • Soporte para tres fases de ejecución: tiempo de compilación, tiempo de generación del circuito y tiempo de ejecución del circuito. Una operación de elevación dinámica para permitir que la generación de circuitos sea paramétrica en los valores generados en el tiempo de ejecución del circuito.
  • Amplias bibliotecas de funciones cuánticas, que incluyen: bibliotecas para enteros cuánticos y aritmética de punto fijo; la transformada cuántica de Fourier; una implementación eficiente de Qram; bibliotecas para la simulación de circuitos pseudoclásicos, circuitos estabilizadores y circuitos arbitrarios; bibliotecas para la descomposición exacta y aproximada de circuitos en conjuntos de puertas específicos. (cita final)

Para un sistema mítico, es sorprendente las alturas a las que se ha desarrollado la infraestructura.

Anexo 4/21/2017. Esta respuesta está fechada. Poniéndolo al día: mi respuesta a la pregunta de quora: ¿Dónde puedo encontrar más información sobre la computación cuántica de IBM?

IBM Quantum Experience es el mejor lugar para eso. No pude determinar a qué puedes acceder sin registrarte para la admisión a su proceso. Al responder con franqueza y paciencia, obtuve acceso a su sistema. Después de haber aprendido mucho con la lectura parcial, me sorprendió lo que aprendí después de su tutorial.

Este sitio ofrece programación utilizando una interfaz gráfica en la que la lógica de la computación cuántica se asigna a símbolos móviles que corresponden a varias puertas cuánticas en posiciones a lo largo de los canales. En mi humilde opinión, esto es preferible a cualquier idioma que requiera una secuencia de palabras de comando.

La mayoría de los experimentadores en el campo de la computación cuántica usan LabView o Python para controlar sus experimentos. Martinis Group, uno de los grupos experimentales líderes en el campo, también ha desarrollado LabRAD, una plataforma para la adquisición de datos y el control de instrumentos.

No sospecho que realmente funcionará de la manera que usted describe. Formular y escribir “algoritmos cuánticos” requerirá un cambio de paradigma significativo para el programador laico. Creo que, en cambio, veremos una (nueva) serie de abstracciones e intérpretes, que descompondrá el 4GL tradicional en canales de instrucción amigables con la cuantía (algunos de ellos no deterministas).

Pero, para mí personalmente, el marco interesante sería un ‘lenguaje ensamblador’ que incluye terminología cuántica: SIMUL (D3, D4) o ALL_POSS (B26) o similar. Crudo como parece, esta es la única forma de (fácilmente) presentar Q-computing a un público general.

El primer lenguaje de programación de computación cuántica implementado se llama QCL (abreviatura de lenguaje de computación cuántica; qué imaginativo).

Su sintaxis se asemeja a la del lenguaje de programación C. Lo que lo hace especial es su capacidad de usar tipos de datos clásicos y cuánticos en el mismo código de programa.

A continuación se muestra un fragmento de ejemplo que muestra la operación Hadamard aplicada a un qureg, que es esencialmente una matriz de qubits.

qureg x1 [2]; // registro cuántico de 2 qubits x1
qureg x2 [2]; // registro cuántico de 2 qubits x2
H (x1); // Operación Hadamard en x1
H (x2 [1]); // Operación Hadamard en el primer qubit del registro x2

Antes de eso, había un seudocódigo cuántico propuesto por E. Knill, quien fue el primero en crear una forma formal de describir algoritmos cuánticos.

Desde entonces, se han creado e implementado varios otros lenguajes de programación cuántica. Puede encontrar una lista de idiomas en la página de Wikipedia: programación cuántica

Todavía no hay computadoras cuánticas. (con la posible excepción de la onda D), por lo que su pregunta es mote. Especialmente considerando que hay una gran variedad de “cosas” que podrían terminar llamándose QC.

Si desea asumir que los QC hacen algo por las computadoras “clásicas” y tienen que estar interconectados (al menos a priori no hay necesidad de esto), la interfaz probablemente sea C, simplemente porque C es la más simple hacia el puerto. Si tiene que haber un “sistema de control” clásico, también apostaría a que los FPGA tendrán un uso intensivo.

Pero todo esto es especulación pura. la respuesta más “realista” y actual vendría de alguien que realmente usa la onda D.

Por el momento, solo se ha diseñado un número limitado de algoritmos y protocolos cuánticos. Estos están redactados en términos de una secuencia de transformaciones unitarias que se aplicarán a un montón de bits cuánticos. Por lo tanto, a veces es útil dibujar un diagrama de qué qubits se someten a qué operaciones unitarias, y de hecho podría programar algoritmos cuánticos de esa manera, y utilizar el paralelismo también.

Sin embargo, este método de programación realmente no escala. Una vez que estemos lidiando con cientos de qubits y operaciones muy complicadas en ellos, el lenguaje necesitaría una forma de modularizar el problema.

Realmente, lo que sospecho es que, al menos en el futuro previsible, el procesamiento cuántico (si alguna vez se convierte en un negocio serio) será una expansión asociada a una computadora clásica. La computadora clásica se programa normalmente, pero puede usar el módulo cuántico para ejecutar una serie de algoritmos cuánticos dedicados que se describen a un nivel muy bajo, como se explicó anteriormente.

Varios de estos idiomas se han desarrollado a lo largo de los años,
pero este se está volviendo más popular: The Quipper Language

Esto me hace pensar en 2 cosas:
¿Qué lenguaje de programación se usará? ¿Y qué lenguajes de programación deberían usarse, idealmente?

Supongo que será C. Por muchas razones, pero quizás lo más importante, porque C suele ser un lenguaje pionero. Es lo primero que la gente quiere portar al desarrollar nuevo hardware.

Por lo que entiendo sobre las computadoras cuánticas (no mucho), tendría que adivinar que querremos y necesitaremos un idioma diferente todos juntos. Al ver cómo incluso la aritmética se hace diferente. Recuerdo haber leído un artículo sobre la forma en que se comportaría el código de la máquina, lo cual fue extraño.

La computación cuántica suena genial, pero está casi por encima de mi cabeza.

Después de intentar leer el artículo de Wikipedia sobre el algoritmo de Shor y no tener absolutamente ninguna idea de cómo imaginarlo, llegué a la siguiente conclusión:

Verilog cuántico.

Cualquier código de shell probablemente se escribiría en C ++ o Fortran (o posiblemente The Other Swift), como es tradicional. Sin embargo, parece probable basado en lo poco que puedo entender del artículo que un dispositivo de computación cuántica sería esencialmente un FPGA cuántico, lo que significa que usaría un HDL de algún tipo para programarlo. La academia tradicionalmente depende en gran medida de las herramientas FOSS, y hay un soporte ligeramente mejor para Verilog que VHDL en el mundo FOSS, por lo que me imagino que un dialecto futuro de Verilog con un modelo incorporado para abordar qubits sería la respuesta más probable para ese tipo de hecho, pasando E / S de ida y vuelta entre un shell de C ++.

De hecho, creo que incluso si tuviera la QPU incorporada en el procesador principal, un conjunto de instrucciones similar a HDL sería la forma más inteligente de hacerlo, ya que las HDL tienden a funcionar de manera similar a Flash. Una QPU en funcionamiento sería un cuadro negro de todos modos, por lo que esencialmente estaría escribiendo un tipo de programa de filtro donde el algoritmo se repite (o lo que sea que hagan los qubits para iterar las cosas) hasta que la respuesta se vea bien, luego enviarla a un registro de salida . Reloj por reloj funciona muy bien para ese tipo de cosas.

Aunque podría estar malentendiendo completamente el proceso aquí, entonces esta respuesta vale el papel en el que está impresa.

No creo que ningún lenguaje existente sea adecuado para programar computadoras cuánticas. En este momento, las máquinas que se llaman computadoras cuánticas (pero son solo parcialmente) no son particularmente complejas en operación, por lo que se están programando a un nivel más o menos “de metal desnudo”, similar a los interruptores de la consola de un Altair. . Una vez que se amplíen (suponiendo que lo hagan) y lleguen a algún tipo de estandarización, entonces podemos comenzar a hablar sobre lenguajes de alto nivel.

Incluya en su lista Q #, de Microsoft

El lenguaje de programación Q #

More Interesting

El universo tiene 10 ^ 80 átomos, pero el algoritmo de Shor puede factorizar en 10 ^ 500. ¿Cómo podría funcionar el algoritmo de Shor? ¿Podría ser QM 'interpretación de muchos mundos'?

¿Qué califica exactamente como una 'observación' en el contexto de la física cuántica?

¿Cómo se usan las trenzas (teoría de nudos) en las computadoras cuánticas?

Si tuviera que encontrar un método algo plausible para usar el entrelazamiento cuántico para la comunicación entre galaxias, ¿cómo lo describiría?

¿Cómo se determina cuándo una computadora cuántica ha encontrado una solución correcta dado que cualquier observación destruye la coherencia qubit?

¿El borrador cuántico invierte su paso del tiempo para borrar información, o la eliminación de información es instantánea debido al enredo cuántico?

¿Cuánto tiempo crees que tomará ver el impacto de la Computación Cuántica de Google?

¿Crees que los esfuerzos de la NSA en computación cuántica son más avanzados que los de los mejores laboratorios civiles?

¿Por qué el cuadrado del operador L da el número cuántico orbital, mientras que el operador L solo da el número cuántico magnético?

Si asumimos que los procesos cuánticos ocurren en el cerebro humano, ¿sería posible enredar la conciencia humana con una computadora cuántica?

La investigación publicada en Nature predice que el logro de la computación cuántica efectiva para 2025 comprometerá los datos registrados antes de ese momento. ¿Cuáles son las implicaciones para las empresas y los gobiernos?

¿Qué es una máquina D-Wave?

¿Cómo puede un campo cuántico tener una polarización?

¿Cuál es la relación entre qubit y matriz de densidad?

¿Por qué los qubits pueden ser más útiles que los bits?