يقوم Facebook بتطوير TransCoder لترجمة التعليمات البرمجية من لغة برمجة إلى أخرى

قام مهندسو الفيسبوك بنشر مترجم محول، والتي تستخدم تقنيات التعلم الآلي لتحويل التعليمات البرمجية المصدر من لغة برمجة عالية المستوى إلى أخرى. حاليًا، يتم توفير الدعم لترجمة التعليمات البرمجية بين Java وC++ وPython. على سبيل المثال، يتيح لك TransCoder تحويل كود مصدر Java إلى كود Python، ورمز Python إلى كود مصدر Java. ويجري وضع تطورات المشروع موضع التنفيذ البحث النظري حول إنشاء شبكة عصبية للتحويل الآلي الفعال للتعليمات البرمجية و الانتشار مرخص بموجب ترخيص Creative Commons Attribution-NonCommercial 4.0 للاستخدام غير التجاري فقط.

يعتمد تنفيذ نظام التعلم الآلي على Pytorch. يتم تقديم نموذجين جاهزين للتنزيل: الأول لترجمة C++ إلى Java، وJava إلى C++، وJava إلى Python، و ثان للبث
C++ إلى Python، وPython إلى C++، وPython إلى Java. لتدريب النماذج، استخدمنا أكواد المصدر للمشروعات المنشورة على GitHub. إذا رغبت في ذلك، يمكن إنشاء نماذج الترجمة للغات البرمجة الأخرى. للتحقق من جودة البث، تم إعداد مجموعة من اختبارات الوحدات، بالإضافة إلى مجموعة اختبار تتضمن 852 وظيفة متوازية.

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

يقوم Facebook بتطوير TransCoder لترجمة التعليمات البرمجية من لغة برمجة إلى أخرى

اقترح الباحثون بنية جديدة للشبكة العصبية "المحول" لنمذجة التسلسلات، حيث يتم استبدال التكرار بـ "اهتمام"(نموذج seq2seq مع الاهتمام)، والذي يسمح لك بالتخلص من بعض التبعيات في الرسم البياني الحسابي وموازاة ما لم يكن قابلاً للتوازي في السابق. تستخدم جميع اللغات المدعومة نموذجًا واحدًا مشتركًا، والذي يتم تدريبه باستخدام ثلاثة مبادئ — التهيئة، ونمذجة اللغة، والترجمة العكسية.

يقوم Facebook بتطوير TransCoder لترجمة التعليمات البرمجية من لغة برمجة إلى أخرى

المصدر: opennet.ru

إضافة تعليق