HOME

TheInfoList



OR:

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.


History

Historically,
Microsoft Research Microsoft Research (MSR) is the research subsidiary of Microsoft. It was created in 1991 by Richard Rashid, Bill Gates and Nathan Myhrvold with the intent to advance state-of-the-art computing and solve difficult world problems through technologi ...
had two teams interested in quantum computing, the QuArC team based in Redmond, directed by
Krysta Svore Krysta Marie Svore (born 1979) is an American computer scientist specializing in quantum computing. She leads the Azure Quantum software team (formerly the Quantum Architectures and Computation group at Microsoft Research) for Microsoft M ...
, that explored the construction of quantum circuitry, and Station Q initially located in Santa Barbara and directed by Michael Freedman, that explored topological quantum computing. 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. At
Build 2019 Microsoft Build (often stylised as ) is an annual conference event held by Microsoft, aimed at software engineers and web developers using Windows, Microsoft Azure and other Microsoft technologies. First held in 2011, it serves as a success ...
, Microsoft announced that it is open-sourcing the Quantum Development Kit, including its Q# compilers and simulators. Bettina Heim currently leads the Q# language development effort.


Usage

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 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.


Features

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 Azure may refer to: Colour * Azure (color), a hue of blue ** Azure (heraldry) ** Shades of azure, shades and variations Arts and media * ''Azure'' (Art Farmer and Fritz Pauer album), 1987 * Azure (Gary Peacock and Marilyn Crispell album), 2013 ...
.


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.


Syntax

Q# is syntactically related to both C# and F# yet also has some significant differences.


Similarities with C#

* Uses for 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 and are similar, although capitalised (and Int is 64-bit) * Qubits are allocated and disposed inside a block. * Lambda functions using the => operator. * Results are returned using the keyword.


Similarities with F#

* Variables are declared using either or * First-order functions * Modules, which are imported using the keyword * The datatype is declared after the variable name * The range operator * loops * Every operation/function has a return value, rather than . Instead of , an empty Tuple is returned. * Definition of record datatypes (using the keyword, instead of ).


Differences

* Functions are declared using the keyword * Operations on the quantum computer are declared using the keyword * Lack of multiline comments * Asserts instead of throwing exceptions * Documentation is written in Markdown instead of XML-based documentation tags


Example

The following source code is a multiplexer from the official Microsoft Q# library repository. // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. namespace Microsoft.Quantum.Canon


References


External links

* * {{Microsoft development tools Free and open-source software Microsoft free software Microsoft programming languages Quantum programming Programming languages created in 2017 Software using the MIT license