我在对象浏览器中浏览了一下。
用于调用 Q# 的 C# 存根operations
如下所示:
using (var sim = new QuantumSimulator())
{
var res = MyOperation.Run(sim, arg1, arg2).Result;
}
运行时环境似乎作为参数传递给操作。所以我查看了这个QuantumSimulator
类,然后查看了它的父类,SimulatorBase
它有这个有用的评论和定义。
//
// Summary:
// A Base class for Simulators. It provides the infrastructure that makes it easy
// for a Simulator to become an OperationFactory (so the execution of an Operation
// can be tied to this simulator) and to manage the allocation of Qubits (via the
// QubitManager).
public abstract class SimulatorBase : AbstractFactory<AbstractOperation>, IOperationFactory
我将其解释为任何实现的东西AbstractFactory<AbstractOperation>
都可以作为参数传递给操作 - 从而将语言结构与特定的运行环境联系起来。在实现真正的量子计算机时,它可能可以QuantumSimulator
用作示例——看起来它主要只是实现了Microsoft.Quantum.Primitive
命名空间中原始操作的具体版本。(所有原始操作似乎都是抽象类)。
我认为您可能必须具体实现每个原语才能适当地控制机器上的量子位,但是您可能几乎可以开箱即用地使用 Q# 语言。
这对我来说是相当投机的,但它可能是一个很好的起点。
编辑:前奏曲中需要修改的四个命名空间是
Microsoft.Quantum.Extensions.Bitwise
Microsoft.Quantum.Extensions.Convert
Microsoft.Quantum.Extensions.Math
Microsoft.Quantum.Extensions.RangeFunctions
Microsoft.Quantum.Primitive