Kod dönüştürücü - Bir dildeki kodu başka dile çevirme

Facebook TransCoder adında bir dönüştürücü yapay zeka kullanarak Python, C++ ve Java ile yazılmış kodları (aralarında olmak üzere) diğer dillere başarılı şekilde dönüştürebiliyor. Hiç değilse dokümanında bu şekilde yazıyor. Basit kod bloklarında doğru sonuca ulaştım ama kod satırı arttıkça hatalı sonuçlarla karşılaştım ki dokumandaki kadar uzun da değildi. Örneğin böyle bir python kodunun c++ çıktısı;

def topla(a, b):
  sonuc = a + b
  print(sonuc)
topla(5, 3)

Şu şekilde oluyor:

void topla ( int a, int b ) {
  int sonuc = a + b;
  cout << sonuc << endl;
  topla ( 5, 3 );
}

Topla fonksiyonunu main fonksiyonu içinde çağırmıyor.
Acaba ben mi hata yapıyorum yoksa Transcoder düzgün çalışmıyor mu?

Python kodlarımı c++ ve javada da yazmam gerekiyor. Az sürem olduğu için dönüştürerek yapmaya çalışıyorum, dönüştürmeyle ilgili bilgisi olan yardım edebilir mi? Ya da kısa sürede halledebileceğim her hangi bir fikri olan? Her türlü yardıma açığım.

tümünü bir anda değilde parça parça bölerek deneyebilirsin bunda tabi bölmene gerek yokda uzun kodunda

Öyle yapmakla baştan yazmak aynı şeye denk geliyo. Hatta 2 3 satıra bölüp yaparsam daha fazla zamanım gidiyor.

Bu, iki kod icin de gecerli.

Donusturucu kullanmak daha uzun surebilir.

Burada kendi sorunu cevaplamis olabilirsin.


Bunu niye yapmak istedigini soylememissin ama amacinin Facebook’unkiyle ayni olmadigini neredeyse garanti edebilirim.

Karsilastigin sorunlar aletin dokumentasyonunda yoksa alet herkesin kullanimina hazir olmayabilir.

Varsa daha detayli okuman lazim. Bu durumda da boyle bir aleti yazmak dokumentasyonunu okumaktan daha az vakit alabilir. Onlarca muhendisin uzun suredir ustunde calismadigi codebase’leri cevirmek, ikisinden de az vakit alir.

2 Beğeni

Sonuç olarak fonksiyonu pythonda çağırma işlemini yaptığımda dönüştürücü çıktısı bana bunu sağlamıyor. Sınıf yapısı kullandığımda ise sınıf içerisinde fonksiyonları çağırıyo ve hata oluşmuş oluyo.

Eğer Transcode hatasız sonuç üretmiş olsaydı saniyeler içinde dönüştürme işlemi sağlanmış olacaktı. Direkt olarak dönüştürme işlemi yapan dönüştürücülerin de zamandan tasarruf edeceğini düşünüyorum.

Haklısın sanırım, zaten dokumantasyon da 20 sayfa civarı bir şeydi.

Bu kısmı tam anlayamadım. Çalıştığı demek istediniz herhalde.
Aslında temel olmak üzere dönüştürme işlemini yapan bir program hazırlama ne kadar zor olabilir ki.
Mesela programa " Topla adında fonksiyon oluştur. a ve b adında dışardan alınan iki parametreye sahip olsun. Fonksiyon içersinde a ve b değerini topla, sonuc adlı degiskene ata. Sonuc degiskenini döndür. Fonksiyona 5 ve 7 değerlerini parametre olarak verip çağır. " Akış şemalarında olduğu gibi belirli kalıplara belirli özellikler verilse, örneğin Topla adında fonksiyon oluştur. şu cümle üçgen bir kalıba sığdırılsa ve üçgene topla değeri verilince cümledeki karşılığını yapsa sadece algoritma mantığını anlayan kişi istediği dilde temel düzeyde de olsa kod çıktısı elde edebilir. Aslında akış şemalarını koda döken program görmüştüm. Aynı taktikle bir programdaki kod satırlarını kalıplara ayıran daha sonra şema oluşturup diğer dil ile baştan yazan sonuç olarak dönüştürme işlemi yapan bir program yazılabilir mi? Eğer yapılırsa bunlar için sanırım makine öğrenmesi öğrenmek şart, değil mi?

Biraz daha detayli anlatman lazim sanirim, su an aklima BPMN ve Uber Cadence geliyor.

Fakat sadece AST cevrimi yapan programlarda bile bu kadar sorun cikiyorsa konseptuel calisan ve/veya ML kullanan bir tanesinde nasil sorunlar cikar hayal bile edemiyorum.