Facebook-onderzoekers hebben zojuist aangekondigd dat ze met succes een programmeertaalconverter voor kunstmatige-intelligentietoepassingen hebben ontwikkeld . Deze tool genaamd TransCoder kan broncode van de ene programmeertaal op hoog niveau naar de andere converteren. Bijvoorbeeld het overstappen van C++ naar Java, Python en andersom.
Gebaseerd op leren zonder toezicht, zoekt TransCoder naar voorheen onontdekte patronen in datasets, die ongelabeld zijn en met minimaal menselijk toezicht. Volgens berekeningen is TransCoder veruit superieur aan bestaande commerciële tools.

Facebook TransCoder kan broncode met hoge nauwkeurigheid van de ene programmeertaal naar de andere converteren
Het omzetten van broncode met behulp van oude talen naar modernere en effectievere programmeertalen zoals Java en C++ is vaak kostbaar in zowel tijd als geld. Bovendien moeten degenen die deze baan uitoefenen een diepgaande kennis hebben van zowel oude als nieuwe talen. De Australische Commonwealth Bank heeft bijvoorbeeld vijf jaar en 750 miljoen dollar gekost om de broncode van hun volledige systeem van COBOL naar Java te converteren.
In theorie kunnen programmeertaalconverters het bovenstaande proces enorm ondersteunen, waardoor programmeurs de broncode niet helemaal opnieuw hoeven te schrijven. In de praktijk is het echter erg moeilijk om een converter te bouwen en te perfectioneren, omdat programmeertalen verschillende syntaxissets kunnen gebruiken en kunnen vertrouwen op API-platforms, standaardfunctiebibliotheken en typen verschillende variabelen.
Door gebruik te maken van onbewaakt leren kan Facebook's TransCoder echter met een hoge mate van nauwkeurigheid converteren tussen C++, Java en Python. TransCoder is getraind door het opnemen en in kaart brengen van vergelijkbare codesegmenten die dezelfde functies van programmeertalen delen. De broncode die wordt gebruikt om TransCoder te trainen, wordt zelfs gemaskeerd met willekeurige codefragmenten, zodat TransCoder deze kan voorspellen op basis van context.
Een ander proces genaamd auto-encoding denoising zal TransCoder trainen om automatisch geldige coderegels te genereren wanneer deze wordt voorzien van onsamenhangende, onduidelijke invoergegevens. Ten slotte stelt het decompilatieproces van de broncode TransCoder in staat een parallel datasysteem te creëren dat kan worden gebruikt voor toekomstige training.
Het meertalige karakter van TransCoder wordt verder "gevoed" door een reeks gemeenschappelijke "ankers" in programmeertalen , zoals de gebruikelijke trefwoorden "voor", "terwijl", "als" en "proberen", getallen, wiskundige operatoren en Engelse snaren. Het decompilatieproces zal TransCoder ook helpen de kwaliteit in de loop van de tijd te verbeteren.
Facebook-onderzoekers hebben TransCoder getraind in de openbare dataset van GitHub, die 2,8 miljoen open source-repository's bevat. Het doel van dit trainingsproces is om TransCoder op functieniveau te helpen de ene programmeertaal naar de andere te converteren. Nadat TransCoder op alle beschikbare broncode was geoefend, werden alleen de ruisonderdrukkingscomponenten met behulp van auto-codering en decompilatie verder getraind in de functies, afgewisseld met componenten die werkten op 6.000 tokens van programmeertalen.
Om TransCoder te evalueren, haalden de onderzoekers 852 parallelle functies uit C++, Java en Python uit GeeksforGeeks, een online platform dat programmeerproblemen verzamelt en oplossingen biedt in meerdere programmeertalen. Op deze manier ontwikkelden ze een nieuw meetsysteem, rekennauwkeurigheid, om te testen of gegeven dezelfde input de hypothetische functie dezelfde output produceert als een referentie.
Facebook geeft toe dat zelfs de beste versie van TransCoder nog niet veel nauwkeurige functiestructuren oplevert ten opzichte van de invoer. Over het algemeen hebben de conversieresultaten van deze tool echter een hoge rekennauwkeurigheid. Hieronder staan de nauwkeurigheidsstatistieken van TransCoder die Facebook heeft berekend:
- Bij het vertalen van C++ naar Java behaalde TransCoder 74,8% van de verwachte resultaten
- Bij het vertalen van C++ naar Python behaalde TransCoder 67,2% van de verwachte resultaten
- Bij het vertalen van Java naar C++ behaalde TransCoder 91,6% van de verwachte resultaten
- Bij het vertalen van Python naar Java behaalde TransCoder 56,1% van de verwachte resultaten
- Bij het vertalen van Python naar C++ behaalde TransCoder 57,8% van de verwachte resultaten
- Bij het vertalen van Java naar Python behaalde TransCoder 68,7% van de verwachte resultaten
Volgens de onderzoekers heeft TransCoder blijk gegeven van een duidelijk begrip van de specifieke syntaxis van elke taal, evenals van de datastructuren en methoden van de taal. TransCoder kan ook de bibliotheken van elke taal nauwkeurig aanpassen en zich aanpassen aan kleine wijzigingen, bijvoorbeeld een hernoemde invoervariabele. Toch heeft TransCoder bepaalde variabelen in het conversieproces nog niet geïdentificeerd. De onderzoekers beoordelen TransCoder echter nog steeds als superieur aan raamwerken die zijn gecreëerd door het handmatig herschrijven van regels op basis van gespecialiseerde kennis.
![Facebook lanceert TransCoder: AI die de ene programmeertaal met hoge nauwkeurigheid naar de andere omzet Facebook lanceert TransCoder: AI die de ene programmeertaal met hoge nauwkeurigheid naar de andere omzet]()
Naast Facebook zijn veel grote bedrijven ook geïnteresseerd in de ontwikkeling van AI die in staat is om namens mensen ‘code te schrijven’.
"TransCoder is gemakkelijk te generaliseren naar elke programmeertaal, zonder dat er diepgaande kennis voor nodig is. In termen van efficiëntie is TransCoder veruit superieur aan bestaande commerciële oplossingen" , beweren Facebook-onderzoekers. "Onze experimentele resultaten laten zien dat veel van de bugs van TransCoder eenvoudig kunnen worden opgelost door eenvoudige beperkingen aan de decoder toe te voegen om ervoor te zorgen dat de gegenereerde functies syntactisch correct zijn. Of we kunnen gespecialiseerde architecturen voor dit probleem creëren."
Naast Facebook zijn ook een aantal andere reuzen geïnteresseerd in de ontwikkeling van AI-systemen die in staat zijn ‘code te schrijven’ in plaats van mensen. Tijdens de Microsoft Build-conferentie eerder dit jaar demonstreerde OpenAI een kunstmatige intelligentie die was getraind op GitHub en de mogelijkheid had om volledig functionele software te schrijven op basis van Engels commentaar. Twee jaar geleden creëerde Rice University een systeem genaamd Bayou dat in staat is zijn eigen software te schrijven door 'testamenten' te synthetiseren in openbaar gedeelde coderegels.
"Deze AI-systemen zullen helpen bij het elimineren van details in het softwareontwikkelingsproces ", zegt Justin Gottschlich, directeur van Intel Labs. “Ze kunnen programmeurs helpen de softwareontwikkeling te versnellen door bugs op te lossen. Daarnaast helpen ze het aantal banen in de technologische industrie te vergroten waar ook mensen zonder programmeerachtergrond terecht kunnen. Deze mensen zullen creatieve taken op zich nemen en het codeergedeelte verlaten. naar AI."
Wat vind je van deze nieuwe AI van Facebook? Laat uw opmerkingen achter in de opmerkingen onder het artikel!