Linguagem de computação quântica (QCL) é uma das primeiras linguagens de programação quântica. A característica mais importante do QCL é o suporte para operadores e funções definidos pelo usuário. A sua sintaxe é semelhante à sintaxe da linguagem de programação C e seus tipos de dados clássicos são semelhantes aos tipos de dados primitivos em C. Pode-se combinar código clássico e código quântico no mesmo programa.

A biblioteca padrão QCL fornece operadores quânticos padrões utilizados em algoritmos quânticos, tais como:

não-controlado com diversos qubits alvos, Operação de Hadamard em vários qubits, fase de parseamento e de controle.

Sintaxe

Tipos de dados Quântico - qureg, quvoid, quconst, quscratch, qucond Clássico - int, real, complexo, boolean, string, vetor, matriz, tensor Tipos de função qufunct - Operadores pseudo-clássicos. Só pode alterar a permutação de estados básicos. operator - Operadores unários gerais. Pode alterar a amplitude. procedure - Pode chamar medida, imprimir e copiar dentro dessa função. Esta função é não-invertível. Funções internas Quântico qufunct - Fanout, Swap, Perm2, Perm4, Perm8, Not, CNot operator - Matrix2x2, Matrix4x4, Matrix8x8, Rot, Mix, H, CPhase, SqrtNot, X, Y, Z, S, T procedure - measure, dump, reset Clássico Aritmética - sin, cos, tan, log, sqrt, ... Complexo - Re, Im, conj

Exemplos O tipo de dado básico embutido em QCL é o qureg (quantum register). Ele pode ser interpretado como uma matriz de qubits (quantum bits). qureg x1; // registrador quântico x1 de 2-qubit qureg x2; // registrador quântico x2 de 2-qubit H(x1); // operação de Hadamard em x1 H(x2); // operação de Hadamard no primeiro qubit do registrador x2 Já que o interpretador QCL usa a biblioteca de simulação qlib, é possível observar o estado interno da máquina quântica durante a execução do programa quântico. qcl> dump : STATE: 4 / 32 qubits allocated, 28 / 32 qubits free 0.35355 |0> + 0.35355 |1> + 0.35355 |2> + 0.35355 |3> + 0.35355 |8> + 0.35355 |9> + 0.35355 |10> + 0.35355 |11> Note que a operação dump é diferente de measurement, uma vez que não influencia o estado da máquina quântica e pode ser realizado apenas usando um simulador.

Como nas linguagens de programação modernas, é possível definir novas operações que podem ser usadas para manipular os dados quânticos. Por exemplo: operator diffuse (qureg q) { H(q); // transformada de Hadamard Not(q); // Inverte q CPhase(pi, q); // Rotaciona se q=1111.. !Not(q); // desfazer inversão !H(q); // desfazer transformada de Hadamard

define inverso sobre o operador de média usado no Algoritmo de Grover. Isso permite definir algoritmos em um nível mais alto de abstração e expandir a biblioteca de funções disponíveis para os programadores.

Referências

Categoria:Linguagens de programação