Facebook sedang mengembangkan TransCoder untuk menerjemahkan kode dari satu bahasa pemrograman ke bahasa lain

Insinyur Facebook telah menerbitkan transcompiler TransCoder, yang menggunakan teknik pembelajaran mesin untuk mengubah kode sumber dari satu bahasa pemrograman tingkat tinggi ke bahasa lainnya. Saat ini, dukungan disediakan untuk menerjemahkan kode antara Java, C++ dan Python. Misalnya, TransCoder memungkinkan Anda mengubah kode sumber Java menjadi kode Python, dan kode Python menjadi kode sumber Java. Pengembangan proyek sedang dipraktikkan penelitian teoretis tentang pembuatan jaringan saraf untuk transkompilasi kode otomatis yang efisien dan sebaran dilisensikan di bawah lisensi Creative Commons Attribution-NonCommercial 4.0 hanya untuk penggunaan non-komersial.

Implementasi sistem pembelajaran mesin didasarkan pada Pytorch. Dua model siap pakai ditawarkan untuk diunduh: pertama untuk menerjemahkan C++ ke Java, Java ke C++ dan Java ke Python, dan kedua untuk siaran
C++ ke Python, Python ke C++ dan Python ke Java. Untuk melatih model, kami menggunakan kode sumber proyek yang diposting di GitHub. Jika diinginkan, model terjemahan dapat dibuat untuk bahasa pemrograman lain. Untuk memeriksa kualitas siaran, kumpulan pengujian unit telah disiapkan, serta rangkaian pengujian yang mencakup 852 fungsi paralel.

Dikatakan bahwa dalam hal akurasi konversi, TransCoder secara signifikan lebih unggul daripada penerjemah komersial yang menggunakan metode berdasarkan aturan konversi, dan dalam proses kerjanya memungkinkan Anda melakukannya tanpa penilaian ahli dari para ahli dalam bahasa sumber dan bahasa target. Sebagian besar kesalahan yang muncul selama pengoperasian model dapat dihilangkan dengan menambahkan batasan sederhana pada decoder untuk memastikan bahwa fungsi yang dihasilkan benar secara sintaksis.

Facebook sedang mengembangkan TransCoder untuk menerjemahkan kode dari satu bahasa pemrograman ke bahasa lain

Para peneliti telah mengusulkan arsitektur jaringan saraf baru “Transformer” untuk memodelkan urutan, di mana pengulangan digantikan oleh “анием"(model seq2seq dengan perhatian), yang memungkinkan Anda menghilangkan beberapa ketergantungan dalam grafik komputasi dan memparalelkan apa yang sebelumnya tidak dapat menerima paralelisasi. Semua bahasa yang didukung menggunakan satu model umum, yang dilatih menggunakan tiga prinsip—inisialisasi, pemodelan bahasa, dan terjemahan balik.

Facebook sedang mengembangkan TransCoder untuk menerjemahkan kode dari satu bahasa pemrograman ke bahasa lain

Sumber: opennet.ru

Tambah komentar