يفتح IBM CodeNet لأنظمة التعلم الآلي التي تقوم بترجمة التعليمات البرمجية والتحقق منها

كشفت شركة IBM عن مبادرة CodeNet الخاصة بها، والتي تهدف إلى تزويد الباحثين بمجموعة بيانات تتيح لهم تجربة استخدام تقنيات التعلم الآلي لإنشاء مترجمي لغة البرمجة ومولدات الأكواد والمحللات. يتضمن CodeNet مجموعة مكونة من 14 مليون مثال على التعليمات البرمجية التي تحل 4053 مشكلة برمجة شائعة. في المجمل، تحتوي المجموعة على حوالي 500 مليون سطر من التعليمات البرمجية وتغطي 55 لغة برمجة، سواء اللغات الحديثة مثل C++ وJava وPython وGo، واللغات القديمة بما في ذلك COBOL وPascal وFORTRAN. يتم توزيع تطورات المشروع بموجب ترخيص Apache 2.0، ومن المخطط توزيع مجموعات البيانات في شكل ملكية عامة.

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

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

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

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

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

المصدر: opennet.ru

إضافة تعليق