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

مشاركة فيديو

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

Copilot Labs القدرات

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

ما هو Copilot

مقدمة الموقع الرسمي بسيطة ومباشرة: Your AI pair programmer — مبرمجك المقترن بالذكاء الاصطناعي

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

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

فهم

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

picture 14

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

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

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

اقتراحات

اقتراح كاملاقتراح مضمن (inline)
picture 15picture 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 لعرض كود التجميع، وعرض كود التجميع
  10. ar لعرض محتويات المكتبة الثابتة، وعرض محتويات المكتبة الثابتة

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

استخدم اختصارات Copilot الاختصارات

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

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

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

  • يمكن لـ 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

  • إزالة كود التعليقات
    picture 17

  • إضافة قدرات الضرب والقسمة
    picture 18

  • إعادة الكتابة بلغة Go
    picture 19

  • إضافة حساب الدوال المثلثية
    picture 20

  • إضافة حساب التفاضل، لا تعمل الصينية هنا جيدًا، استخدم support calculate differential، في الوضع منخفض الحرارة، لا توجد إجابة موثوقة، في الوضع عالي الحرارة،有几个 إجابات بعيدة عن المنطق.

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

بعض الأمثلة:

المطالبات (prompts)الوصف
generate the cmake fileإنشاء ملف cmake
generate 10 test cases for tan()إنشاء 10 حالات اختبار
format like google styleتنسيق الكود
مراعاة الحدودمراعاة الحدود
تأكيد تحرير الذاكرةتأكيد تحرير الذاكرة

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

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

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

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

اقتراحات النصوص البحتة

enar
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.

picture 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 على أخطاء برمجية؟ بالطبع لا يمكن تجنبها.
  • هل يمكن استخدام الكود الذي ينشئه Copilot مباشرة؟ ليس بالضرورة، أحيانًا يحتاج إلى تعديل.
  • هل يمكن استخدام الكود الذي ينشئه Copilot في المشاريع التجارية؟ نعم.
    • هل الكود الذي ينشئه Copilot يعد ملكية فكرية لـ Copilot؟ لا.
    • هل Copilot ينسخ الكود من مجموعة التدريب؟ Copilot لا ينسخ الكود، هناك احتمال منخفض جدًا لظهور أكثر من 150 سطر من الكود يتطابق مع مجموعة التدريب، وتحدث الحالتان التاليتان
      • عندما تكون معلومات السياق قليلة جدًا
      • عندما تكون حلًا لمشكلة عامة
    • كيف تجنب التكرار مع الكود العام، قم بتعيين الفلتر
      picture 22
  • كيف استخدام الكود الذي ينشئه Copilot بشكل صحيح؟ 1. اختبار/مراجعة الكود المُنشأ ذاتيًا؛ 2. لا تقم بتجميع أو تشغيل الكود المُنشأ تلقائيًا قبل المراجعة.
  • هل يؤدي Copilot نفس الأداء في كل اللغات الطبيعية؟ أفضل أداء هو باللغة الإنجليزية.
  • هل سيقوم Copilot بإنشاء مسيء؟ تمت إضافة تصفية، لكن لا يمكن استبعاد احتمال ظهورها.