This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. (September 2018) (Learn how and when to remove this template message)
|Paradigm||multi-paradigm: quantum, functional, imperative|
|Designed by||Microsoft Research (quantum architectures and computation group; QuArC)|
|First appeared||December 11th, 2017|
|Typing discipline||static, strong|
|Platform||Common Language Infrastructure|
|Website||Microsoft Quantum (GitHub)|
Q# (pronounced as Q sharp) is a domain-specific programming language used for expressing quantum algorithms. It was initially released to the public by Microsoft as part of the Quantum Development Kit.
During a Microsoft Ignite Keynote on September 26, 2017, Microsoft announced that they were going to release a new programming language geared specifically towards quantum computers. On December 11, 2017, Microsoft released Q# as a part of the Quantum Development Kit.
Q# is available as a separately downloaded extension for Visual Studio, but it can also be run as an independent tool from the Command line and/or Visual Studio Code. The Quantum Development Kit ships with a quantum simulator which is capable of running Q#.
In order to invoke the quantum simulator, another .NET programming language, usually C#, is used, which provides the (classical) input data for the simulator and reads the (classical) output data from the simulator.
A primary feature of Q# is the ability to create and use qubits for algorithms. As a consequence, some of the most prominent features of Q# are the ability to entangle and introduce superpositioning to qubits via Controlled NOT gates and Hadamard gates, respectively, as well as Toffoli Gates, Pauli X, Y, Z Gate, and many more which are used for a variety of operations; see the list at the article on quantum logic gates.
The hardware stack that will eventually come together with Q# is expected to implement Qubits as topological qubits. The quantum simulator that is shipped with the Quantum Development Kit today is capable of processing up to 32 qubits on a user machine and up to 40 qubits on Azure.
Documentation and Resources
Currently, the resources available for Q# are scarce, but the official documentation is published: Microsoft Developer Network: Q#. Microsoft Quantum Github repository is also a large collection of sample programs implementing a variety of Quantum algorithms and their tests.
Microsoft has also hosted a Quantum Coding contest on Codeforces here: Microsoft Q# Coding Contest - Codeforces, and also provided related material to help answer the questions in the blog posts, plus the detailed solutions in the tutorials.
Microsoft hosts a set of learning exercises to help learn Q# on github: microsoft/QuantumKatas with links to resources, and answers to the problems.
Similarities with C#
namespacefor code isolation
- All statements end with a
- Curly braces are used for statements of scope
- Single line comments are done using
- Variable data types such as
Boolare similar, although capitalised (and Int is 64-bit)
- Qubits are allocated and disposed inside a
- Lambda functions using the
- Results are returned using the
Similarities with F#
- Variables are declared using either
- First-order functions
- Modules, which are imported using the
- The datatype is declared after the variable name
- The range operator
for … inloops
- Every operation/function has a return value, rather than
void. Instead of
void, an empty Tuple
- Definition of record datatypes (using the
newtypekeyword, instead of
- Functions are declared using the
- Operations on the quantum computer are declared using the
- Lack of multiline comments
- Asserts instead of throwing exceptions
- Documentation is written in Markdown instead of XML-based documentation tags
- QuantumWriter. "The Q# Programming Language". docs.microsoft.com. Retrieved 2017-12-11.
- "Announcing the Microsoft Quantum Development Kit". Retrieved 2017-12-11.
- "Microsoft announces quantum computing programming language". Retrieved 2017-12-14.
- QuantumWriter. "Setting up the Q# development environment". docs.microsoft.com. Retrieved 2017-12-14.
- "Types in Q# - Microsoft Quantum". docs.microsoft.com.