مقدمة في استخدام Copilot

مشاركة فيديو

GitHub Copilot هي أداة لإكمال الكود تعتمد على التعلم الآلي، والتي تساعدك على كتابة الكود بسرعة أكبر وتحسين كفاءة البرمجة.

قدرات Copilot Labs

القدرة الوصف ملاحظات example
Explain إنشاء شرح لقطعة الكود توجد خيارات متقدمة لتخصيص الطلبات (prompts) لتوضيح احتياجاتك بشكل أكثر وضوحًا صورة 1
Show example code إنشاء كود مثال لقطعة الكود توجد خيارات متقدمة للتخصيص صورة 2
Language Translation إنشاء ترجمة لقطعة الكود هذه الترجمة تعتمد على لغة البرمجة، مثل C++ -> Python صورة 3
Readable تحسين قابلية قراءة الكود ليست مجرد تنسيق بسيط، بل تحسين حقيقي للقابلية للقراءة صورة 4
Add Types استنتاج النوع تغيير المتغيرات ذات النوع التلقائي إلى أنواع واضحة صورة 5
Fix bug إصلاح الأخطاء البرمجية إصلاح بعض الأخطاء الشائعة صورة 6
Debug جعل الكود أسهل في التصحيح إضافة سجلات الطباعة، أو إضافة متغيرات مؤقتة لاستخدامها في نقاط التوقف صورة 7
Clean تنظيف الكود تنظيف الأجزاء غير المستخدمة من الكود، التعليقات/الطباعة/الكود المهمل، إلخ صورة 8
List steps سرد خطوات الكود بعض الأكواد تعتمد بشكل صارم على الترتيب، وتحتاج إلى توضيح ترتيب التنفيذ في التعليقات صورة 9
Make robust جعل الكود أكثر قوة مراعاة الحدود/التعددية/إعادة الدخول، إلخ صورة 10
Chunk تقسيم الكود إلى كتل نأمل عادةً أن تكون الأسطر الفعالة للدالة <= 50، والتداخل <= 4، والخروج <= 7، وتعقيد الدورة <= 20 صورة 11
Document إنشاء توثيق للكود إنشاء كود عن طريق كتابة التعليقات، ويمكن أيضًا إنشاء تعليقات وتوثيق من خلال الكود صورة 12
Custom عملية مخصصة أخبر copilot كيفية التعامل مع كودك صورة 13

ما هو Copilot

مقدمة الموقع الرسمي بسيطة وواضحة: Your AI pair programmer — مبرمجك الذكي الزوجي

البرمجة الزوجية: هي منهجية تطوير برمجيات رشيقة (Agile)، يعمل فيها مبرمجان معًا على جهاز الكمبيوتر نفسه: يقوم أحدهما بكتابة الكود، والآخر يراجع كل سطر من الكود. يتم تبادل الأدوار كثيرًا لضمان دقة المنطق ومنع المشكلات.

يشارك Copilot في عمل البرمجة بالطرق التالية، محققًا دوره كمبرمج زوجي.

الفهم

Copilot هو نموذج لغوي كبير، ولا يمكنه فهم الكود الخاص بنا، ولا يمكننا فهم نموذج Copilot أيضًا. الفهم هنا هو تفاهم متبادل بين مبرمج ومجموعة من المبرمجين. يكتب الجميع الكود معًا بناءً على بعض الإجماعات.

صورة 14

يجمع Copilot المعلومات لفهم السياق، وتشمل المعلومات:

  • الكود قيد التحرير
  • الملفات المرتبطة
  • الملفات المفتوحة في IDE
  • عناوين المكتبات
  • مسارات الملفات

Copilot لا يفهم فقط من خلال تعليق من سطر واحد، بل يجمع معلومات سياقية كافية لفهم ما يجب فعله بعد ذلك.

الاقتراحات

اقتراحات الفقرات الكاملة اقتراحات مضمنة (inline)
صورة 15 صورة 16

كما هو معروف، أكثر الطرق شيوعًا للحصول على الاقتراحات هي من خلال التعليقات التي تصف المتطلبات بدلاً من كتابة الكود مباشرة، وبالتالي توجيه GitHub Copilot لتقديم اقتراحات كاملة. ولكن هذا قد يسبب مشكلة تكرار التعليقات، فالتعليقات ليست كلما زادت كان أفضل، فالتعليقات تساعد على الفهم، لكنها ليست جوهر الكود. الكود الجيد يكون واضحًا ومفهومًا حتى بدون تعليقات، ويعتمد على التسمية المناسبة، والتصميم المعقول، والمنطق الواضح. عند استخدام اقتراحات inline، طالما قمت بإعطاء أسماء متغيرات/دوال/فئات مناسبة، سيقوم Copilot دائمًا بإعطاء اقتراحات مناسبة.

بالإضافة إلى المدخلات الخارجية المناسبة، يدعم Copilot أيضًا تقديم اقتراحات بناءً على أكواد موجودة. يمكن أن يساعد Copilot Labs -> Show example code في إنشاء كود مثال لدالة محددة، ما عليك سوى تحديد الكود والنقر على Show example code.

Ctrl+Enter، يمكن دائمًا أن يلهمك كثيرًا. أنشأت ثلاثة ملفات، أحدها main.cpp فارغ، والآخر calculator.h فارغ، ونفذت “الجمع” و"الطرح" في calculator.cpp. قدم Copilot محتوى الاقتراحات التالي:

  1. إضافة تنفيذ “الضرب” و"القسمة".
  2. استدعاء تنفيذ “الجمع والطرح والضرب والقسمة” في main.
  3. طريقة إنشاء واستخدام مكتبة calculator الثابتة.
  4. نتيجة تشغيل دالة main، وكانت النتيجة صحيحة.
  5. محتوى الاقتراح لملف الرأس calculator.h.
  6. أمر الترجمة g++.
  7. حالات اختبار gtest.
  8. محتوى CMakeLists.txt، بما في ذلك الاختبارات.
  9. objdump -d main > main.s لعرض كود التجميع (assembly)، وعرض كود التجميع.
  10. ar لعرض محتويات المكتبة الثابتة، وعرض محتويات المكتبة الثابتة.

في التكوين الافتراضي، يختلف محتوى العرض في كل مرة تضغط فيها على Ctrl+Enter بشكل كبير، ولا يمكن الرجوع إلى المحتوى الذي تم إنشاؤه في المرة السابقة. إذا كنت بحاجة إلى محتوى تم إنشاؤه أكثر استقرارًا، يمكنك تعيين قيمة temperature [0، 1]. كلما كانت القيمة أصغر، كان المحتوى الذي تم إنشاؤه أكثر استقرارًا؛ وكلما زادت القيمة، زاد صعوبة التنبؤ بالمحتوى الذي تم إنشاؤه. محتوى الاقتراحات أعلاه يتجاوز بكثير محتوى الاقتراحات العامة للاستخدام اليومي، وربما يكون ذلك لأن المشروع بسيط جدًا بالفعل. بمجرد كتابة ملفات الترجمة وملفات الرأس بالكامل، لن تكون هناك这么多 الاقتراحات، لكن لا تزال لها تأثير ملهم جيد جدًا في كثير من الأحيان.

استخدم اختصارات اقتراحات Copilot keyboard shortcuts

الإجراء الاختصار اسم الأمر
قبول الاقتراح المضمن Tab editor.action.inlineSuggest.commit
تجاهل الاقتراح Esc editor.action.inlineSuggest.hide
إظهار اقتراح مضمن التالي Alt+] editor.action.inlineSuggest.showNext
إظهار اقتراح مضمن السابق Alt+[ editor.action.inlineSuggest.showPrevious
تشغيل الاقتراح المضمن Alt+\ editor.action.inlineSuggest.trigger
عرض المزيد من الاقتراحات في لوحة منفصلة Ctrl+Enter github.copilot.generate

تصحيح الأخطاء

هناك طريقتان عامتان لتصحيح الأخطاء، وهما الطباعة ونقاط التوقف (breakpoints).

  • يمكن لـ Copilot المساعدة في إنشاء كود الطباعة تلقائيًا، باختيار تنسيق الطباعة أو السجلات بناءً على السياق.
  • يمكن لـ Copilot المساعدة في تعديل هيكل الكود الموجود، وتوفير مواقع نقاط توقف مريحة. بعض الأكواد بأسلوب متداخل يصعب وضع نقاط توقف فيها، ويمكن لـ Copilot تعديلها مباشرة.

تتضمن ميزات Copilot Labs المسبقة ما يلي:

  • Debug، إنشاء كود تصحيح، مثل الطباعة، ونقاط التوقف، وغيرها من أكواد التصحيح.

المراجعة

المراجعة متبادلة، نحن و Copilot نحتاج غالبًا إلى مراجعة بعضنا البعض، ولا نثق بسهولة في الكود الذي يتم إنشاؤه بسرعة.

تتضمن ميزات Copilot Labs المسبقة ما يلي:

  • Fix bug، إصلاح الأخطاء التي يكتشفها مباشرة، تحتاج إلى حفظ الكود الخاص بك أولاً، ومراجعة تعديلات Copilot بعناية.
  • Make robust، جعل الكود أكثر قوة، سيكتشف Copilot الحالات غير المعالجة ويقوم بإنشاء كود محسن، ويجب أن نستلهم منه ونفكر بشكل أكثر دقة.

إعادة الهيكلة

تتضمن ميزات Copilot Labs المسبقة ما يلي:

  • Readable، تحسين القابلية للقراءة، تحسين حقيقي للقابلية للقراءة، وليس مجرد تنسيق بسيط، ولكن يجب مراجعة تعديلات Copilot بعناية تامة.
  • Clean، جعل الكود أكثر إيجازًا، وإزالة الكود الزائد.
  • Chunk، جعل الكود أسهل في الفهم، وتقسيم الكود إلى كتل، وتقسيم دالة كبيرة إلى عدة دوال صغيرة.

التوثيق

تتضمن ميزات Copilot Labs المسبقة ما يلي:

  • Document، إنشاء التوثيق، مثل تعليقات الدوال، وغيرها من الوثائق.

استخدام Custom لتوسيع حدود Copilot

قد لا يبدو Custom ملفتًا للنظر، ولكنه يجعل Copilot يمتلك إمكانيات لا حصر لها. يمكننا فهمه كلغة برمجة جديدة، وهذه اللغة البرمجية هي الإنجليزية أو الصينية.

يمكنك الدخول عبر Custom

  • 移除注释代码 (إزالة كود التعليقات) صورة 17

  • 增加乘除的能力 (إضافة قدرات الضرب والقسمة) صورة 18

  • 改写为go (إعادة كتابته بلغة Go) صورة 19

  • 添加三角函数计算 (إضافة حساب الدوال المثلثية) صورة 20

  • 添加微分计算 (إضافة حساب التفاضل)، اللغة الصينية هنا ليست مفيدة جدًا، استخدم support calculate differential، في الوضع المنخفض الحرارة (low temperature)، لا توجد إجابة موثوقة، وفي الوضع العالي الحرارة، هناك عدة إجابات سخيفة.

في العمل اليومي، يمكنك في أي وقت طرح احتياجاتك على Copilot. من خلال قدرة Custom، يمكن لـ Copilot المساعدة في إكمال العديد من العمليات المطلوبة.

بعض الأمثلة:

prompts الوصف
generate the cmake file إنشاء ملف cmake
generate 10 test cases for tan() إنشاء 10 حالات اختبار لـ tan()
format like google style تنسيق الكود بنمط Google
考虑边界情况 (مراعاة ظروف الحدود) مراعاة ظروف الحدود
确认释放内存 (تأكيد تحرير الذاكرة) تأكيد تحرير الذاكرة

استخدام Custom مليء بالخيال، ولكنه أحيانًا لا يكون موثوقًا جدًا، يُنصح بحفظ الكود قبل الاستخدام، ثم مراجعة التعديلات التي قام بها بعناية.

الحصول على اقتراحات أكثر احترافية

كلما كانت التلميحات (prompts) المقدمة إلى Copilot أوضح، كانت اقتراحاته أكثر دقة، والتلميحات الاحترافية可以获得 اقتراحات أكثر احترافية. الكثير من الأكواد غير المناسبة لا تؤثر على تجميع الكود، ولا تشغيل العمل، لكنها تؤثر على القابلية للقراءة، والقابلية للصيانة، وقابلية التوسع، وإعادة الاستخدام. هذه الخصائص مهمة جدًا أيضًا. إذا أردنا الحصول على اقتراحات أكثر احترافية، فمن الأفضل أن نعرف بعض الأسماء الإنجليزية لأفضل الممارسات.

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

اقتراحات النصوص العادية

en ar
GitHub Copilot uses the OpenAI Codex to suggest code and entire functions in real-time, right from your editor. يستخدم GitHub Copilot OpenAI Codex لاقتراح الكود والدوال الكاملة في الوقت الفعلي، مباشرة من محررك.
Trained on billions of lines of code, GitHub Copilot turns natural language prompts into coding suggestions across dozens of languages. بعد التدريب على مليارات الأسطر من الكود، يحول GitHub Copilot تلميحات اللغة الطبيعية إلى اقتراحات برمجية عبر عشرات اللغات.
Don’t fly solo. Developers all over the world use GitHub Copilot to code faster, focus on business logic over boilerplate, and do what matters most: building great software. لا تعمل بمفردك. يستخدم المطورون في جميع أنحاء العالم GitHub Copilot للبرمجة بشكل أسرع، والتركيز على منطق العمل بدلاً من النماذج الأولية (boilerplate)، وفعل الأهم: بناء برمجيات رائعة.
Focus on solving bigger problems. Spend less time creating boilerplate and repetitive code patterns, and more time on what matters: building great software. Write a comment describing the logic you want and GitHub Copilot will immediately suggest code to implement the solution. ركز على حل مشاكل أكبر. قضاء وقت أقل في إنشاء نماذج وأنماط كود متكررة، وقضاء وقت أكثر في ما يهم: بناء برمجيات رائعة. اكتب تعليقًا يصف المنطق الذي تريده وسيقترح GitHub Copilot كودًا فورًا لتنفيذ الحل.
Get AI-based suggestions, just for you. GitHub Copilot shares recommendations based on the project’s context and style conventions. Quickly cycle through lines of code, complete function suggestions, and decide which to accept, reject, or edit. احصل على اقتراحات قائمة على الذكاء الاصطناعي، مخصصة لك فقط. يشارك GitHub Copilot التوصيات بناءً على سياق المشروع واتفاقيات النمط. التنقل السريع عبر أسطر الكود، واقتراحات الدوال الكاملة، وتحديد أيها يتم قبوله أو رفضه أو تعديله.
Code confidently in unfamiliar territory. Whether you’re working in a new language or framework, or just learning to code, GitHub Copilot can help you find your way. Tackle a bug, or learn how to use a new framework without spending most of your time spelunking through the docs or searching the web. اكتب الكود بثقة في منطق غير مألوف. سواء كنت تعمل في لغة أو إطار عمل جديد، أو تتعلم فقط البرمجة، يمكن لـ GitHub Copilot مساعدتك في العثور على طريقك. تعامل مع خطأ برمجي، أو تعلم كيفية استخدام إطار عمل جديد دون قضاء معظم وقتك في التنقيب في الوثائق أو البحث على الويب.

هذه الترجمات تم إنشاؤها بواسطة Copilot، ولا يمكن التأكد مما إذا كانت هذه الاقتراحات مبنية على النموذج أو ناتجة عن سلوك الترجمة. في الواقع، أي محتوى باللغة الإنجليزية تكتبه في عمود en في الجدول، يمكن لـ Copilot ترجمته (إنشاؤه) إلى المحتوى في العمود ar.

صورة 21

إعدادات

خيارات إعدادات العميل

الإعداد الوصف ملاحظات
temperature درجة حرارة العينة 0.0 - 1.0، 0.0 يُنشئ شظايا كود الأكثر شيوعًا، 1.0 يُنشئ شظايا كود الأقل شيوعًا وأكثر عشوائية
length الحد الأقصى لطول اقتراح الكود المُنشأ الافتراضي 500
inlineSuggestCount عدد الاقتراحات المضمنة المُنشأة الافتراضي 3
listCount عدد الاقتراحات المُنشأة الافتراضي 10
top_p عرض أولوية اقتراحات الاحتمال N عرض جميع الاقتراحات المحتملة بشكل افتراضي

يحتوي إعدادات الحساب الشخصي على إعدادين، أحدهما متعلق بحقوق النشر، والآخر متعلق بالخصوصية.

  • ما إذا كان سيتم استخدام الكود مفتوح المصدر لتقديم الاقتراحات، ويستخدم بشكل أساسي لتجنب مشاكل حقوق النشر في شظايا الكود المُنشأة بواسطة Copilot، وتجنب قيود ترخيص المصدر المفتوح.
  • ما إذا كان سيُسمح باستخدام شظايا الكود الشخصية لتحسين المنتج، لتجنب مخاطر تسريب الخصوصية.

أمن البيانات

جمع معلومات Copilot

  • النسخة التجارية
    • معلومات استخدام الوظائف، قد تحتوي على معلومات شخصية
    • جمع شظايا الكود، يتم التخلص منها فورًا بعد تقديم الاقتراح، لا يتم الاحتفاظ بأي شظايا كود
    • مشاركة البيانات، GitHub، Microsoft، OpenAI
  • النسخة الشخصية
    • معلومات استخدام الوظائف، قد تحتوي على معلومات شخصية
    • جمع شظايا الكود، بعد تقديم الاقتراحات، يتم الاحتفاظ بها أو التخلص منها بناءً على إعدادات القياس عن بعد (telemetry) الشخصية
    • شظايا الكود تتضمن، الكود قيد التحرير، الملفات المرتبطة، الملفات المفتوحة في IDE، عناوين المكتبات، مسارات الملفات
    • مشاركة البيانات، GitHub، Microsoft، OpenAI
    • حماية بيانات الكود، 1. التشفير. 2. يمكن لموظفي GitHub/OpenAI ذوي الصلة بفريق Copilot رؤيتها. 3. يتطلب التحكم في الوصول المستند إلى الأدوار والمصادقة متعددة العوامل عند الوصول
    • تجنب استخدام شظايا الكود (الاحتفاظ بها أو تدريبها)، 1. الإعدادات 2. الاتصال بـ فريق Copilot
    • هل سيتم استخدام الكود الخاص؟ لا.
    • هل سيتم إخراج معلومات شخصية (الاسم وتاريخ الميلاد، إلخ)؟ نادر، ولا يزال قيد التحسين.
  • بيان الخصوصية التفصيلي

الأسئلة الشائعة

  • بيانات تدريب Copilot، تأتي من المستودعات العامة في Github.
  • هل الكود الذي كتبه Copilot مثالي؟ ليس بالضرورة.
  • هل يمكن كتابة كود لمنصات جديدة؟ القدرة محدودة مؤقتًا.
  • كيفية استخدام Copilot بشكل أفضل؟ تقسيم الكود إلى دوال صغيرة، وصف وظيفة الدالة باللغة الطبيعية، وكذلك المدخلات والمخرجات، واستخدام أسماء متغيرات ودوال ذات معنى محدد.
  • هل سيحتوي الكود المُنشأ بواسطة Copilot على أخطاء برمجية (bugs)؟ بالطبع لا يمكن تجنبها.
  • هل يمكن استخدام الكود المُنشأ بواسطة Copilot مباشرة؟ ليس بالضرورة، أحيانًا يحتاج إلى تعديل.
  • هل يمكن استخدام الكود المُنشأ بواسطة Copilot في المشاريع التجارية؟ نعم.
    • هل الكود المُنشأ بواسطة Copilot يعتبر ملكية فكرية لـ Copilot؟ لا.
    • هل Copilot ينسخ الكود من مجموعة التدريب؟ Copilot لا ينسخ الكود، هناك احتمال ضئيل جدًا أن يتطابق أكثر من 150 سطر كود مع مجموعة التدريب، وسيحدث ذلك في الحالتين التاليتين
      • عندما تكون معلومات السياق قليلة جدًا
      • عندما يكون حلاً لمشكلة عامة
    • كيفية التكرار مع الكود العام، قم بتعيين filter صورة 22
  • كيفية استخدام الكود المُنشأ بواسطة Copilot بشكل صحيح؟ 1. اختبار/مراجعة الكود المُنشأ بنفسك؛ 2. لا تقم بتجميع أو تشغيل الكود المُنشأ تلقائيًا قبل المراجعة.
  • هل يتصرف Copilot بنفس الطريقة في كل لغة طبيعية؟ أفضل أداء هو باللغة الإنجليزية.
  • هل سيقوم Copilot بإنشاء محتوى مسيء؟ هناك تصفية (filter)، لكن لا يمكن استبعاد احتمالية ظهوره.