ذكاءٌ صنعيٌّ جديد قادر على كتابة الأكواد البرمجيّة
طوّر فريقٌ من علماء الحاسوب من (مختبر الأنظمة البرمجيّة الذّكيّة -Intelligent Software Systems Laboratory) في جامعة رايس (Rice University) أداة تعليمٍ عميقٍ تعمل بشكل أساسيّ كمحرّك بحث للشّيفرات البرمجيّة.
وبعبارة أخرى، تساعد أداة الذّكاء الصّنعي الجديدة هذه المبرمجين على كتابة شيفرات برمجيّة تحتوي على واجهاتِ برمجةِ تطبيقاتٍ مكتوبة بلغة جافا (Java APIs).
طُوّرت أداة التعلّم العميق هذه والّتي تُدعى بايو (Bayou) بتمويلٍ من كلٍّ من وكالة المشاريع البحثيّة الدّفاعيّة المتقدّمة (Defense Advanced Research Projects Agency (DARPA)) التّابعة لوزارة الدّفاع الأمريكيّة و شركة غوغل.
إذْ يسمح بايو للمطوّر بإدخال بضع كلمات مفتاحيّة تُشير إلى نوع البرنامج الّذي يرغب في إنشائه ثمّ يُعيد شيفرةً مكتوبةً بلغة جافا JAVA تساعد المطوّر في مهّمته.
«حاول النّاس بناء أنظمة يُمكنها كتابة شيفرات برمجيّة لأكثر من 60 عامًا، ولكنّ المشكلة تكمن في أنّ هذه الأنظمة لم تكن جيّدة في التّعامل مع الغموض». هذا ما يقوله أحد المخترعين المساهمين في بايو وبروفيسورعلوم الحاسوب في جامعة (رايس سواراتتشادوري -Swarat Chaudhuri).
ويضيف: «غالبًا، يجب أنْ تُعطي الكثير من التّفاصيل عمّا يفعله البرنامج الّذي ترغب به، وكتابة هذه التّفاصيل تحتاج لكميّةِ عملٍ مناظرةٍ لما تحتاجه كتابة الشّيفرة، وبالتالي يُعتبر بايو تحسينًا كبيرًا».
«يمكن للمطوّر أنْ يزوّد بايو بكميّة صغيرة جدًا من المعلومات، مجرّد عدّة كلمات مفتاحيّة، ثمّ سيحاول بايو قراءة ما يجول في خاطر المبرمج، ومن ثمّ التّنبّؤ بالبرنامج الّذي يريده».
ولفت تشادوري إلى أنّ بايو درّب نفسه عبر دراسة ملايين من الأسطر البرمجيّة الموجودة على منصّة (GitHub) و المكتوبة من قبل بشر باستخدام لغة جافا، وهذا ما يعادل حجم الشّيفرة المصدريّة (source code) لحوالي 1500 تطبيقٍ تقريبًا.
فقال: «لقد درس كل ما هو موجود على منصّة (GitHub)، ويَستخدم هذه الذّخيرة لكتابة شيفراته الخاصّة».
وباستخدام طريقة تدعى (neural sketch learning)، يُدرّب بايو شبكة عصبونيّة صنعيّة على مئات آلاف الأمثلة لتتعرّف على أنماطٍ عالية المستوى.
إذْ يقوم بذلك عبر وضع مخطّط (sketch) لكلّ برنامج يقرؤه ومن ثمّ ربط هذا المخطّط مع الهدف من إنشاء هذا البرنامج.
إنّ برامج جافا الموجودة في بيانات التّدريب موسومة بواسمات تحتوي معلومات معيّنة عن البرنامج كأنواع الـ (API) المستخدمة ومكاتب الدّوال وغيرها.
وعندما يسأل المستخدمُ بايو سؤالًا مبنيُّا على هذه الواسمات، يقوم النّظام بالحكم على نوع البرنامج المطلوب كتابته ومن ثمّ يبحث في مخطّطاته (sketchs) ليجد النّتائج الأكثر مطابقة.
و يقول كريس جيرمين (Chris Jermaine) بروفيسور علوم الحاسب المشارك في تصميم بايو والّذي يُدير مختبر الأنظمة البرمجيّة الذّكيّة في جامعة رايس (Rice’s Intelligent Software Systems Laboratory): «بناءً على هذا التّخمين، يقوم جزءٌ منفصل من بايو قادرٌ على فهم تفاصيل لغة جافا والقيام بعمليّات المحاكمة المنطقيّة بتوليد أربع أو خمس قطع من الشّيفرات البرمجيّة، ثمّ يقوم بعرض هذه القطع على المستخدم بشكل مماثل لطريقة عرض نتائج بحث الويب- هذا ما أظنّ أنّه الجواب الصّحيح، ولكن إليك ثلاث نتائج أخرى قد تكون ما تبحث عنه».
و يضيف جيرمين: «البرمجة اليوم مختلفة جدًّا عمّا كانت عليه قبل 30_40 عامًا، فالحواسيب اليوم في جيوبنا وعلى معاصمنا وفي مليارات الأدوات المنزليّة، والمركبات، والأجهزة الأخرى. وأيام كتابة المبرمج للشّيفرات من الصّفر قد ولّت».
كما يضيف مصمّم بايو (فيجاي مورالي-VijayMurali): «تطويرُ البرمجيّات الحديثة يعتمد على الـ (APls) بشكل كبير جدًّا، وهي عبارة عن قواعد خاصّة بكلّ نظام، أو أدوات، أو برتوكولات، تسمح لجزءٍ من شيفرة أنْ تتفاعل مع نظام تشغيل محدّد، أو قاعدة بيانات، أو مكوّن صلب، أو حتّى نظام برمجيّ آخر.
فهناك المئات من الـ (APls) والتّنقل بينها صعب جدًّا على المطوّرين.
إذْ يقضي المطوّرون كثيرًا من الوقت في طلب المساعدة من مطوّرين آخرين على مواقع سؤال-جواب مثل (Stack Overflow) ».
ويشير مورالي إلى أنّه أصبح الآن بإمكان المطوّرين أنْ يسألوا بايو هذه الأسئلة ويحصلوا على جواب فوريّ.
«هذا الجواب الفوريّ قد يحل المشكلة في الحال، و إذا لم يحلّها فإنّ أمثلة بايو يجب أنْ تجعل أسئلة المطوّرين لنظرائهم البشر مدروسةً أكثر».
قال جيرمين إنّ هدف الفريق الرّئيسيّ هو حثّ المبرمجين على توسيع بايو، والّذي أُطلق بترخيص مفتوح المصدر.
وأضاف جيرمان: «كلّما حصلنا على معلومات أكثر حول ما يريده النّاس من نظامٍ مثل بايو، كان بإمكاننا أن ْنجعله أفضل، فنحن نسعى إلى أن يستخدمه أكبر عدد ممكن من الناس».