"Quantum software has finally left the dark ages with the creation of the first practical, high-level programming language for quantum computers. Although today's devices are not ready for most practical applications, the language, called Quipper, could guide the design of these futuristic machines, as well as making them easier to program when they do arrive.
Quipper's creation was funded by IARPA, the US Intelligence Advanced Research Projects Agency, in order to pin down how many bits a quantum computer would need in order to outperform a classical one on certain tasks. Writing programs in Quipper makes the hardware requirements of an algorithm clearer and that has already led to some surprises. "*It will take a lot more resources than people had thought*," says Selinger, who can't talk about specific results.
He expects that with advances in engineering, such as reducing noise, the number of qubits necessary for a practical quantum computer will decrease over time. - The team made their estimates based on various existing forms of quantum hardware, including devices that use ion traps and photons.However, they did not include the only quantum computer in the market today, the D-wave computer. It uses a novel approach called adiabatic quantum computing and so is not currently compatible with Quipper."
Quipper is an embedded, scalable functional programming language for quantum computing. It provides, among other things:
• A high-level circuit description language. This includes gate-by-gate descriptions of circuit fragments, as well as powerful operators for assembling and manipulating circuits.
• A monadic semantics, allowing for a mixture of procedural and declarative programming styles.
• Built-in facilities for automatic synthesis of reversible quantum circuits, including from classical code.
• Support for hierarchical circuits.
• Extensible quantum data types.
• Programmable circuit transformers.
• Support for three execution phases: compile time, circuit generation time, and circuit execution time. A dynamic lifting operation to allow circuit generation to be parametric on values generated at circuit execution time.
• Extensive libraries of quantum functions, including: libraries for quantum integer and fixed-point arithmetic; the Quantum Fourier transform; an efficient Qram implementation; libraries for simulation of pseudo-classical circuits, Stabilizer circuits, and arbitrary circuits; libraries for exact and approximate decomposition of circuits into specific gate sets.
The Quipper distribution also includes implementations of seven non-trivial quantum algorithms from the literature:
• Childs et al.'s Boolean Formula algorithm.
• Childs et al.'s quantum walk algorithm on Binary Welded Trees.
• Hallgren's Class Number algorithm.
• Whitfield et al.'s Ground State Estimation algorithm.
• Harrow et al.'s Quantum Linear Systems algorithm.
• Magniez et al.'s Triangle Finding algorithm.
• Regev and Kuperberg's Unique Shortest Vector algorithm.