Article image
مصدر الصورة: إم إس تك



تحدد الأداة أوجه التشابه بين البرامج لمساعدة المبرمجين على كتابة برامج بشكل أسرع وأكثر كفاءة، بما يسهل كتابتها باللغة الطبيعية لغير المختصين بالبرمجة.

2020-08-03 16:05:50

03 أغسطس 2020

لطالما كانت برمجة الحواسيب مهمة صعبة؛ حيث كان المبرمجون الأوائل يكتبون البرامج يدوياً من خلال كتابة الرموز على ورق الرسم البياني قبل تحويلها إلى أكوام كبيرة من البطاقات المثقَّبة التي يمكن معالجتها بواسطة الحاسوب. فإذا كانت علامة واحدة في مكان خاطئ، فقد يضطر المبرمج إلى إعادة العملية برمّتها.

وفي الوقت الحاضر، يستخدم المبرمجون مجموعة من الأدوات ذات القدرات الكبيرة التي تؤتمت جزءاً كبيراً من عملهم، بدءاً من اكتشاف الأخطاء أثناء الكتابة إلى اختبار الرماز قبل نشره. ولكن من نواحٍ أخرى، لم يتغير شيء يذكر في عمل المبرمجين؛ إذ لا يزال بإمكان خطأ واحد سخيف تعطيل جزء كامل من البرنامج. وكلما ازدادت الأنظمة تعقيداً، أصبح تتبع هذه الأخطاء أكثر صعوبة. يقول جاستن جوتشليتش، مدير مجموعة أبحاث برمجة الآلة في شركة إنتل: “أحياناً، قد يستغرق إصلاح خطأ واحد أياماً من عمل فرق من المبرمجين”.

لهذا السبب يعتقد البعض أنه يجب علينا العمل باتجاه تمكين الآلات من برمجة أنفسها. وبالفعل تحظى الأبحاث حول التوليد المؤتمت للرماز البرمجي باهتمام كبير منذ بضع سنوات؛ حيث تقوم مايكروسوفت ببناء التوليد البسيط للرماز البرمجي وتضمينه في أدوات تطوير البرامج الخاصة بها والمستخدمة على نطاق واسع. كما طورت فيسبوك نظاماً يسمى أروما (Aroma) يقوم بإكمال البرامج الصغيرة تلقائياً. أما ديب مايند فقد طورت شبكة عصبونية تستطيع التوصل إلى إنتاج إصدارات من الخوارزميات البسيطة أكثر كفاءة من تلك التي يبتكرها البشر. حتى النموذج اللغوي جي بي تي-3 (GPT-3) الذي طورته أوين إيه آي يستطيع أن ينتج أجزاء بسيطة من التعليمات البرمجية، مثل تصميمات صفحات الويب، انطلاقاً من أوامر نصية باللغة الطبيعية.

يُطلق جوتشليتش وزملاؤه على هذه الأساليب اسم البرمجة الآلية. وقد تعاون مع فريق من إنتل وإم آي تي ومعهد جورجيا للتكنولوجيا في أتلانتا لتطوير نظام يسمى تشابه الرماز المُستدَلّ من الآلة، أو ميزيم (MISIM)، يستطيع استخراج معنى جزء من الرماز البرمجي -أي ما تطلب التعليمات البرمجية من الحاسوب أن ينفذه- بنفس الطريقة تقريباً التي تستطيع بها أنظمة معالجة اللغة الطبيعية (NLP) قراءة فقرة مكتوبة باللغة الإنجليزية.

بعد ذلك، يمكن أن يقترح ميزيم طرقاً أخرى لكتابة الرماز البرمجي، مع تقديم تصحيحات وطرق لجعلها أسرع أو أكثر كفاءة. كما أن قدرة الأداة على فهم ما يحاول البرنامج القيام به تسمح لها بتحديد البرامج الأخرى التي تؤدي مهام مماثلة. ومن الناحية النظرية، يمكن للآلات أن تستخدم هذا الأسلوب في كتابة برامجها الخاصة بها بالاعتماد على خليط من البرامج الموجودة سابقاً مع الحد الأدنى من الإشراف أو التدخل البشري.

يعمل ميزيم من خلال مقارنة مقتطفات من الرماز البرمجي مع ملايين البرامج الأخرى التي قرأها سابقاً، والتي تم أخذها من عدد كبير من مخازن البرامج على الإنترنت. في البداية، يقوم ميزيم بترجمة الرماز البرمجي إلى شكل يعكس مهمته ولكن يُغفل كيفية كتابته؛ لأنه يمكن لبرنامجين مكتوبين بطرق مختلفة تماماً أن يؤديا المهمة نفسها في بعض الأحيان. ثم يستخدم ميزيم شبكة عصبونية للعثور على رماز آخر يمتلك معنى مشابهاً. وقد أفاد جوتشليتش وزملاؤه في دراسة أولية أن نظام ميزيم أكثر دقة بـ 40 مرة من الأنظمة السابقة التي تحاول القيام بهذا الأمر، بما في ذلك نظام أروما.

ويقول فيزلين رايشيف، رئيس قسم التكنولوجيا في شركة ديب كود التي تتخذ من سويسرا مقراً لها، إن نظام ميزيم يمثل خطوة رائعة إلى الأمام؛ فهو يتضمن أدوات اصطياد الأخطاء -وهي من بين الأدوات الأكثر تقدماً في السوق- التي تستخدم شبكات عصبونية مدرَّبة على ملايين البرامج حتى تتمكن من اقتراح تحسينات للمبرمجين أثناء كتابتهم للرماز البرمجي.

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

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

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

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

وفي نهاية المطاف، يعتقد جوتشليتش أن هذه الفكرة يمكن تطبيقها على اللغة الطبيعية؛ إذ يقول إنه عند جمعها مع معالجة اللغات الطبيعية، فإن القدرة على العمل مع معنى الرماز البرمجي بشكل مستقل عن تمثيله النصي يمكن أن يسمح للناس في يوم من الأيام بكتابة البرامج ببساطة عن طريق وصف ما يريدون القيام به بالكلمات.

ويختم جوتشليتش بالقول: “إن إنشاء تطبيقات صغيرة لهاتفك أو أشياء من هذا القبيل ستساعدك في حياتك اليومية، وأعتقد أن تحقيق ذلك ليس أمراً بعيد المنال. وأتطلع إلى رؤية 8 مليارات شخص ينشؤون برامج بالطريقة التي يجدونها أكثر طبيعية بالنسبة لهم”.