Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

AI od Facebooka przetłumaczy Javę na Pythona

Naukowcy, którzy pracują nad rozwojem AI w Facebooku, podzielili się swoim narzędziem do tłumaczenia kodu o nazwie TransCoder, które przetłumaczy m.in. Javę na Pythona lub C++ na Javę.
AI od Facebooka przetłumaczy Javę na Pythona

Na arXiv pojawiła się ostatnio praca naukowa, która przedstawia projekt o nazwie TransCoder, przygotowany przez zespół badawczy z Facebooka. TransCoder jest kompilatorem source-to-source (znanym również jako transkompilator). Wiele współczesnych języków programowania, takich jak Dart, czy TypeScript, ma już wbudowane taką funkcję, dlatego TransCoder ma w założeniu działać ze starszymi językami programowania, np. z COBOL i Python 2. TransCoder ma również działać tam, gdzie kod źródłowy musi być zintegrowany z bazą kodu, która istnieje w innym języku i nie ma bezpośredniej ścieżki transkompilacyjnej. 

Jednym z powodów przemawiającym za zbudowaniem takiego rozwiązania jest fakt, że transkompilacja jest zazwyczaj długa i kosztowna. Na przykład w wyżej wymienionej pracy naukowej można przeczytać, że Commonwealth Bank of Australia męczył się z przekonwertowaniem swojej platformy z COBOL na Javę przez 5 lat i wydał na tę operację 750 000 000 $. 

Programy do tłumaczenia oparte na uczeniu maszynowym są teraz szeroko wykorzystywane przez profesjonalnych tłumaczy, a grupa badaczy AI z Francji uważa, że programiści też będą niedługo szeroko korzystać z podobnych narzędzi. 


Czym jest TransCoder

Marie-Anne Lachaux, Baptiste Rozière, Lowik Chanussot i Guillaume Lample, którzy są częścią francuskiego zespołu AI Facebooka, stworzyli system, który dokładnie dobrze się sprawdza w tłumaczeniu funkcji między C++, Javą i Pythonem. Aby to osiągnąć, grupa wykorzystała kod typu open-source z Githuba oraz uczenie maszynowe. Członkowie francuskiej grupy również zaznaczają, że TransCoder może sprawić, że przekonwertowany kod będzie działał szybciej.

Co więcej, łatwiej go będzie można utrzymać, ponieważ kod napisany w mocno typowanych językach, może być łatwiejszy do zrozumienia. TransCoder nie jest jednak w stanie rozwiązać niektórych problemów z jakością. I tutaj wymienione zostały m.in. duplikowanie kodu oraz niepoprawne nazwy zmiennych i funkcji. 

Naukowcy twierdzą, że TransCoder jest jeszcze we wczesnej fazie developmentu, dlatego tłumaczyć można jedynie na poziomie funkcji, a wygenerowany kod powinien zostać sprawdzony i przetestowany, ponieważ nie ma gwarancji, że będzie poprawnie działał. 


Testy

Aby przetestować swoje narzędzie, badacze stworzyli zestaw 852 funkcji i powiązanych z nimi testów jednostkowych. Za punkt odniesienia posłużył j2py, czyli framowork do tłumaczenia między Javą a Pythonem oraz Tangible Software Solutions — konwerter kodu źródłowego, który zmienia C++ w Javę. Według pracy naukowej TransCoder znacznie przewyższa oba te narzędzia, jeżeli chodzi o dokładność tłumaczenia kodu.


Podsumowanie

TransCode ma na celu rozprawienie się z kodem legacy i przetłumaczenie go na bardziej współczesne języki programowania. Badacze z francuskiej grupy twierdzą, że Facebook również używa kodu legacy i szuka obecnie sposobu na ulepszenie kodu przy pomocy aplikacji opartych na uczeniu maszynowym.

Postępy w tworzeniu narzędzi do tłumaczenia zwykłego tekstu opartych na uczeniu maszynowym również tutaj pomogły. Co więcej, Lachaux, Rozière i Lample mówią, że zamierzają upublicznić kod źródłowy oraz zestawy danych swojego projektu

Rozpocznij dyskusję

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej