Microsoft makes play for next wave of computing with quantum computing toolkit Source: Peter Bright
At its Ignite conference today, Microsoft announced its moves to embrace the next big thing in computing: quantum computing. Later this year, Microsoft will release a new quantum computing programming language, with full Visual Studio integration, along with a quantum computing simulator. With these, developers will be able to both develop and debug quantum programs implementing quantum algorithms.
Quantum computing uses quantum features such as superposition and entanglement to perform calculations. Where traditional digital computers are made from bits, each bit representing either a one or a zero, quantum computers are made from some number of qubits (quantum bits). Qubits represent, in some sense, both one and zero simultaneously (a quantum superposition of 1 and 0). This ability for qubits to represent multiple values gives quantum computers exponentially more computing power than traditional computers.
Traditional computers are built up of logic gates—groups of transistors that combine bits in various ways to perform operations on them—but this construction is largely invisible to people writing programs for them. Programs and algorithms aren't written in terms of logic gates; they use higher level constructs, from arithmetic to functions to objects, and more. The same is not really true of quantum algorithms; the quantum algorithms that have been developed so far are in some ways more familiar to an electronic engineer than a software developer, with algorithms often represented as quantum circuits—arrangements of quantum logic gates, through which qubits flow—rather than more typical programming language concepts.
Microsoft's quantum programming language—as yet unnamed—offers a more familiar look to programming quantum computers, borrowing elements from C#, Python, and F#. Developers will still need to use and understand quantum logic gates and their operations, but they'll be able to use them to write functions, with variables and branches and other typical constructs. As an example, a program to perform quantum teleportation is offered as a kind of "Hello, World!" for quantum computing:
Enlarge / Quantum teleportation program.
Microsoft
This snippet of code has a couple of functions, EPR and Teleport, along with a third function, TeleportTest to test that the Teleport function works. EPR creates an EPR pair of entangled qubits, using a Hadamard gate (H), which generates a qubit with an equal probability of being a 1 or a 0, and a controlledNOT gate, which entangles two qubits to make the EPR pair. The Teleport function entangles two qubits and then measures (with M) the value of one of them. Measurement forces the qubits to take a specific value instead of both values in superposition.
The language is integrated into Visual Studio. This means not only color coding support, but also other Visual Studio features, such as debugging, are supported. Debugging programs means, of course, that you have to be able to run them. With quantum computers something of a rarity these days, Microsoft is also going to release two versions of a quantum simulator. One version will run locally; the other version will run on Azure. The simulator will be able to run quantum programs and offer something comparable to the traditional Visual Studio debugging experience so that algorithms can be inspected as they run.
It will have quite significant memory requirements. The local version will offer up to 32 qubits, but to do this will require 32GB of RAM. Each additional qubit doubles the amount of memory required. The Azure version will scale up to 40 qubits.
Longer term, of course, the ambition is to run on a real quantum computer. Microsoft doesn't have one, yet, but it's working on one. The company is researching the development of a topological qubit. These are appealing because they help address a consistent difficulty faced by quantum computers. Quantum states are delicate, and quantum noise introduces errors into calculations. Additional qubits can be added to algorithms to correct for this noise. The number of extra qubits varies according both to the algorithm and the kind of quantum machine being used; in principle, topological qubits will need far fewer error correcting qubits than other quantum computer designs.
This reduction in the number of qubits required is valuable because current prototype quantum computers are far smaller than the size required to do useful work. The number of qubits necessary depends on the application and the field. Microsoft is envisaging a wide range of applications, from quantum chemistry to materials science to medicine development or climate change research. In chemistry applications, a few hundred qubits can be used for, say, helping develop catalysts for nitrogen fixation. Materials science applications require perhaps a few thousand.
But even these numbers are huge compared to the quantum computers that have been built. Last year, for example, IBM offered access to a 5 qubit computer. Microsoft's hope is that the greater error protection offered by topological qubits will—eventually—make it easier to build quantum computers that are big enough for real work.
One awkward spectre is what happens if someone does manage to build a large quantum computer. Certain kinds of encryption gain their security from the fact that integer factorization—breaking a number down into smaller numbers that, when multiplied together, produce the original number—is believed to be hard for traditional computers. RSA encryption uses large integers—2,048 or 4,096 bits, typically—that are produced by multiplying together two large prime numbers, and RSA gains its strength from the fact that this multiplication is in a sense "irreversible;" given the product of the two primes, it's really hard to figure out what the primes were in the first place. Another kind of encryption, DiffeHellman, has a similar kind of property; the mathematical problem is slightly different (it's called the discrete logarithm), but the same concept applies; we don't have a good algorithm for traditional computers.
We do, however, have a good algorithm for quantum computers. For it to be useful, we'd need much larger quantum computers than we have today—factorizing a number with n bits requires about 2n qubits, so we're talking something like 4,000 to 8,000 qubits to break common encryption today—but if the technology were developed to build quantum computers with a few thousand qubits, these encryption algorithms would become extremely vulnerable.
In tandem with the work to develop quantum computers and quantum programs, Microsoft is also researching socalled quantumresistant encryption algorithms. These are algorithms designed to run on traditional computers that remain secure even in a world with large quantum computers. Getting these algorithms developed, proven, and widely deployed will take many years.
That quantum computing future is, fortunately, still likely to be many years off. For now, Microsoft is taking sign ups for its quantum preview today. The preview, with the simulator and the programming language, will be released by the end of the year. It'll also include tutorials and libraries to help developers become familiar with quantum computing. 
