Q # (pronunciado como Q agudo ) es un lenguaje de programación específico de dominio que se utiliza para expresar algoritmos cuánticos . [1] Inicialmente fue lanzado al público por Microsoft como parte del Quantum Development Kit. [2]
Paradigma | multi-paradigma : cuántico , funcional , imperativo |
---|---|
Diseñada por | Microsoft Research (grupo de computación y arquitecturas cuánticas; QuArC) |
Desarrollador | Microsoft |
Apareció por primera vez | 11 de diciembre de 2017 |
Disciplina de mecanografía | estático , fuerte |
Plataforma | Infraestructura de lenguaje común |
Licencia | Licencia MIT |
Extensiones de nombre de archivo | .qs |
Sitio web | Microsoft Quantum ( GitHub ) |
Influenciado por | |
C # , F # |
Historia
Durante un Microsoft Ignite Keynote el 26 de septiembre de 2017, Microsoft anunció que iban a lanzar un nuevo lenguaje de programación orientado específicamente a las computadoras cuánticas. [3] El 11 de diciembre de 2017, Microsoft lanzó Q # como parte del kit de desarrollo Quantum. [2]
En Build 2019 , Microsoft anunció que está ofreciendo código abierto al Quantum Development Kit, incluidos sus compiladores y simuladores Q #. [4]
Uso
Q # está disponible como una extensión descargada por separado para Visual Studio , [5] pero también se puede ejecutar como una herramienta independiente desde la línea de comandos o el código de Visual Studio. El kit de desarrollo cuántico se envía con un simulador cuántico que es capaz de ejecutar Q #.
Para invocar el simulador cuántico , se usa otro lenguaje de programación .NET , generalmente C # , que proporciona los datos de entrada (clásicos) para el simulador y lee los datos de salida (clásicos) del simulador.
Características
Una característica principal de Q # es la capacidad de crear y usar qubits para algoritmos. Como consecuencia, algunas de las características más destacadas de Q # son la capacidad de entrelazar e introducir la superposición de qubits a través de puertas NOT controladas y puertas Hadamard , respectivamente, así como las puertas Toffoli , Pauli X, Y, Z y muchas más. que se utilizan para una variedad de operaciones; consulte la lista en el artículo sobre puertas lógicas cuánticas .
Se espera que la pila de hardware que eventualmente se unirá con Q # implemente Qubits como qubits topológicos . El simulador cuántico que se envía hoy con el kit de desarrollo Quantum es capaz de procesar hasta 32 qubits en una máquina de usuario y hasta 40 qubits en Azure .
Documentación y recursos
Actualmente, los recursos disponibles para Q # son escasos, pero la documentación oficial está publicada: Microsoft Developer Network: Q # . El repositorio de Microsoft Quantum Github también es una gran colección de programas de muestra que implementan una variedad de algoritmos Quantum y sus pruebas.
Microsoft también ha organizado un concurso de codificación cuántica en Codeforces aquí: Concurso de codificación Q # de Microsoft - Codeforces , y también proporcionó material relacionado para ayudar a responder las preguntas en las publicaciones del blog, además de las soluciones detalladas en los tutoriales.
Microsoft aloja un conjunto de ejercicios de aprendizaje para ayudar a aprender Q # en github: microsoft / QuantumKatas con enlaces a recursos y respuestas a los problemas.
Sintaxis
Q # está relacionado sintácticamente con C # y F #, pero también tiene algunas diferencias significativas.
Similitudes con C #
- Usos
namespace
del aislamiento de código - Todas las declaraciones terminan con un
;
- Las llaves se utilizan para declaraciones de alcance.
- Los comentarios de una sola línea se realizan usando
//
- Los tipos de datos variables como
Int
Double
String
yBool
son similares, aunque en mayúsculas (e Int es de 64 bits) [6] - Los qubits se asignan y eliminan dentro de un
using
bloque. - Funciones lambda utilizando el
=>
operador. - Los resultados se devuelven utilizando la
return
palabra clave.
Similitudes con F #
- Las variables se declaran utilizando
let
omutable
[1] - Funciones de primer orden
- Módulos, que se importan mediante la
open
palabra clave - El tipo de datos se declara después del nombre de la variable.
- El operador de rango
..
for … in
bucles- Cada operación / función tiene un valor de retorno, en lugar de
void
. En lugar devoid
,()
se devuelve una tupla vacía . - Definición de tipos de datos de registro (utilizando la
newtype
palabra clave, en lugar detype
).
Diferencias
- Las funciones se declaran mediante la
function
palabra clave - Las operaciones en la computadora cuántica se declaran usando la
operation
palabra clave - Falta de comentarios multilínea
- Afirma en lugar de lanzar excepciones
- La documentación está escrita en Markdown en lugar de etiquetas de documentación basadas en XML
Referencias
- ^ a b QuantumWriter. "El lenguaje de programación Q #" . docs.microsoft.com . Consultado el 11 de diciembre de 2017 .
- ^ a b "Anuncio del kit de desarrollo de Microsoft Quantum" . Consultado el 11 de diciembre de 2017 .
- ^ "Microsoft anuncia lenguaje de programación de computación cuántica" . Consultado el 14 de diciembre de 2017 .
- ^ Microsoft está abriendo su kit de desarrollo cuántico
- ^ QuantumWriter. "Configuración del entorno de desarrollo Q #" . docs.microsoft.com . Consultado el 14 de diciembre de 2017 .
- ^ "Tipos en Q # - Microsoft Quantum" . docs.microsoft.com .
enlaces externos
- Documentación oficial
- qsharp-language en GitHub