ما المقصود ب Q#؟

مكتمل

Q# هي لغة برمجة مفتوحة المصدر وعالية المستوى لتطوير خوارزميات الكم وتشغيلها. إنه جزء من Azure Quantum Development Kit (QDK الحديث) وتم تصميمه ليكون غير محدد الأجهزة، ومقياس النطاق الكامل للتطبيقات الكمومية، وتحسين التنفيذ.

لماذا لغة البرمجة الكمومية؟

هناك العديد من الأسباب للرغبة في بناء لغة برمجة كمومية، ولكن الإجابة المختصرة ستكون: لأننا نريد كتابة الخوارزميات، وليس الدوائر.

عند كتابة الخوارزميات، يجب أن نلبي المتطلبات التالية للغة والمحول البرمجي ووقت التشغيل:

  • تستخدم خوارزميات qubits Quantum المجردة qubits غير المرتبطة بأجهزة أو تخطيط معين. يعالج المحول البرمجي ووقت التشغيل التعيين من qubits البرنامج إلى qubits الفعلية.
  • الحساب الكمومي والكلاسيكي. تعد القدرة على إجراء الحسابات الكلاسيكية والمكمومية أمرا ضروريا في كمبيوتر كمومي عالمي .
  • قوانين الفيزياء خوارزميات الكم تتبع قواعد فيزياء المقدار. على سبيل المثال، لا يمكنهم نسخ أو الوصول إلى حالة qubit مباشرة.

خصائص Q#

يمكن استخدام Q# لكتابة خوارزميات المقدار ومحاكاتها على أجهزة الكمبيوتر الكلاسيكية، ثم تشغيلها على أجهزة الكمبيوتر الكمومية الفعلية. يوفر Q# أيضا مكتبة من العمليات الكمومية المضمنة، مثل البوابات والقياسات الكمومية التي تستخدم لمعالجة البتات الكمومية وإجراء الحسابات الكمومية.

@EntryPoint()
operation MeasureOneQubit() : Result {
    // The following using block creates a fresh qubit and initializes it
    // in the |0 state.
    use qubit = Qubit();
    // We apply a Hadamard operation to the state, thereby preparing the
    // state 1 / sqrt(2) (|0> + |1>).   
    H(qubit);
    // Now we measure the qubit in Z-basis.
    let result = M(qubit);
    // As the qubit is now in an eigenstate of the measurement operator,
    // we reset the qubit before releasing it.
    if result == One { X(qubit); }
    // Finally, we return the result of the measurement.
    return result;
}

تصف الأقسام التالية بعض الميزات الرئيسية ل Q#.

المكتبات الخاصة بالمجال

تمكنك مكتبات Q# من تشغيل العمليات الكمومية المعقدة دون الحاجة إلى تصميم تسلسلات عمليات منخفضة المستوى.

  • توفر المكتبة القياسية مجموعة من الوظائف والعمليات الأساسية التي يمكن استخدامها عند كتابة البرامج الكمومية في Q#.
  • توفر المكتبة الرقمية الكمومية الدعم لمجموعة واسعة من وظائف الأرقام.

إدارة Qubit

في Q#، qubits هي الموارد التي يتم طلبها من وقت التشغيل عند الحاجة وإرجاعها عند عدم استخدامها. تشبه هذه الطريقة الطريقة التي تتعامل بها اللغات الكلاسيكية مع ذاكرة كومة الذاكرة المؤقتة.

نوع qubit غير محدد

لا تحدد لغة Q# ما إذا كانت qubits في البرنامج منطقية أو مادية، أو نوع تقنية qubit. يقرر وقت التشغيل التعيين من متغير qubit في برنامج إلى qubit منطقي أو فعلي فعلي. يمكن تأجيل هذا التعيين إلى ما بعد معرفة المخطط وتفاصيل أخرى للجهاز الهدف.

تخصصات متحكم بها وموحدة تم إنشاؤها بواسطة المحول البرمجي

يمكن أن تجعل Q# العمليات قابلة للعكس والتحكم فيها تلقائيا. تجعل هذه الإمكانية كتابة الخوارزميات أسهل وتسمح بتحسين التعليمات البرمجية المستندة إلى المحول البرمجي للتعليمات البرمجية الكمومية.

عمليات من الدرجة الأولى

يمكن تمرير العمليات والوظائف في Q# إلى عمليات أخرى، وتعيينها إلى متغيرات، واستخدامها مثل أي قيمة أخرى. تسهل هذه الإمكانية التعبير عن بروتوكولات مثل تضخيم السعة وتقدير المرحلة وغيرها.

تدفق التحكم الكلاسيكي

يدعم Q# تدفق التحكم الكلاسيكي العام أثناء تنفيذ الخوارزمية. على سبيل المثال، يمكن التعبير بسهولة عن الحلقة المطلوبة للخوارزميات الاحتمالية مثل بحث Grover في Q#. مع هذا النوع من التدفق، لا يتعين عليك العودة إلى برنامج التشغيل الكلاسيكي لاختبار ما إذا كانت النتيجة تفي ب Oracle، ثم أعد تشغيلها إذا لم تكن كذلك.

حساب كلاسيكي وكمومي مختلط

يدعم Q# الحساب الكلاسيكي الغني والعمليات الكمومية، ما يسمح بالتعبير النظيف عن الخوارزميات التكيفية مثل عملية تقدير مرحلة المشي العشوائية. من الصعب التعبير عن هذه الخوارزميات مباشرة في نموذج الدائرة لتسلسل ثابت من البوابات الكمومية.