¿Deberán reconstruirse los lenguajes de programación frente a la computación cuántica? ¿Valdría la pena que?

Se requerirán lenguajes de programación ligeramente nuevos cuando las computadoras cuánticas hagan su aparición. Sin embargo, no estoy de acuerdo con las otras respuestas en términos de cuán diferentes serán estos nuevos idiomas. Los lenguajes de programación cuántica se parecerán mucho a los lenguajes de programación modernos .

El semestre pasado, hice un proyecto con un grupo que estaba trabajando hacia computadoras cuánticas programables a través de:

  • QASM: un lenguaje ensamblador cuántico
  • Andamio: un lenguaje de programación tipo C que tiene soporte especial para puertas cuánticas
  • y ScaffCC, un compilador basado en LLVM que compila de Scaffold a QASM

Los siguientes fragmentos de código ilustran cómo se ven los códigos QASM y Scaffold:
De un vistazo, puede pensar que se trata de C o algún lenguaje de bajo nivel. Y esencialmente lo es, solo con soporte para operaciones como las puertas Hadamard / CNOT y los tipos de datos que encapsulan para qubits.

El compilador tiene algunas características especiales para la computación cuántica específica:

Pero al final del día, el código de ensamblaje QASM final es solo una lista de instrucciones que debe seguir una computadora cuántica. Aplique este cambio físico aquí, elimine esta área con un pulso de microondas, enfríe esta región, elimine nuevamente el área anterior, etc.

En resumen, los lenguajes de programación existentes solo necesitarán algunas bibliotecas nuevas para admitir puertas cuánticas y almacenamiento, ¡y eso debería ser suficiente! También existen otros lenguajes de programación cuántica, como QCL: http://tph.tuwien.ac.at/~oemer/q…

Para leer más, recomiendo consultar Page en princeton.edu, ftp://ftp.cs.princeton.edu/techr… y Page en princeton.edu.

Antes de pensar en lenguajes de programación, piense en computadoras cuánticas. ¿Qué los hace especiales?

Bueno, tal vez no sean tan especiales como algunas personas piensan. Las computadoras cuánticas supuestamente pueden resolver (algunos) problemas no polinómicos en tiempo polinómico. Pero … también lo pueden hacer las computadoras analógicas buenas y anticuadas, al menos en principio.

¿Cómo es eso, preguntas? Bueno, las computadoras cuánticas son como las computadoras analógicas en un aspecto crucial: a diferencia de las computadoras digitales, que funcionan con dígitos discretos, tanto las computadoras cuánticas como las analógicas funcionan utilizando cantidades continuas. En el caso de una computadora analógica, podría ser una longitud, un ángulo de rotación, un voltaje; en el caso de una computadora cuántica, es la fase de una función de onda. Pero es la naturaleza continua de estas cantidades lo que otorga a las computadoras cuánticas y analógicas potencias adicionales en comparación con las máquinas digitales.

Entonces, ¿por qué no usamos computadoras analógicas para el criptoanálisis, factorizando números primos grandes y todo eso? Simple: no son muy precisos. Una precisión de 4 dígitos decimales es bastante decente para una computadora analógica. Ahora con 4 dígitos decimales, no va a factorizar números de 200 dígitos.

Pero las computadoras cuánticas difieren de las computadoras analógicas en un aspecto clave: la corrección de errores. Existe un teorema, el llamado teorema del umbral que dice que si se logra un cierto nivel de corrección de errores en una computadora cuántica, entonces esa computadora cuántica puede emular una computadora cuántica ideal sin ningún error. En otras palabras, es como una computadora analógica que funciona con precisión arbitraria.

Sin embargo, este objetivo aún no se ha logrado, y hay escépticos (incluido yo mismo) que piensan que puede ser inalcanzable. (Pero, de nuevo, no soy un experto en computación cuántica, por lo que mi escepticismo puede estar enraizado en la ignorancia).

De todos modos, volvamos a los lenguajes de programación: incluso una computadora analógica ordinaria representa un paradigma informático muy diferente en comparación con las computadoras digitales. Entonces, sí, si las computadoras cuánticas de uso general alguna vez se vuelven prácticas, se programarán utilizando nuevas construcciones de lenguaje. Sin embargo, lo más probable es que las computadoras cuánticas aparezcan como procesadores de propósito especial (al igual que la GPU en las computadoras personales y teléfonos / tabletas de gama alta de hoy en día) en las computadoras digitales convencionales de propósito general, de modo que cualquier programa que se ejecute en ellas estará envuelto dentro de un programa convencional más grande que se ejecuta en la CPU principal de la máquina host. Entonces, por ejemplo, un programa de criptoanálisis puede ser una aplicación en gran medida convencional (con una interfaz de usuario, E / S de archivo, etc.) escrita en un lenguaje de programación convencional, que luego llama al algoritmo de computación cuántica cuando sea necesario, y ese algoritmo se implementaría en un lenguaje adecuado para un procesador cuántico.

Sí, y será más que un nuevo lenguaje: es un cambio completo de paradigma.

Con los lenguajes de programación actuales tenemos que especificar la lógica y los cálculos línea por línea y seguir una secuencia específica de acciones y operaciones.

Las computadoras cuánticas calcularán todos los resultados posibles de un conjunto de problemas a la vez. Por lo tanto, al programarlos, debemos determinar cuál de las posibles respuestas es la correcta. Entonces el paradigma es: especifique el problema y filtre la respuesta.

Es un poco como Quora. Puede hacer una pregunta más o menos bien definida. No tiene que saber cómo la gente llega a la respuesta, pero tendrá que averiguar cuál es la respuesta que le sirve mejor.

Sí, vale la pena, ¡será tremendamente divertido desarrollar el / los idioma (s) y usarlos!

Sí, la computación cuántica probablemente tendrá su propio conjunto de lenguajes de programación, pero esto no es realmente un gran problema. Los lenguajes de programación se reconstruyen todo el tiempo. Se inventan otros nuevos. Los viejos se desvanecen (pero nunca mueren). Esto tiene menos que ver con lo que hay debajo del capó y más con los tipos de aplicaciones que los codificadores están haciendo.