Jump to content

Q Sharp

From Wikipedia, the free encyclopedia
Q#
ParadigmQuantum, functional, imperative
Designed byMicrosoft Research (quantum architectures and computation group; QuArC)
DeveloperMicrosoft
First appearedDecember 11, 2017 (2017-12-11)[1]
Typing disciplineStatic, strong
PlatformCommon Language Infrastructure
LicenseMIT License[2]
Filename extensions.qs
Websitelearn.microsoft.com/en-us/azure/quantum/
Influenced by
C#, F#, Python

Q# (pronounced Q sharp) is a domain-specific programming language used for expressing quantum algorithms.[3] It was initially released to the public by Microsoft as part of the Quantum Development Kit.[4]

Q# works in conjunction with classical languages such as C#, Python and F#, and is designed to allow the use of traditional programming concepts in quantum computing, including functions with variables and branches as well as a syntax-highlighted development environment with a quantum debugger.[1][5][6]

History

[edit]

Historically, Microsoft Research had two teams interested in quantum computing: the QuArC team based in Redmond, Washington,[7] directed by Krysta Svore, 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.[8][9]

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.[10] On December 11, 2017, Microsoft released Q# as a part of the Quantum Development Kit.[4]

At Build 2019, Microsoft announced that it would be open-sourcing the Quantum Development Kit, including its Q# compilers and simulators.[11]

To support Q#, Microsoft developed Quantum Intermediate Representation (QIR) in 2023 as a common interface between programming languages and target quantum processors. The company also announced a compiler extension that generates QIR from Q#.[12]

Bettina Heim used to lead the Q# language development effort.[13][14]

Usage

[edit]

Q# is available as a separately downloaded extension for Visual Studio,[15] but it can also be run as an independent tool from the command line or Visual Studio Code. Q# was introduced on Windows and is available on MacOS and Linux.[16]

The Quantum Development Kit includes a quantum simulator capable of running Q# and simulated 30 logical qubits.[17][18]

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.[19]

Features

[edit]

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 quantum logic gates).[citation needed]

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.[20]

Documentation and resources

[edit]

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, called 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

[edit]

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

Similarities with C#

[edit]
  • Uses namespace 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 Int Double String and Bool are similar, although capitalised (and Int is 64-bit)[21]
  • Qubits are allocated and disposed inside a using block.
  • Lambda functions are defined using the => operator.
  • Results are returned using the return keyword.

Similarities with F#

[edit]
  • Variables are declared using either let or mutable[3]
  • First-order functions
  • Modules, which are imported using the open keyword
  • The datatype is declared after the variable name
  • The range operator ..
  • for … in loops
  • Every operation/function has a return value, rather than void. Instead of void, an empty Tuple () is returned.
  • Definition of record datatypes (using the newtype keyword, instead of type).

Differences

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

References

[edit]
  1. ^ a b "Microsoft's Q# quantum programming language out now in preview". Ars Technica. 12 Dec 2017. Retrieved 2024-09-04.
  2. ^ "Introduction to Q#" (PDF). University of Washington.
  3. ^ a b QuantumWriter. "The Q# Programming Language". docs.microsoft.com. Retrieved 2017-12-11.
  4. ^ a b "Announcing the Microsoft Quantum Development Kit". Retrieved 2017-12-11.
  5. ^ "Microsoft makes play for next wave of computing with quantum computing toolkit". Ars Technica. 25 Sep 2017. Retrieved 2024-09-04.
  6. ^ "Quantum Computers Barely Exist—Here's Why We're Writing Languages for Them Anyway". MIT Technology Review. 22 Dec 2017. Retrieved 2024-09-04.
  7. ^ "Solving the quantum many-body problem with artificial neural networks". Microsoft Azure Quantum. 15 February 2017.
  8. ^ Scott Aaronson's blog, 2013, 'Microsoft: From QDOS to QMA in less than 35 years', https://scottaaronson.blog/?p=1471
  9. ^ "What are the Q# programming language & QDK? - Azure Quantum". learn.microsoft.com. 12 January 2024.
  10. ^ "Microsoft announces quantum computing programming language". Retrieved 2017-12-14.
  11. ^ "Microsoft is open-sourcing its Quantum Development Kit". Archived from the original on 2021-01-23. Retrieved 2020-12-12.
  12. ^ Krill, Paul (29 Sep 2020). "Microsoft taps LLVM for quantum computing". InfoWorld. Retrieved 2024-09-04.
  13. ^ "The Women of QuArC". 30 March 2019.
  14. ^ "Intro to Q# - Intro to Quantum Software Development". stem.mitre.org.
  15. ^ QuantumWriter. "Setting up the Q# development environment". docs.microsoft.com. Retrieved 2017-12-14.
  16. ^ Coppock, Mark (26 Feb 2018). "Microsoft's quantum computing language is now available for MacOS". Digital Trends. Retrieved 2024-09-04.
  17. ^ Akdogan, Erman (23 October 2022). "Quantum computing is coming for finance & crypto". Medium.
  18. ^ Melanson, Mike (16 Dec 2017). "This Week in Programming: Get Quantum with Q Sharp". The New Stack. Retrieved 2024-09-04.
  19. ^ "This Week in Programming: Get Quantum with Q Sharp". The New Stack. 16 December 2017.
  20. ^ "Microsoft previews quantum computing development kit". CIO. Archived from the original on 2022-10-30. Retrieved 2022-10-30.
  21. ^ "Types in Q# - Microsoft Quantum". docs.microsoft.com. 27 July 2022.
[edit]