Gracias a los recientes avances en la aplicación de las investigaciones científicas en varios campos del conocimiento al desarrollo de la computación cuántica, esta ha dejado de conjugarse en futuro [1].
Quienes nos dedicamos al mundo de la informática, si no deseamos perder el ya vertiginoso ritmo del cambio tecnológico en el que vivimos en las últimas décadas, debemos reaccionar a este enorme salto cualitativo y, para hacerlo exitosamente, debemos conjugar la computación cuántica en presente.
En este contexto, el inicio de la preparación de las instituciones, empresas y profesionales para desarrollar algoritmos y APPs cuánticas de calidad para el mundo real ya se debería conjugar en pasado.
Y se lo aseguro, no exagero con estas afirmaciones.
Dado que no es objeto de este artículo analizar las complejidades tecnológicas que supone lo antes dicho no voy a profundizar en ello, pero, si considera interesante algunos detalles relevantes sobre este asunto, puede consultar nuestra opinión en la primera parte del artículo publicado con Pepe Hevia sobre los elementos más relevantes del nuevo paradigma de la computación cuántica [2].
La propuesta de la naciente industria de la computación cuántica para el desarrollo de software, aunque demoró algo en manifestarse, actualmente es amplia y no deja de crecer, manifestando hitos de interés casi semanalmente. Los medios de comunicación e internet, con sus noticias e informes, nos dan una buena perspectiva del ritmo de las aportaciones de las empresas ya establecidas, así como de las contribuciones que realizan las startups, que surgen de forma continua.
Teniendo presente que el panorama es amplio (muy amplio), y sobre todo cambiante a un ritmo tan frenético que provoca, a velocidad de vértigo, la obsolescencia de la información sobre el estado del arte de las herramientas existentes para el desarrollo de software cuántico, en este artículo limitaré la exposición a las herramientas de los grandes proveedores de computación cuántica y a QPath, nuestra plataforma para el desarrollo y ciclo de vida de aplicaciones de software cuántico.
Para comenzar a trabajar en el desarrollo de software cuántico lo primero que es necesario conocer, como mínimo imprescindible, son los conceptos fundamentales de la mecánica y la computación cuántica, así como los principios de la programación de soluciones cuánticas.
Si no conoce lo anterior no estará en condiciones para intentar tomar decisiones sobre los entornos cuánticos, herramientas de desarrollo, etc. con los que trabajará. Así y todo, estos conocimientos no le librarán de lo complejo que siempre resulta este ejercicio dada la variedad de herramientas existentes. Por todo ello, si tiene que tomar esta decisión por primera vez, sugiero que la primera aproximación la haga respondiéndose estas dos cuestiones:
· ¿Qué tipo de software cuántico necesita o desea desarrollar?
· ¿Con qué herramientas de desarrollo de software cuántico piensa o desea trabajar?
Podrá cuestionarse por qué primero debe pensar y definir en el tipo de software que desarrollará. La razón es simple: está basada en la experiencia adquirida en los años que llevamos trabajando tanto en el desarrollo de software como de APPs cuánticas. Por eso sabemos que las tareas a realizar en el desarrollo de cada tipo de software cuántico no solo terminarán definiendo las herramientas a utilizar [3], sino que también condicionarán, como se muestra en la Figura 1, la composición mínima razonable del equipo polímata requerido (con su correspondiente conjunto de competencias mínimas), para poder abordar con éxito el desarrollo de software cuántico de calidad.
Figura 1: Composición mínima razonable de los roles necesarios en los equipos polímatas para desarrollar los diferentes tipos de software cuántico
Como se puede observar en la Figura 1 es evidente que, tal y como ocurre en el desarrollo de software clásico, mientras más nos acercamos al hardware (dado que es más complejo el proceso de desarrollo), más amplia y variada será la composición mínima del equipo polímata necesario y, por descontado, más amplia serán las competencias requeridas para el desarrollo de software. Dado que el objetivo principal de este artículo está centrado en el desarrollo de APPs cuánticas para el mundo real, en la exposición solo centraré la atención a lo relacionado con el desarrollo de aplicaciones software.
Unas últimas notas respecto a la Figura 1: en el caso del desarrollo de APPs con QPath el equipo mínimo requerido para quienes, sobre todo, deseen comenzar a dar los primeros pasos en el desarrollo de APPs cuánticas, inicialmente se podría reducir algo más gracias a:
· la arquitectura de la plataforma para gestionar el ciclo de vida de los desarrollos
· las características del desarrollo visual del código, los circuitos y los flujos
· las bibliotecas de recursos que estarán a disposición de los desarrolladores
· etc.
Todo esto, en dependencia de las características del proyecto a realizar, permitiría inicialmente poder prescindir de los roles de los Físicos y/o Matemáticos dedicados a tiempo completo. Además, estos perfiles se podrían incorporar a tiempo parcial o total en el momento que fuera necesario, en dependencia de las necesidades de los proyectos o, incluso, podrían ser aportados por el servicio que ofrecerá QPath.
En el desarrollo de APPs con QPath el equipo mínimo inicial también desaparece el rol de Ingeniero o Especialista de Calidad Cuántica, porque QPath, por diseño, resuelve la mayoría de los problemas de calidad que presentan las plataformas de computación cuántica [4], por lo que en este entorno ese perfil específico no es imprescindible en todo momento para desarrollar software de calidad.
Por último, añadir que esta forma de representar la composición mínima de los roles requeridos para producir los diferentes tipos de software ni remotamente significa que no se pueda desarrollar cada tipo de software cuántico con la más variada y amplia composición de equipos polímatas. Se debe tener presente que con esta representación esquemática sobre todo se pretende mostrar, a quienes necesiten iniciarse en el desarrollo de APPs cuánticas, los presumibles requerimientos mínimos para producir software cuántico de calidad. Por supuesto que en cualquier caso quienes cuenten con equipos existentes de grandes dimensiones y variedad de roles, acorde a las necesidades de los proyectos en los que trabajan, podrían trabajar armónica y productivamente con QPath tal cual estén organizados.
Responder acertadamente a la segunda cuestión es transcendental para el desarrollo de software cuántico, porque elegir adecuadamente las herramientas de desarrollos con las que se trabajará condicionará muchas otras decisiones a tomar a corto y mediano plazo respecto a:
· la tecnología cuántica a emplear
· la algoritmia específica a utilizar
· los costes de su uso
· la posibilidad o no de la reutilización de las soluciones en diferentes ordenadores cuánticos
· la curva de aprendizaje mínima para desarrollar
· los costes de formación
· los costes de desarrollo para múltiples ordenadores cuánticos
· los costes de mantenimiento para adecuar lo desarrollado a los cambios en el hardware cuántico
· …
En fin, un extenso listado de decisiones futuras y consecuencias de todo tipo que dependerán directamente de esta decisión.
Como se puede observar en la Figura 2, para responder a esta segunda cuestión agruparé las herramientas disponibles actualmente para el desarrollo de APPs cuánticas en dos grandes grupos:
· Kits de herramientas para el desarrollo de software cuántico desarrollado por los proveedores de ordenadores cuánticos más relevantes
· Herramientas de terceros (de otras empresas y startups) para el desarrollo de software cuántico atendiendo a un criterio único: que, siendo totalmente válidas para trabajar con las tecnologías propietarias de los grandes proveedores de computación cuántica, sean realmente agnósticas de las mismas.
Dado que QPath cumple al 100% el requisito de ser, por diseño, una plataforma realmente agnóstica de las tecnologías cuánticas con la que trabaja (soporta los diferentes tipos de hardware cuántico: basado en puertas, annealing, simuladores, etc.), en este grupo me centraré solo en esta Plataforma.
Figura 2: Herramientas para el desarrollo de APPs cuánticas
Kits de herramientas de los proveedores de ordenadores cuánticos más relevantes para el desarrollo de software cuántico
Si la decisión a tomar contempla el desarrollo de aplicaciones de software cuántico con los Kits de herramientas de los grandes proveedores, la resolución tendrá que abordarse teniendo presente la variedad de opciones (recordad que, aunque parezcan muchos, esta selección está limitada solo a los proveedores más relevantes) que presentamos en la Figura 3:
Figura 3: Kits de herramientas para el desarrollo de software cuántico de los proveedores de ordenadores cuánticos más relevantes
Como se puede observar en la Figura 3, cada proveedor dispone de todos los recursos para el desarrollo de software cuántico necesarios para garantizar el uso adecuado de sus computadoras cuánticas:
· Hardware
· Lenguaje ensamblador
· Circuitos cuánticos
· Algoritmos cuánticos
· Lenguajes de programación
· Librerías full-stack
Además, a estos valiosos recursos los proveedores añaden a través de internet amplios repositorios de información, código, algoritmos, materiales formativos y un largo listado de otros tipos de recursos que facilitan, y mucho, acceder a sus tecnologías cuánticas.
Es indudable que con todos estos recursos a disposición de instituciones, empresas y desarrolladores se puede desarrollar buen software cuántico para el entorno del proveedor seleccionado. Pero justo en este último detalle está la limitación más importante de trabajar con los entornos propietarios: los mismos solo son válidos para trabajar en sus ecosistemas.
Pero ¿qué ocurre si luego de invertir tiempo aprendiendo y desarrollando en uno de esos entornos debo explotar, por diferentes motivos (de negocio y tecnológicos) los desarrollos en otro?
Aunque la respuesta sea simple, no por ello deja de ser frustrante para los desarrolladores: deberá aprender cómo se trabaja en el nuevo entorno en el que se necesite/desee ejecutar la solución y volver a desarrollar sus algoritmos y aplicaciones desde el inicio. Si, ha leído correctamente: si se necesita o desea ejecutar lo desarrollado en otro entorno tecnológico deberá programar nuevamente todo para el nuevo entorno. Y esto será así cada vez que se necesite o desee cambiar de proveedor cuántico.
Algo similar ocurre en la adquisición del conocimiento requerido para desarrollar con estos Kits de herramientas, como mostramos en la Figura 4.
Figura 4: Conocimientos específicos requeridos para cada entorno cuántico de proveedor
Si bien podemos contar con una base genérica de conocimientos sobre los fundamentos de la computación y la programación cuántica, la realidad es que cada entorno de los proveedores requiere de conocimientos y cursos específicos, cada uno de ellos contempla los diferentes niveles de conocimiento, lo que obliga a realizar formaciones específicas cada vez que se requiera de conocimientos de otro entorno.
Como se muestra en la Figura 3, cada entorno de fabricante (representado en cada columna) es un mundo propietario y, salvo muy puntuales excepciones, no compatible con los otros entornos que lo rodean. No es la Torre de Babel, pero las Figuras 3 y 4 de alguna forma nos hacen recordarla.
Afortunadamente lo anterior no ocurre de forma absoluta porque, por ejemplo, si se desea ejecutar lo desarrollado en QPath, que soporta a través de diferentes métodos la importación y ejecución del código desarrollado en esos entornos cuánticos, esto se podría hacer sin reprogramar y, dependiendo del método empleado para la integración con QPath, lo importado incluso se podría ejecutar en otros entornos cuánticos.
QPath para el desarrollo realmente agnóstico de software cuántico
Una plataforma agnóstica eficiente es una plataforma en plena armonía con las tecnologías con las que debe trabajar de forma agnóstica. Dicho en otras palabras, el agnosticismo tecnológico solo es posible sobre la base de una “milimétrica” correspondencia tecnológica entre las partes que se relacionan.
Para lograr esa armonía en QPath se aplican rigurosamente los principios de la computación y la programación cuántica, las buenas prácticas de la Ingeniería de Software y la Programación Cuántica [5] y, por supuesto, los requisitos definidos por los fabricantes para sus ecosistemas. Esta es la única forma de poder garantizar, primero, que QPath soporte el desarrollo realmente agnóstico
de software cuántico; segundo, la compatibilidad de este ecosistema con los de los diferentes proveedores cuánticos homologados en QPath; y, por último, la plena y continua interoperabilidad de QPath con los ecosistemas de los proveedores de computadoras de puertas cuánticas y annealing.
Antes he afirmado que QPath es una plataforma 100% agnóstica respecto a las tecnologías cuánticas con las que trabaja. Esto significa que los desarrolladores que la utilicen no tienen que preocuparse por absolutamente ningún detalle técnico específico de las diferentes tecnologías cuánticas a utilizar en QPath (hardware, lenguaje ensamblador, circuitos cuánticos, algoritmos cuánticos, leguajes de programación, librerías full-stack, etc.). Lo único que deben hacer los desarrolladores respecto a las tecnologías cuánticas homologadas en QPath es seleccionar, con un click, el entorno o entornos cuánticos en lo que desee ejecutar sus soluciones de forma individual o, incluso, simultánea en varias tecnologías diferentes.
Veamos a continuación cómo cambian drásticamente las condiciones para el desarrollo de software cuántico si se decide desarrollar algoritmos y APPs cuánticas con una plataforma agnóstica como QPath y la “magia” de sus módulos CORE, capaces de gestionar algoritmos cuánticos y soluciones agnósticas de la tecnología cuántica, asistidas por herramientas de propósito general [6].
Para facilitar el desarrollo de software cuántico de calidad, QPath también provee a sus usuarios toda la pila ALM orientada a la creación de algoritmos y software cuántico a través de un amigable repositorio visual:
· Gestión de activos
· Herramientas de diseño
· Metalenguajes
· Compiladores
· Transpiladores
· Unidades de ejecución escalables bajo demanda
· Resultados unificados
· Adaptadores de integración
· Catálogo de servicios cuánticos
· …
Gracias a esta arquitectura y diseño QPath proporciona a sus usuarios una potente plataforma de herramientas, servicios y APIs para la creación de algoritmos y soluciones cuánticas de calidad, independientes de las tecnologías y, como se muestra en las Figura 5, trabajar eficientemente con diferentes tecnologías cuánticas como las de IBM, Microsoft, Rigetti, D-Wave, Google y también con las de otros proveedores, así como con simuladores de computación cuántica como, por ejemplo, QuTECH, CTIC, etc.
Figura 5: QPath hace posible el desarrollo de APPs cuánticas realmente agnósticas de las tecnologías cuánticas
Esta cualidad agnóstica de QPath lo convierte en un acelerador de la adopción y desarrollo de software cuántico porque, mediante un modelo híbrido de construcción de servicios que abstraen la tecnología cuántica, permite a los desarrolladores despreocuparse de las plataformas de los fabricantes y sus requisitos necesarios, permitiéndoles centrarse en el conocimiento y dejar los detalles a QPath. Esta afirmación incluye el hecho de que, para desarrollar algoritmos y APPs de calidad con QPath, no es necesario programar manualmente ni una línea de código, en ningún lenguaje de programación. De ello se encarga el sistema, por lo que el tiempo de la fase de construcción se reduce tan drásticamente que su peso en el ciclo de vida del proyecto es mínimo.
Como resultado, se registran economías significativas en los tiempos de desarrollo y entrega a negocio de los proyectos, con la correspondiente repercusión positiva en la productividad, en los costes de producción y mantenimiento del software cuántico.
De igual forma, estas características de QPath repercuten positivamente en la curva de aprendizaje, con el correspondiente efecto positivo en los costes pues, como se puede observar en la Figura 6, los conocimientos requeridos para desarrollar software cuántico con QPath, independientemente de la tecnología en que se ejecuten los algoritmos y las soluciones cuánticas a desarrollar, se reduce a los conocimientos básicos de las técnicas específicas de desarrollo en QPath, sin incluir la necesidad de conocer las especificidades tecnológicas de los proveedores cuántico.
Figura 6: Cursos para desarrollar algoritmos y APPs con QPath
Una muestra de las ventajas que brinda QPath es que solo con los conocimientos adquiridos con los dos primeros cursos de la Figura 6 los usuarios estarían en condiciones de iniciarse en el desarrollo de APPs y, de esta forma, comenzar a crear las competencias necesarias para desarrollar software cuántico agnóstico de calidad, capaz de soportar la ejecución de las unidades de proceso cuántico de forma transparente, independientemente de la plataforma donde se ejecuten. Como parte de esa actividad práctica podrían comenzar a realizar estas tareas en el entorno visual de QPath [7]:
· Crear los activos de aplicaciones cuánticas y establecimiento de los requisitos del entorno
· Diseñar visualmente los activos cuánticos: los circuitos cuánticos, sus definiciones de modelos de annealing y componer el algoritmo usando flujos
· Gestionar el ciclo de vida de forma automática
· Elegir el destino de ejecución de los ordenadores cuánticos y/o los entornos de simulación escalables
· Explorar los resultados usando un esquema unificado normalizado, sea cual sea el destino de ejecución
· Gestionar todos los procesos y analizar toda la telemetría almacenada
Al realizar estas tareas con QPath los noveles desarrolladores estarían dando sus primeros pasos prácticos en las actividades del ciclo de desarrollo de software cuántico para puertas cuánticas y/o annealing, desde la creación del algoritmo cuántico a través de su desarrollo, prueba e implementación, hasta su despliegue y reutilización, todo ello aplicable a la más amplia gama de aplicaciones posibles: Química, Economía, Servicios Financieros, Energía y Agricultura, Medicina y Salud, Privacidad y Criptografía, Logística, Defensa y Seguridad Nacional, …
Con estas facilidades para la rápida adopción del desarrollo de APPs cuánticas, QPath hace un aporte muy, pero que muy especial, a la creciente demanda de desarrolladores de software cuántico de la emergente industria cuántica.
En este contexto es importante resaltar las consecuencias negativas directas que tiene el actual nivel global del analfabetismo cuántico para la rápida consolidación de la industria cuántica [8] y también subrayar, porque no es menos importante, los muchos años que llevará superarlo sólo a través de la imprescindible y urgente alfabetización formal, tradicional: la formación desde la base que prepare para interpretar, simular y aplicar el conocimiento a la vida desde una perspectiva cuántica.
El analfabetismo cuántico es un freno real para el crecimiento del mercado de fuerza de trabajo lista para producir software cuántico y, por ello, son bienvenidas las acciones que contribuya a acelerar su superación. QPath, dada su arquitectura y funcionalidades, facilita y acelera la preparación práctica de desarrolladores de software cuántico, ayuda y guía a los desarrolladores a hacer su trabajo con calidad, por lo que esta plataforma es una muy buena opción práctica que favorece el crecimiento de la industria cuántica en el mundo. Y lo aporta ahora, no dentro de algunos años o incluso décadas.
En resumen, que atendiendo a todo lo antes expuesto puedo afirmar que QPath es una excelente plataforma para que las instituciones, empresas y profesionales se inicien y aceleren la adopción del desarrollo de algoritmos y APPs cuánticas de calidad para el mundo real [9] porque QPath asiste a sus usuarios en el desarrollo de software cuántico, los libera de tener que conocer y saber gestionar diferentes entornos tecnológicos cuánticos, de aprender y programar con diferentes lenguajes de programación y también de tener que conformar, desde el principio, equipos polímatas con un amplio perfil de roles.
No menos importante puede ser QPath para quienes ya tienen equipos de desarrollo de APPs cuánticas porque, gracias a sus funcionalidades tanto para puertas cuánticas como annealing, a la aplicación de la ingeniería por diseño, al ciclo de vida del software cuántico híbrido y a ser realmente agnóstico de las tecnologías de los proveedores de los diferentes enfoques tecnológicos cuánticos, podrían optimizar sus procesos de desarrollo de software, aumentar su productividad y asegurar mejor sus inversiones en el desarrollo de APPs cuánticas ante los múltiples riesgo tecnológicos y de negocio [10] y, con todo ello, ser más competitivos en el emergente negocio del software cuántico [11].
Por último, y no menos importante: QPath es una plataforma que de forma práctica contribuye eficazmente a una rápida incorporación de la fuerza de trabajo especializada al deficitario mercado laboral de desarrolladores cuánticos, gracias a las facilidades antes mencionadas que les ofrece para desarrollar APPs cuánticas de calidad para los enfoques de tecnología cuántica de puertas y annealing. Esto no solo es posible porque QPath sea una plataforma para el desarrollo y ciclo de vida de aplicaciones de software cuántico, también es posible porque, gracias a sus interfaces visuales y a su arquitectura verdaderamente agnóstica, ha sido diseñada para simplificar el trabajo de los desarrolladores de software cuántico y, a través de su actividad en los ciclos de vida de los proyectos, contribuir activamente a la alfabetización cuántica global en curso de forma directa y práctica.
[3] Peterssen, G., Hevia, José Luis. Introducción al desarrollo de software cuántico con QPath. https://www.quantumpath.es/index.php/es/2021/01/13/introduccion-al-desarrollo-de-software-cuantico-con-qpath/. El Blog de QPath. 2021
[4] Piattini, QPath solves most of the quality problems of quantum computing platforms. https://www.quantumpath.es/index.php/2021/02/11/qpath-solves-most-of-the-quality-problems-of-quantum-computing-platforms/. The QPath Blog. 2021
[5] The Talavera Manifesto for Quantum Software Engineering and Programming. CEUR Workshop Proceedings. http://ceur-ws.org/Vol-2561/paper0.pdf. 2020
[6] Hevia, José Luis. Características de QPath. https://www.quantumpath.es/index.php/es/2020/12/10/caracteristicas-qpath/. El Blog de QPath. 2021
[7] Peterssen, G., Hevia, José Luis. Introducción al desarrollo de software cuántico con QPath. https://www.quantumpath.es/index.php/es/2021/01/13/introduccion-al-desarrollo-de-software-cuantico-con-qpath/. El Blog de QPath. 2021
[8] Peterssen, G. Quantum technology impact: the necessary workforce for developing quantum software. http://ceur-ws.org/Vol-2561/paper1.pdf. CEUR Workshop Proceedings. 2020
[9] Peterssen, G. QPath, el acelerador de desarrollo de software cuántico comercial. https://www.quantumpath.es/index.php/es/2020/11/26/qpath-el-acelerador-de-desarrollo-de-software-cuantico-comercial/. El Blog de QPath. 2020.
[10] Piattini, M. QPath asegura las inversiones y acelera la adopción de soluciones cuánticas. https://www.quantumpath.es/index.php/es/2020/11/16/qpath-asegura-las-inversiones-y-acelera-la-adopcion-de-soluciones-cuanticas/. El Blog de QPath. 2020.
[11] Peterssen, G. QPath, una (muy) útil plataforma para el emergente negocio del software cuántico. https://www.quantumpath.es/index.php/es/2020/12/02/qpath-una-muy-util-platforma-para-el-emergente-negocio-del-software-cuantico/. El Blog de QPath. 2020.