¿Qué pasará con los lenguajes de programación actuales cuando la computación cuántica se convierta en una cosa?

Buena pregunta! Gracias por la solicitud de respuesta. ¡Tan intrigante para pensar! No soy experto en computación cuántica, solo conozco algunos conceptos generales. Mi respuesta puede decepcionar, pero lo intentaré.

Me inclino a pensar que la computación cuántica en las primeras etapas, hay dos áreas donde los beneficios del enredo cuántico serían extremadamente útiles:

  1. autenticación, los quarks enredados podrían servir como pares de claves privadas / públicas
  2. sincronización, como en la señalización cuando se realizan procesos concurrentes o determinando la simultaneidad, porque los quarks enredados comunican el estado instantáneamente incluso a grandes distancias.

Para los lenguajes de programación, creo que el problema de la sincronización es más interesante y tiene más aplicaciones.

En los días en que el “mundo” para un proceso en ejecución reside solo en un espacio de memoria, la sincronización se puede hacer con semáforos o bloqueos dentro del espacio de memoria. Luego expandimos nuestros procesos a multiprocesadores y subprocesos múltiples, y al procesamiento distribuido en múltiples nodos de cómputo, resolvemos el problema de la simultaneidad evitándolo, porque la simultaneidad absoluta es muy difícil de determinar en diferentes nodos de cómputo, pero podemos construir un protocolo de comunicación entre procesos de modo que aún podamos coordinar el ORDEN de ejecución, como una cola. El modelo de actor permitió justamente eso. Hay una gran explicación de cómo el modelo de actor resuelve ese problema:

Con los quarks cuánticos, la información se transmite casi instantáneamente, por lo que puede llenarse el vacío donde necesitamos estar seguros de la simultaneidad absoluta entre dos procesos remotos. Además, los quarks cuánticos podrían usarse como semáforos o bloqueos en la memoria distribuida o el almacenamiento distribuido.

Sin embargo, no creo que esto signifique que Actor Model se volverá irrelevante en la computación cuántica, sino que creo que se vuelve más útil. Debido a que asegurar la simultaneidad en muchos, muchos nodos es muy difícil, aún dependeríamos de resolver problemas haciendo que muchos nodos resuelvan pequeñas piezas del problema en paralelo y luego usar el Modelo de actor para ordenar y cotejar los resultados. Las técnicas que ya hemos desarrollado para big data como Hadoop y HBase serían muy aplicables. Podríamos incorporar quarks cuánticos en el bloqueo simultáneo de muchos, muchos segmentos de datos que abarcan muchos nodos a la vez para la actualización atómica de una sola transacción. Esto podría significar una versión especializada del lenguaje de base de datos habilitado cuántico (SQL de próxima generación que incorporaría capacidades de MapReduce).

¿Qué cualidades procesarían estos idiomas? No tengo mucha imaginación, así que voy a elegir algunas tecnologías que conozco en este momento que tienen algunas cualidades deseables. Creo que Erlang (y su primo, Elixir) y Elm tienen algunas características importantes. Erlang porque implementa el modelo de actor y es un entorno de programación distribuido muy robusto. Elixir porque sus características de compilación hacen que sea más fácil escribir código (más productivo) que compilará a Erlang byte-code y se ejecutará en Erlang VM. Elm porque es una programación reactiva funcional que transmite múltiples eventos generados por la interacción del usuario en un solo bucle de eventos. Elm también aprovecha muchos de los avances en la sintaxis del compilador y el lenguaje, como Ruby y Elixir, y dio un paso más para ser un lenguaje estáticamente tipado con inferencia, de modo que las declaraciones son opcionales.

MapReduce, Erlang, Elixir y Elm de Hadoop son lenguajes de programación funcional (FP). Creo que FP es más adecuado para la programación paralela distribuida masiva. Las características de Erlang / Elixir, como subprocesos livianos eficientes, alta concurrencia, mecanismos de tolerancia a fallas (árbol de supervisión de procesos) hacen que sea más fácil dividir aplicaciones complicadas grandes en módulos más pequeños, llamados microservicios. Para la computación cuántica, puedo vernos llevando esto un paso más allá en nano o pico servicios, dividiendo nuestras unidades de trabajo computacional en partes más pequeñas.

Algunos pseudocódigo, estilo Elixir:

final_result = data |> chunk_by (fn (data) -> chunk_criteria (data) end)

|> p_run (list_of_bots, fn (x) -> compute (x) end)

|> acumulador (resultado_i, resultado_cumulado_inicial,

fn (resultado_i, resultado_ acumulado) -> puntada (resultado_i, resultado_ acumulado) final)

La declaración anterior dice: tome los datos y póngalos (|> operador) en el motor chunk_by () para segmentar los datos usando chunk_criteria y los datos segmentados resultantes se envían a p_run () que ejecuta la función compute (x) en la list_of_bots, el Los resultados de estas ejecuciones paralelas se acumulan en initial_cumulated_result utilizando la función stitch () para fusionar los resultados que devuelven los resultados en final_result.

Este es un lenguaje de muy alto nivel. La interfaz con los robots cuánticos, que puede escribirse en un ensamblaje de nivel inferior o lenguaje similar a C, está oculta en la función p_run (). La función acumulador () también interactuaría con robots cuánticos para recopilar los resultados.

Pude ver el lenguaje especializado C de nivel inferior para los robots cuánticos que tienen un mecanismo para llevar el sello de sincronización (como el número de ticks) en su estructura de datos interna.

Ok, eso es todo lo que tengo. Déjame saber lo que piensas.

Nada, continuarán siendo utilizados para computadoras clásicas. Las computadoras cuánticas no son un reemplazo para las computadoras clásicas, son más como tarjetas adicionales.

Y los lenguajes de programación para computadoras cuánticas no son tan diferentes: los programas en sí lo son, pero los lenguajes son en su mayoría de aspecto normal (el principal problema que los lenguajes deben resolver es que es físicamente imposible obtener buena información de depuración; las mediciones interrumpen el cálculo) así que tienen que tener formas de hacer garantías estáticas muy fuertes; por eso, por ejemplo, Quipper se basa en Haskell, a pesar de que dicen que les gustaría tener aún más funciones del sistema de tipos).

Arriba, supongo que las computadoras cuánticas modelo de circuito … para algo como la D-Wave, la diferencia puede ser un poco más significativa (son solucionadores de problemas de optimización de propósito especial, por lo que los programas deben asignarse a un problema de optimización de un tipo que La CPU puede resolver).

La computación cuántica es muy rápida (si funciona), pero no confiable: los resultados son estadísticos y promedian el resultado correcto (por lo que he escuchado).

Como tal, no desea que el banco utilice la computación cuántica para cuidar su cuenta.

La computación de redes neuronales, por otro lado, se compone de muchos elementos informáticos que son algo aproximados en sus cálculos, por lo que uno podría ver la computación cuántica como una forma muy rápida de tomar decisiones en IA.

Los sistemas que tienen retroalimentación podrían funcionar bien ya que las imprecisiones en un ciclo de cálculo serán compensadas en los ciclos posteriores.

¿Han eliminado las computadoras el uso de papeles y bolígrafos? No. Ahora consumimos más papeles. Debido a la fabricación asistida por computadora, ahora tenemos más plumas y más variedades de plumas.

¿Las computadoras cuánticas eliminarán el uso de computadoras clásicas y lenguajes de programación clásicos? No. Probablemente consumiremos más computadoras clásicas. Debido a la fabricación cuántica asistida por computadora, probablemente tendremos más lenguajes de programación clásicos y más variedades de lenguajes de programación clásicos.

More Interesting

¿Podemos simular física de alta energía a través de física de materia condensada?

¿Por qué los estados puros están representados por los puntos en la superficie de una esfera Bloch mientras que los puntos interiores en la esfera representan estados mixtos?

¿Cómo se construyen las puertas cuánticas en la práctica?

¿Pueden los procesos moleculares estar en un estado de correlación cuántica?

¿Qué podría investigar un estudiante de secundaria sobre física cuántica o química? Estoy buscando áreas en la mecánica cuántica que relacionen y unan la reactividad química y la física. ¿Qué temas / áreas existen en relación con lo anterior?

¿Cómo afectará la computación cuántica a HFT / Finanzas cuantitativas?

¿Qué es una interpretación simétrica en el tiempo de la mecánica cuántica?

¿Es cierto que la computación cuántica puede revolucionar todos los campos de la ciencia?

¿De qué está hecha la espuma cuántica?

¿Qué papel jugará la ciencia de los materiales en la computación cuántica?

Cuál es la mejor revista para la investigación relacionada con la información cuántica: Phys. Rev. A o Información cuántica y computación?

De la manera más simple posible, ¿qué es una computadora cuántica?

¿Hay alguna implicación físicamente posible de los teoremas cuánticos sin clon y sin borrado?

¿Es la computadora cuántica encargada por Google y la NASA de D-wave una computadora cuántica completamente funcional?

¿Pueden las computadoras cuánticas ser forzadas a una búsqueda exponencial?