إذا لم يكن الذكاء الاصطناعي موجودًا، فإن الطريقة الصحيحة هي العمل مع المبرمجين لكتابة التعليمات البرمجية

بقلم سوبر نيرو
أصدرت شركة تطوير الألعاب الشهيرة Ubisoft وشركة Mozila العملاقة للتكنولوجيا مفتوحة المصدر مؤخرًا أداة المساعدة البرمجية Clever-Commit التي تم تطويرها بشكل مشترك، والتي توفر للمهندسين وظائف تحذير الأخطاء وتصحيحها.
لقد نشرنا مقالاً بعنوان "مساعدتك في كتابة Python هي مجرد الخطوة الأولى للذكاء الاصطناعي ليحل محل المبرمجين"، والذي قدم فيه أن المزيد والمزيد من أدوات الذكاء الاصطناعي يمكنها مساعدة المهندسين على تحسين جودة الكود وكفاءة العمل أثناء عملية كتابة الكود.
على سبيل المثال، يمكن لشركة Kite، التي استثمر فيها الرئيس التنفيذي لشركة GitHub، إكمال مقتطفات التعليمات البرمجية بشكل ذكي، واستدعاء الوظائف، والاستعلام عن عروض المستندات التوضيحية استنادًا إلى بيئة الإنتاج الحالية. ونحن نعلم أن كايت قد مازح بأن طموح الذكاء الاصطناعي لا يقتصر على مساعدة البشر، بل يهدف في نهاية المطاف إلى استبدال وظائف المهندسين.
بالطبع، هذه مجرد نكت. في الوقت الحاضر، يبدو من غير المحتمل أن تحل الذكاء الاصطناعي محل الحرفيين بشكل كامل. في المستقبل، سيكون للذكاء الاصطناعي دور أكبر في مساعدة المهندسين على العمل بكفاءة أكبر وبجودة أعلى.

في الآونة الأخيرة، ظهر مساعد البرمجة بالذكاء الاصطناعي Clever-Commit الذي تم تطويره بشكل مشترك بين Mozila و Ubisoft. وظيفتها هي إنقاذ المهندسين وراء Firefox من الأخطاء. في 12 فبراير، أعلنت شركة Mozila أنها بدأت في استخدام هذه الأداة بالتعاون مع Ubisoft لجعل كتابة التعليمات البرمجية أكثر كفاءة، وبالتالي توفير تجربة تصفح أفضل لمستخدمي Firefox.
Clever-Commit: تحذير من وجود حشرة عالية الطاقة في المستقبل!
كان سلف Clever-Commit هو Commit-Assistant، والذي أطلقته Ubisoft العام الماضي.

Commit-Assistant هو نظام للعثور على الأخطاء واقتراح الإصلاحات. إنه مساعد برمجي يساعد المطورين على تحسين تجربة الألعاب. يعود ولادة هذا المساعد الذكي إلى قاعدة التعليمات البرمجية الضخمة الخاصة به. خلال تدريبها، ورد أنها حصلت على ما يقرب من عشر سنوات من التعليمات البرمجية العاملة من Ubisoft، بما في ذلك التعليمات البرمجية التي تم إصلاح العديد من الأخطاء فيها.
وعلى هذه الخلفية، تعاونت Mozlia وUbisoft لإطلاق نسخة مطورة من Clever-Commit.
Clever-Commit هي أداة برمجة مساعدة، ويمكن وصفها ببساطة بأنها مساعد الذكاء الاصطناعي الذي يتحقق من الكود. عندما يقوم المطورون بإرسال تغييرات في الكود إلى قاعدة كود Firefox، يمكنها مقارنة الكود الجديد بالكود السابق لمعرفة ما إذا كان مشابهًا للأخطاء التي تم العثور عليها. إذا قرر المساعد أن الإرسال الجديد مشبوه، فإنه ينبه المطور.

إذا كانت دقة حكم المساعد عالية، فهذا يعني أنه يمكن اكتشاف الأخطاء والتحذير منها قبل إرسالها إلى مستودع المصدر. بالنسبة لبعض الأخطاء، يمكن لـ Clever-Commit أيضًا اقتراح الإصلاحات المناسبة.
تخطط Mozilla لاستخدام Clever-Commit أثناء مراجعة الكود أولاً، ثم توسيعه إلى مراحل تطوير أخرى بمرور الوقت. ومن الجدير بالذكر أنه يعمل بشكل مثالي مع اللغات الثلاث التي تستخدمها شركة Mozilla لمتصفح Firefox: C++ وJavaScript وRust.
كيف يتم العثور على الأخطاء؟
في الواقع، حدوثه أمر لا مفر منه، والوقاية التلقائية من الأخطاء وحلها هو طريق لا مفر منه لتطوير البرمجيات. تستخدم الأساليب الحالية مقاييس الكود والعملية لبناء نماذج تعتمد على المقاييس والتي يمكنها منع إدراج العيوب في مشاريع البرمجيات بشكل فعال.
التكنولوجيا المستخدمة هنا تسمى CLEVER، والتي تم تطويرها لأول مرة من قبل باحثين من Ubisoft وجامعة كونكورديا. لقد كتبوا ورقة بحثية بعنوان "CLEVER: الجمع بين مقاييس الكود واكتشاف الاستنساخ لمنع الأخطاء وحلها في الوقت المناسب في المشاريع الصناعية الكبيرة" والتي تشرح تفاصيلها. بشكل عام، إنها عبارة عن تقنية مشتركة لمنع الأخطاء وحلها على المستوى المشترك.

عنوان المقال: https://montreal.ubisoft.com/wp-content/uploads/2018/05/ICSE-CE-MSR-165.pdf
المفتاح هو تحديد ما إذا كان الكود جزءًا محفوفًا بالمخاطر بدقة عند إضافته، حتى نتمكن من اعتراضه أو إصلاحه.
تتضمن طريقة التنفيذ مرحلتين رئيسيتين. الطريقة الأولى هي بناء مكتبة تعتمد على المؤشرات الموجودة، والتي يمكنها تحديد ما إذا كان الكود المضاف حديثًا مشابهًا للكود المحفوف بالمخاطر. المرحلة الثانية هي إضافة هذه الأكواد التي تبدو خطيرة إلى منطقة استنساخ الكود، ومن ثم تحديد ما إذا كانت أكوادًا محفوفة بالمخاطر أم لا.


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

تعتبر أنظمة برامج Ubisoft مترابطة بشكل كبير، وتتكون من ملايين الملفات والالتزامات، والتي تم تطويرها وصيانتها بواسطة أكثر من 8000 مطور في 29 موقعًا عبر ست قارات. وهذه ميزة فريدة لتطوير وتدريب CLEVER.
لمقارنة أداء CLEVER، قاموا باختباره على 12 نظام Ubisoft. أظهرت النتائج أن CLEVER حقق دقة بنسبة 79% وتذكر بنسبة 65% لعمليات إرسال التعليمات البرمجية المحفوفة بالمخاطر، وهو ما تجاوز أداء طريقة مماثلة، Commit-guru (دقة بنسبة 66% وتذكر بنسبة 63%). علاوة على ذلك، تمكنت CLEVER من التوصية للمطورين بكيفية إصلاح 66.7% من الالتزامات الخطرة.
ومن المتوقع أن يحقق Clever-Commit، الذي يستخدم تقنية CLEVER، نتائج جيدة بمجرد دمجه بالكامل في عملية تطوير Mozilla، وهو ما سيقلل أيضًا بشكل كبير من معاناة المطورين. إن اكتشاف أربع أو خمس ثغرات أمنية قبل ارتكابها يوفر موارد أكثر من العثور عليها بعد ارتكابها.

أشار فريق هندسة Firefox إلى أنه سيبدأ في استخدام Clever-Commit في عملية كتابة التعليمات البرمجية واختبارها وإصدارها. ويتوقعون توفير مئات الساعات من تحليل مخاطر الثغرات الأمنية واكتشافها من خلال هذا النهج.
أي شيء آخر؟
هناك محاولات أخرى لاستخدام التعلم الآلي للكشف عن الأخطاء في قواعد البيانات الكبيرة.
في العام الماضي، أطلقت Microsoft أداة مماثلة في Visual Studio: IntelliCode.

قامت IntelliCode بدراسة مستودعات GitHub العامة الأكثر شهرة (أكثر من 2000 مشروع مع أكثر من 100 نجمة لكل منها) لاكتشاف خصائص أفضل ممارسات الترميز.
الغرض الأولي لـ IntelliCode محافظ إلى حد ما، فهو يوفر اقتراحات إكمال IntelliSense أكثر ذكاءً من خلال فهم الاقتراحات الأكثر احتمالاً للاستخدام بناءً على كيفية استخدام المشاريع الأخرى لنفس واجهة برمجة التطبيقات. كما يتم استخدامه أيضًا لاكتشاف أسلوب الترميز واستخدام المسافات البيضاء حتى يتمكن من كتابة الكود بأسلوب كتابة كود مماثل.
مثل Clever-Commit، يمكن استخدام IntelliCode للعثور على الأخطاء. توفير العلاج في الوقت المناسب للأخطاء المؤقتة التي يرتكبها المطورون.
