Çoğu geliştirici, mevcut kodu bir dilden diğer dile dönüştürmek için gereken çalışmaları duysa tüyleri diken diken olur. Peki, bu işlem sadece bir kaç adımda otomatik olarak yapılsaydı, nasıl olurdu? Bu fikir, Facebook araştırmacıları tarafından geliştirilen bir dil dönüştürme modeli olan TransCoder olarak karşımıza çıkıyor.
Tahmin edeceğiniz üzere bu araç, yapay zekaya dayanıyor. C++, Java ve Python gibi yüksek düzey programlama dillerinin çevrilme fikri, mümkün olan en düşük düzeyde insan gözetimi veya müdahalesi ile sağlanıyor.
Evet, bu gerçekten çok zor bir işlem. Deneyimli bir programcı için bile böyle bir işi yapmak genellikle sabır ama daha çok ana faktör olarak kaynak ve hedef dillerin çok iyi bilinmesini gerektirir.
Dönüştürücüler, bu göreve katkıda bulunan araçlardır. Onlar sayesinde, yeni kodun her seferinde sıfırdan yeniden yazılmasına gerek kalmıyor. Fakat avantajları bunun pek ötesine geçmiyor. Söz dizimi farklılıkları, kütüphane değişiklikleri ve API adaptasyonları ile ilgilenmek hala geliştiriciye kalmış şeylerdir.
Facebook’un deyimiyle TransCoder, bütün ayak işlerini yapmak için makine öğrenimini kullanan bir transcompiler olmaya geliyor.
Bu işlem, hedef ve kaynak dillerde aynı olan bir koddaki talimatları eşleyen bir ön eğitim ile başlar. Birçok dildeki ortak olan “if veya while” gibi ifadeler ve matematiksel operatörler bu çalışmanın temelini oluşturur.
“Geri çevirme” işlemi, yani kodu ilk dile geri dönüştürme işlemi, TransCoder’ın orijinal verilerle karşılaştırılarak paralel veriler üretmesini sağlar. Bu süreçte oluşan farklılıklar eğitimi pekiştirmektedir.
TransCoder, GitHub üzerinde bulunan 2.8 milyondan fazla açık kaynak deposu ile eğitildi. Testler ise, GeeksforGeeks’ten C++, Java ve Python’da yazılmış 852 fonksiyon ile gerçekleştirildi (GeeksforGeeks, programlama mantığını ve ilgili becerileri geliştirmek için mükemmeldir).
Sonuçlar
Sonuçlar da ayrıca heyecan vericiydi. Örneğin:
C++’dan Java’ya dönüştürürken, TransCoder beklenen sonuçlarda %74.8; Python’dan C++, %57.8; Java’dan C++’a ise %91.6 doğruluk oranı elde etmeyi başardı.
Araç şimdilik C++, Java ve Python ile çalışıyor, ancak Facebook araştırmacıları TransCoder’ın hemen hemen her programa diliyle çalışmak üzere eğitebileceğini ifade etti.
Model akademik amaçlar için geliştirilmiş olsa da, gerekli iyileştirmelerle beraber TransCoder’ın pratik kullanımı mümkündür. “Sonuçlarımız, model tarafından yapılan birçok hatalanın, basit kısıtlamalar eklenilerek kolayca düzeltilebileceğini gösteriyor. Üretilen fonksiyonların söz dizimsel olarak doğru olduğundan emin olun.” açıklaması geldi.
Bu çalışma hakkında daha detaylı bilgi isterseniz, yayınlanmış olan makaleyi inceleyebilirsiniz.