Programovací jazyk Q#The Q# Programming Language

ÚvodIntroduction

Přirozeným modelem pro kvantové výpočty je přistupovat ke kvantovému počítači jako ke koprocesoru podobnému těm, které se používají s grafickými procesory, programovatelnými hradlovými poli (FPGA) a dalšími pomocnými procesory.A natural model for quantum computation is to treat the quantum computer as a coprocessor, similar to that used for GPUs, FPGAs, and other adjunct processors. Primární řídicí logika spouští klasický kód v klasickém „hostitelském“ počítači.The primary control logic runs classical code on a classical "host" computer. Když je to vhodné a potřebné, hostitelský program může vyvolat subrutinu, která běží na pomocném procesoru.When appropriate and necessary, the host program can invoke a subroutine that runs on the adjunct processor. Po dokončení provádění subrutiny získá hostitelský program přístup k jejím výsledkům.When the subroutine completes, the host program gets access to the subroutine's results.

Q# je programovací jazyk specifický pro konkrétní doménu, který se používá k vyjadřování kvantových algoritmů.Q# (Q-sharp) is a domain-specific programming language used for expressing quantum algorithms. Slouží k psaní subrutin, které se spouštějí na pomocném kvantovém procesoru a jsou řízeny klasickým hostitelským programem a počítačem.It is to be used for writing subroutines that execute on an adjunct quantum processor, under the control of a classical host program and computer. Dokud nebudou kvantové procesory běžně k dispozici, budou se subrutiny v jazyku Q# spouštět v simulátoru.Until quantum processors are widely available, Q# subroutines execute on a simulator.

Jazyk Q# poskytuje malou množinu primitivních typů a také dva způsoby (pole a řazené kolekce členů) vytváření nových strukturovaných typů.Q# provides a small set of primitive types, along with two ways (arrays and tuples) for creating new, structured types. Podporuje základní procedurální model pro psaní programů se smyčkami a příkazy if/then.It supports a basic procedural model for writing programs, with loops and if/then statements. Konstrukty nejvyšší úrovně v jazyku Q# jsou uživatelsky definované typy, operace a funkce.The top-level constructs in Q# are user defined types, operations, and functions.

V následujících částech jsou podrobně vysvětlena tato témata:The following sections detail:

ZásadyConventions

Snažíme se zajistit, aby se ve všech situacích konzistentně používaly běžná interpunkční znaménka.We are working to ensure that common punctuation marks are used consistently in all situations. Očekáváme, že díky tomu bude snazší naučit se jazyk Q# a číst ho, protože tato znaménka znamenají vždy totéž a stejná koncepce je vždy reprezentována stejným způsobem.We expect that this will make Q# easier to learn and to read because these marks always mean the same thing, and the same concept is always represented the same way.

Konkrétně:Specifically:

  • Středník (;) slouží k ukončení příkazu nebo jednořádkové direktivy.The semi-colon, ;, is used to end a statement or single-line directive. Nepoužívá se k žádným jiným účelům.It is not used for any other purpose.
  • Čárka (,) slouží k oddělení prvků posloupnosti.The comma, ,, is used to separate elements of a sequence. Používá se pro literály řazené kolekce členů, literály pole, seznamy argumentů, definice řazených kolekcí členů a seznamy typů.It is used for tuple literals, array literals, argument lists, tuple definitions, and type lists. Na rozdíl od dřívějších verzí již znak ; není podporován jako oddělovač literálů pole.In a change from earlier versions, ; is no longer supported as an array literal separator.
  • Dvojtečka (:) slouží k uvedení anotace typu.The colon, :, is used to introduce a type annotation. Používá se primárně v signaturách, které lze volat.It is primarily used in callable signatures. Vzhledem k tomu, že dvojtečka vždy uvádí signaturu typu, ternární podmíněný operátor zavedený ve verzi 0.3 používá svislou čáru (|) pro oddělení hodnot true a false; jazyk Q# proto používá namísto dvojtečky oddělovač cond ? tval | fval jako v jazyku C.Because colon always introduces a type signature, the ternary conditional operator introduced in 0.3 uses a vertical bar, |, to separate the true and false values; thus, Q# uses cond ? tval | fval instead of the colon as separator as in C.