تكتشف الأداة أوجه التشابه بين البرامج لمساعدة المبرمجين على كتابة برامج أسرع وأكثر كفاءة.
لم تكن برمجة الكمبيوتر سهلة أبدًا. كتب المبرمجون الأوائل البرامج يدويًا ، ورسموا الأحرف على ورق الرسم البياني قبل تحويلها إلى مجموعات كبيرة من البطاقات المثقوبة التي يمكن معالجتها بواسطة الكمبيوتر. خطأ واحد ، وقد يتعين إعادة كل شيء.
يستخدم المبرمجون في الوقت الحاضر العديد من الأدوات القوية التي تعمل على أتمتة الكثير من عملهم ، من اكتشاف الأخطاء أثناء الكتابة ، إلى اختبار التعليمات البرمجية الخاصة بك قبل تطبيقها. لكن على خلاف ذلك ، لم يتغير شيء يذكر. يمكن أن يؤدي خطأ واحد سخيف إلى تعطل البرنامج بأكمله. ومع ازدياد تعقيد الأنظمة ، يصبح تعقب هذه الأخطاء أكثر صعوبة.
يقول Justin Gottschlich ، مدير مجموعة أبحاث برمجة الآلة في Intel: "في بعض الأحيان قد تستغرق فرق المبرمجين عدة أيام لإصلاح خطأ واحد".
هذا هو السبب في أن بعض الناس يعتقدون أنه يجب علينا الحصول على آلات لبرمجة أنفسهم. كان إنشاء الكود التلقائي موضوعًا ساخنًا للبحث لعدد من السنوات. تقوم Microsoft بتضمين إنشاء الكود الأساسي في أدوات تطوير البرامج المستخدمة على نطاق واسع ، وأنشأ Facebook نظامًا يسمى Aroma ينهي البرامج الصغيرة تلقائيًا ، وقد طور DeepMind شبكة عصبية يمكنها إنشاء إصدارات أكثر كفاءة من الخوارزميات البسيطة من تلك التي طورها البشر. حتى نموذج لغة OpenAI GPT-3 يمكنه إنشاء مقتطفات تعليمات برمجية بسيطة ، مثل تخطيطات صفحات الويب ، من استعلامات اللغة الطبيعية.
يسميها جوتسليش وزملاؤه البرمجة الآلية.... من خلال العمل مع مجموعة من Intel و MIT ومعهد جورجيا للتكنولوجيا في أتلانتا ، طور نظامًا يسمى تشابه الشفرة المستنبطة آليًا ، أو MISIM ، يمكنه استخراج معنى جزء من التعليمات البرمجية - ما يخبر به الرمز الكمبيوتر - من بنفس الطريقة التي يمكن أن تقرأ بها أنظمة معالجة اللغة الطبيعية (NLP) فقرة مكتوبة باللغة الإنجليزية.
يمكن لـ MISIM بعد ذلك اقتراح طرق أخرى لكتابة الشفرة ، واقتراح إصلاحات وطرق لجعلها أسرع أو أكثر كفاءة. إن قدرة الأداة على فهم ما يحاول البرنامج القيام به تسمح لها بتحديد البرامج الأخرى التي تقوم بأشياء مماثلة. من الناحية النظرية ، يمكن استخدام هذا النهج من قبل الآلات التي كتبت برامجها الخاصة بناءً على لحاف مُرقَّع من البرامج الموجودة مسبقًا مع الحد الأدنى من التحكم البشري أو الإدخال.
تعمل MISIM من خلال مقارنة قصاصات التعليمات البرمجية مع ملايين البرامج الأخرى التي شاهدتها بالفعل ، مأخوذة من عدد كبير من المستودعات عبر الإنترنت. يقوم أولاً بترجمة الكود إلى نموذج يلتقط ما يفعله ، لكنه يتجاهل كيفية كتابته لأن برنامجين ، مكتوبان بطرق مختلفة للغاية ، يقومان أحيانًا بنفس الشيء. ثم يستخدم MISIM الشبكة العصبية للبحث عن رمز آخر له نفس المعنى. في تقرير ما قبل الطباعة ، أفاد Gottshlich وزملاؤه أن MISIM أكثر دقة 40 مرة من الأنظمة السابقة التي تحاول القيام بذلك ، بما في ذلك Aroma.
يقول فيسيلين رايتشيف ، مدير التكنولوجيا في شركة DeepCode السويسرية ، إن MISIM هي خطوة مثيرة للأمام ، حيث تستخدم أدوات اكتشاف الأخطاء - وهي من أكثر الأدوات تقدمًا في السوق - الشبكات العصبية المدربة في ملايين البرامج لاقتراح تحسينات على المبرمجين أثناء كتابتها.
يقول رايتشيف إن التعلم الآلي لا يزال غير قادر على التنبؤ بما إذا كان هناك خطأ. هذا لأنه من الصعب تعليم الشبكة العصبية ما هو خطأ وما هو ليس خطأ إذا لم يتم تصنيفها على هذا النحو من قبل الإنسان.ووفقًا له ، فقد كانت هناك العديد من الدراسات المثيرة للاهتمام حول الشبكات العصبية العميقة وتصحيح الأخطاء ، "لكنها عمليًا لم تصل بعد ، بهامش كبير جدًا". وكقاعدة عامة ، فإن أدوات اصطياد الأخطاء بالذكاء الاصطناعي تعطي الكثير من الإيجابيات الكاذبة ، كما قال.
يتعامل MISIM مع هذا باستخدام التعلم الآلي لتحديد أوجه التشابه بين البرامج ، بدلاً من الكشف المباشر عن الأخطاء. من خلال مقارنة برنامج جديد بالبرنامج الحالي المعروف أنه صحيح ، يمكنه تنبيه المشفر إلى اختلافات مهمة تؤدي إلى أخطاء.
تخطط Intel لاستخدام هذه الأداة كدليل للمطورين الداخليين ، وتقترح بدائل لكتابة التعليمات البرمجية التي تكون أسرع أو أكثر كفاءة. ولكن نظرًا لأن MISIM غير مرتبط بصيغة برنامج معين ، فيمكنه فعل المزيد. على سبيل المثال ، يمكن استخدامه لترجمة التعليمات البرمجية المكتوبة بلغة قديمة مثل COBOL إلى لغة أكثر حداثة مثل Python. هذا مهم لأن العديد من المؤسسات ، بما في ذلك حكومة الولايات المتحدة ، لا تزال تعتمد على البرامج المكتوبة بلغات لا يعرف المبرمجون كيفية صيانتها أو تحديثها.
في النهاية ، يعتقد جوتسليش أنه يمكن تطبيق هذه الفكرة على اللغة الطبيعية. مدمج مع البرمجة اللغوية العصبية (NLP) (المعالجة الطبيعية للغة ، لا ينبغي الخلط بينها وبين البرمجة اللغوية العصبية ) ، فإن القدرة على العمل مع معنى الكود بشكل منفصل عن التمثيل النصي قد تسمح يومًا ما للأشخاص بكتابة البرامج عن طريق وصف ما يريدون القيام به بكلمات ، كما يقول.
يقول جوتشليتش: "إن إنشاء تطبيقات صغيرة لهاتفك أو أشياء من هذا القبيل سيساعدك في حياتك اليومية - أعتقد أنه ليس بعيدًا". "أود أن أرى 8 مليارات شخص يصنعون برمجيات بأي طريقة طبيعية بالنسبة لهم."