Classical computing has been operating using a binary system measured in bits. These bits can have only two states, zero and one. These states are used to represent, store and process data. The binary architecture has been used in computers since Konrad Zues built the first programmable computer in 1941(CITATION). As computers have become more advanced so has the complexity and magnitude of the problems that they can solve. With the current rate of advancement defined by Moore’s law transistors will be as small as an atom.
In order to keep up with the technological demands of processing information a new system of computing would need to be developed. In 1981 a physicist working in the field of quantum mechanics realized that classical computing could not efficiently simulate quantum mechanical systems. The scientist was Richard Feynmen and he proposed the first basic model for a quantum computer that could efficiently simulate the evolution of a quantum system(CITATION). In 1985 David Deutsch indpired by Feynman’s proposal described a universal quantum machine that could model any quantum computer.
This is analogous with the Universal Turning machine that can model any other Turning machine. Since then two key theories of quantum computing have been realized. The first being entanglement and the second being superposition. Both of these theories play a key role in quantum computing. On a basic level, quantum computing uses qbits to store and process data. They are similar to bits in that they are the smallest representation of data. They are different in that a bit has two states, one or zero, that it exists in.
In its physical state these bits are stored in transistors. A qubit on the other hand can have more than two states. It can, in fact exist in more than one state at a time. This can be achieved because of the law of quantum mechanics called superposition. Physically a qubit could be an ion where the states of specific characteristics of sub-atomic particles such as the polarization orientations of a photon or spin directions of an electron is measured. One group has developed a machine that uses superconducting loops with clockwise and counterclockwise electric currents.
According to the laws of quantum mechanics these subatomic particles can exist in multiple states a the same time. For an example, researchers are using the outer most electron of phosphorus as a qubit. They are using the spin property of the electron as it aligns with a magnetic field. When the electron is naturally aligned to the magnetic field it is said to be in a Spin Down or 0 position and is at its lowest energy level. When energy is applied to the electron in a manner so that is is aligned with the magnetic field but in a polar opposite position, then it is in its highest energy state and called Spin Up or 1 position.
An electron can actually exist in both states and all states in between at the same time. For computing purposes this means that by utilizing quantum algorithms a quantum computer can calculate many states simultaneously. Unfortunately to derive a solution the state has to be measured. Just before it is measured it is in a superposition state and when its measured the probability of the spin up and spin down as a coefficient to the measured state is presented. In classical probabilistic computing the results would be taken from a sample of the probability distribution.
With quantum computing the measurement process collapses the quantum state in to a finite state based on the computations of the probabilistic coefficients. All other states and as a result all other solutions are lost. Part A1. How do we communicate with it/program it Quantum circuits use a sequence of quantum gates to provide a model for quantum computation. These gates operate on a small number of qubits and unlike normal circuit gates they are reversible and usually represented by unitary matrices (5). It is at this level that quantum algorithms are expressed.
There are several important and well know quantum algorithms such as Shor’s algorithm that factors the product of two large prime numbers, Grovers’s algorithm which can be used for searching unordered lists or databases, and the Deutsch-Joza algorithm which was one of the first to regard the oracles framework in terms of using a quantum computer. It was also one of the first algorithms to show that is was exponentially faster than any other classical algorithms of the same class (6). This description of the oracle is an important aspect of most quantum algorithms.
The oracle can be described by a classical function derived of Boolean variables where the input to the algorithm is made reversible by the oracle. The reversed function “can then be lifted into a unitary map working on quantum bits”(Pink). At its most basic level a quantum algorithm is comprised of a unitary transformation where the result is the measurement of the final state. Even though quantum algorithms can be broken down into a service s of gates and measurements, often algorithms can be described as manipulations of sub-circuits.
Some of these operations include reversing, iteration, automatic synthesis of classical circuits, circuit transformations and whole circuit optimizations(Pink). Depending on the task quantum algorithm implementation will usually take on the characteristics of a probabilistic algorithms. Quantum algorythuns are used to operate on quantum circuts which are usually confined to specific tasks such as describing unitary transformations. Often these qlgorythums will lack “the generality to express all aspects of non-classical algorithms”(Purple).
For algorithms such as Shor’s algorithm where “classical random numbers, partial measurements, nested evaluation loops and multiple termination conditions” will be used means that the quantum operations themselves will be embedded into a classical flow-control framework (orange). This is where language development for quantum computing can begin. In order to better understand the two quantum computing languages discussed in this paper, it is important to understand the basics of the hybrid architecture of the machine they are to be implemented on.
This classical flow control framework is the basis for the hybrid classical/quantum computer architecture. Because of the limitations of quantum algorithm, quantum computing would need to use a universal classical language in order to interpret the individual instructions for a quantum computer (orange). This means that a quantum program would not be run on a quantum computer alone. It would be ran on a probabilistic classical computer that controlled the quantum computer. The classical computer would hold the program state where the quantum computer would act as an oracle, reporting the results to the classical computer.
The quantum computer would work independently of the control logic so that “its computational state can therefore be fully described by the common quantum state ? of its qubits”, producing the machine state (orange). The classical computer then process the results given by the quantum computer. The quantum program uses classical inputs and produces classical outputs. For this to be possible the program will have to utilize algorithms that have pre- and post-processing (pink). At the level of an algorithm the flow control is classical in nature.
The loops, tests, and copying of data, is done on the classical computer. The quantum computation is done with the quantum computer where quantum measurement is probabilistic. This means that classical probabilistic computation would be included as a subset of the quantum computation (pink). These are key aspects into developing a quantum programing language that can integrate the classical computations with the quantum computations with little interruption and still remain distinct. Programing languages allow us to solve problems from a higher, more abstract, level.
The purpose of a programing language is to allow programmers “to express the semantics of the computation in an abstract manner, as well as the automated generation of a sequence of elementary operations to control the computing device” (purple). For quantum computing a programming language will help in the understanding of quantum computation at a high level also. Language development for quantum computing was made possible, in large part, by Jean-Yves Girard who in 1987 proposed linear logic which used lambda calculus to help in the formation of quantum programing languages (blue).
One of the basic principals of linear logic is that states or inputs are consumed after implementation. This is similar to the nature of measuring quantum states where the measurement will collapse the superposition state and the state of the qubits before measurement is lost or consumed. Using these principals quantum language development was proposed by Emanuel Knill in 1996. Knill was the first to propose quantum language development. He realized what is called the Quantum Random Access Machine (QRAM) model for quantum computing (red).
This model was based on a hybrid classical/quantum computing machine, similar to the one described above. The QRAM he proposed is the basis for many of the few quantum languages developed today. It is also the basic machine that the two languages discussed below are implemented on. Along with a basic machine model, Knill also proposed a set of conventions for writing quantum pseudo-code. This pseudo-code provides syntax for describing qubits, qubit registers and operations involving both classical and quantum information(blue).