la mayoría de la gente sabía sobre física cuántica, pero era sobre todo teoría y tal vez un poco de ciencia ficción. Pero desde que IBM lanzó Qiskit y abrió el acceso a su hardware, los avances en computación cuántica han seguido llegando. Personas de diferentes disciplinas y orígenes podrían escribir código cuántico y ejecutarlo en dispositivos reales.
Aunque en la última década se han producido muchos avances sorprendentes en este campo, el lado del software de la computación cuántica todavía está muy subdesarrollado.
Sin embargo, todos los actores en este campo, desde entusiastas hasta desarrolladores e investigadores, reconocen la importancia de construir una pila de software cuántico madura. Entonces, el mes pasado (febrero de 2026), un par de laboratorios de investigación y empresas lanzaron Quantum Software Alliance: una colaboración que tiene como objetivo construir y respaldar la comunidad de software cuántico.
Por eso, no hay mejor momento que el presente para dar un paso atrás y observar el diseño de la pila de software cuántico. En este artículo, lo guiaré a través del panorama actual de la programación de la computación cuántica. Exploraremos el diseño, la ejecución, la depuración y la orquestación de algoritmos, y destacaremos los principales enfoques y herramientas disponibles en la actualidad.
Las tres modalidades computacionales
En esencia, la programación cuántica no es simplemente “otro lenguaje” implementado en las computadoras existentes. Las computadoras cuánticas computan con qubits (unidades de información que explotan la superposición y el entrelazamiento), lo que hace que los modelos matemáticos y operativos sean fundamentalmente diferentes de los bits clásicos. Estas diferencias recorren cada capa de la pila de software, creando nuevas necesidades de lenguajes, compiladores, sistemas de ejecución y herramientas de depuración.
Antes de hablar de herramientas, demos un paso atrás y comprendamos qué tipos de computación cuántica programamos hoy. En otras palabras, ¿cómo puedo describir hoy un algoritmo cuántico? Hay tres formas diferentes en que podemos describir los algoritmos cuánticos:
1. Basado en puerta (modelo de circuito)
Este es el enfoque más utilizado para algoritmos cuánticos generales como la búsqueda de Grover o la transformada cuántica de Fourier. Los programas se expresan como secuencias de puertas cuánticas aplicadas a qubits, formando circuitos similares a los circuitos lógicos clásicos. La computación cuántica basada en puertas es universal.
Lo que significa que, con las puertas adecuadas y la corrección de errores, puede implementar cualquier algoritmo cuántico.
2. Modelos analógicos y de propósito especial
No todas las modalidades de computación cuántica utilizan puertas para implementar algoritmos. Por ejemplo, el recocido cuántico permite que el sistema evolucione hacia un estado de baja energía, encontrando así soluciones a problemas combinatorios. Otro ejemplo es la simulación hamiltoniana y la dinámica analógica, que se utilizan en simulaciones físicas.
Estos modelos a menudo requieren interfaces diferentes en comparación con los lenguajes de circuitos. Piense en esas dos modalidades, como la informática de propósito general y los sistemas integrados.
3. Flujos de trabajo híbridos cuánticos-clásicos
Hoy en día, las computadoras cuánticas requieren tolerancia a fallas. Pero incluso en el futuro, la mayoría de las computadoras cuánticas no serán independientes. Los programas cuánticos prácticos a menudo ejecutan flujos de trabajo híbridos: preprocesamiento clásico pesado, una subrutina cuántica y posprocesamiento clásico.
Estos canales requieren sistemas que permitan la comunicación entre múltiples entornos y, a menudo, se ejecutan en la nube.
Abstracciones de programación cuántica
Ahora que tenemos una idea aproximada de las diferentes modalidades para implementar algoritmos cuánticos, podemos discutir los niveles de abstracción en la programación cuántica. La programación cuántica abarca un espectro que va desde conjuntos de instrucciones similares al hardware hasta lenguajes algorítmicos de alto nivel.
Representaciones de bajo nivel e intermedio
¡Empecemos desde abajo y subamos!
QASM: un lenguaje ensamblador cuántico independiente del hardware que se utiliza como objetivo de compilación para muchos marcos. QASM se desarrolló para que los programadores pudieran escribir código para diferentes hardware utilizando diferentes lenguajes/bibliotecas de programación. Quil (Arquitectura de conjunto de instrucciones cuánticas): diseñada por Rigetti, presenta un modelo de memoria clásica cuántica compartida compatible con bibliotecas de Python como pyQuil. OpenPulse: Las computadoras cuánticas son, en cierto sentido, computadoras analógicas. Cada puerta cuántica se puede implementar como un pulso (una onda electromagnética) aplicado al qubit. OpenPulse fue introducido por IBM para permitir a los usuarios un mejor control del hardware.
Estos lenguajes ofrecen un control estricto sobre las secuencias de puertas, pero requieren más experiencia y no son fáciles de dominar.
Marcos de alto nivel
Los marcos en lenguajes familiares como Python permiten a los desarrolladores crear y probar programas cuánticos utilizando abstracciones cercanas a la programación clásica. Esta es la forma más común de implementar y explorar algoritmos cuánticos.
Qiskit: SDK basado en Python de IBM que sigue siendo una de las pilas más utilizadas para la construcción, optimización y orientación de hardware de circuitos. Qrisp: un marco de trabajo de alto nivel más nuevo que incorpora construcciones de programación clásicas (variables, bucles, flujo de control) a la generación de circuitos cuánticos mientras maneja detalles de bajo nivel por usted.
Otros marcos incluyen Cirq, TKet, QuTip y PennyLane. Los algoritmos de estos marcos facilitan la construcción de algoritmos cuánticos, lo cual es clave para la educación cuántica y la creación de prototipos.
#Un código Python simple que genera un par entrelazado desde qiskit import QuantumCircuit desde qiskit_aer import AerSimulator desde qiskit import transpile # Crear un circuito de estado Bell qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc.measure_all() # Simular sim = AerSimulator() compilado = transpile(qc, sim) resultado = sim.run(compilado, disparos=1024).result() print(result.get_counts())
Lenguajes específicos cuánticos
Estos son lenguajes creados específicamente para expresar la lógica cuántica; los dos más populares son:
Q#: un lenguaje de alto nivel y específico de dominio de Microsoft destinado a algoritmos cuánticos escalables; Integra lógica clásica y cuántica con comprobaciones en tiempo de compilación y un sistema de tipos adaptado a operaciones cuánticas. Silq: un lenguaje de programación de alto nivel para computación cuántica con un fuerte sistema de tipo estático, desarrollado en ETH Zürich.
La pregunta difícil: ¿simuladores o hardware?
Ahora, si decides escribir un programa cuántico hoy, elegirías un nivel de abstracción (probablemente Python con Qiskit o PennyLane). Luego, una vez que haya construido su circuito, probablemente se preguntará: “¿Dónde se ejecuta mi programa?”
¡Es una pregunta muy válida! Y tienes dos opciones: puedes ejecutarlo en un simulador o en hardware real.
Simuladores cuánticos
Los simuladores clásicos ejecutan circuitos cuánticos con un número decente de qubits (en su mayoría, entre 23 y 30 qubits). Esto es bastante útil para el desarrollo antes de implementarlo en hardware real.
Muchos marcos incluyen simuladores integrados de vectores de estado o de matrices de densidad. Los simuladores son esenciales para la depuración y validación antes de ejecutarlos en hardware real.
Hardware en la nube
Sin embargo, las computadoras clásicas no pueden simular sistemas cuánticos más grandes (si lo hicieran, ¡no necesitaríamos una computadora cuántica!). Afortunadamente, los principales proveedores de la nube ahora ofrecen acceso a procesadores cuánticos reales:
Estos servicios suelen proporcionar acceso a API, backends con qubits reales y sistemas de programación de trabajos. Lamentablemente, no todas estas empresas permiten el acceso gratuito, pero estoy seguro de que IBM ofrece un par de minutos gratuitos de tiempo de computación al mes.
Otra opción para tener acceso al hardware cuántico es utilizar servicios que brinden un ecosistema en línea completo. Al utilizar estos sitios web, puede comprar tokens para acceder a diferentes hardware desde un solo lugar. Algunos ejemplos de dichos servicios son:
Pruebas y depuración en ingeniería de software cuántica
Los programadores clásicos conocen el valor de las pruebas unitarias y los depuradores. En la computación cuántica, estas prácticas recién están surgiendo. Los sistemas cuánticos se comportan de manera diferente y todavía no tenemos una idea concreta para desarrollar herramientas que hagan que la depuración de programas cuánticos sea eficiente.
Hoy en día, los programadores tendrán que hacer todo a mano y, a menudo, necesitarán comprender las matemáticas del circuito para descubrir qué salió mal si el resultado no es el esperado. Probar y depurar un circuito cuántico fue el objetivo principal de mi tesis doctoral. El núcleo de mi trabajo fue introducir un marco estructurado para depurar circuitos categorizando tipos de bloques de circuitos comunes y proponiendo estrategias de depuración personalizadas.
Este tipo de herramientas es importante para hacer avanzar la pila de software cuántico. Debido a que los errores en los circuitos cuánticos pueden ser sutiles, los errores pueden deberse a un orden incorrecto de los qubits, a un cálculo inadecuado o a fases mal calibradas. Además, estos errores no siempre son evidentes únicamente a partir de las estadísticas de producción.
arXiv:2311.18202)
Otro desafío único en la ingeniería de software cuántico es traducir de manera eficiente la lógica de alto nivel en instrucciones compatibles con el hardware y al mismo tiempo garantizar la corrección y la precisión.
Los compiladores y transpiladores cuánticos realizan tareas como el mapeo de qubits, la descomposición de puertas y la preparación para la mitigación de errores (similar a la EDA clásica pero con limitaciones específicas de los cuánticos, como la decoherencia y el principio de no clonación).
¿Dónde estamos y hacia dónde vamos?
Aunque el hardware cuántico aún no está completamente aquí. Todavía no podemos crear aplicaciones de tamaño real ni simulaciones de sistemas complejos, pero los investigadores de hardware están trabajando más duro que nunca para llegar a ese punto. Por lo tanto, el lado del software debe ponerse al día y ser compatible con el hardware actual y futuro para que podamos utilizarlo. La programación cuántica actual se encuentra en un interesante punto de inflexión:
Los lenguajes y los SDK hacen que el desarrollo de algoritmos cuánticos sea accesible. Los servicios en la nube democratizan el acceso a procesadores cuánticos reales. Las herramientas de depuración y prueba están empezando a alcanzar las expectativas clásicas. La automatización del diseño y los compiladores están reduciendo la carga de la ingeniería de bajo nivel.
Pero los desafíos del software persisten: ¿cuál es la mejor manera de escribir programas cuánticos, cómo los probamos y cómo los depuramos cuando algo sale mal? La necesidad de prácticas de ingeniería de software más sólidas en el mundo cuántico aumenta día a día.
Entonces, para todos los científicos de datos que sienten curiosidad por la computación cuántica, les escribo para decirles que ahora es un momento ideal para explorar, experimentar y contribuir.