Neural Code Translation of Legacy Code: APL to C#
Dit artikel presenteert een nieuw raamwerk voor het vertalen van legacy APL-code naar C# met behulp van grote taalmodellen, waarbij wordt aangetoond dat geleide strategieën zoals retrieval-augmentatie en iteratieve verfijning, gecombineerd met een geautomatiseerde evaluatiepijplijn, de vertaalkwaliteit aanzienlijk verbeteren ondanks de uitdagingen van de spaarzame syntaxis van APL en de beperkte trainingsdata.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je een enorme, oude bibliotheek voor die geschreven is in een geheim, sterk gecomprimeerd code genaamd APL. Deze code is als een schrijftaal die decennia geleden werd gebruikt door een kleine groep wiskundigen en ingenieurs. Het is ongelooflijk krachtig, maar ziet eruit als een warboel van vreemde symbolen (zoals ⍉, ⍳ en ⌈) die de meeste moderne programmeurs niet kunnen lezen.
Nu, stel je voor dat je al deze boeken moet verplaatsen naar een moderne bibliotheek geschreven in C#, een taal die wordt gebruikt door de softwaregiganten van vandaag. Het probleem? De twee talen spreken volledig verschillende dialecten. APL is als een vloeiende, wiskundige dans waarbij één regel code het werk van een heel alinea in C# kan doen. C# is stijf, gestructureerd en eist dat je elke stap tot in detail uitlegt.
Dit artikel is een verslag van een team onderzoekers dat probeerde een robotvertaler (met behulp van Kunstmatige Intelligentie) te bouwen om deze oude boeken automatisch van de APL-bibliotheek naar de C#-bibliotheek te verplaatsen.
Hier is hoe ze het deden, eenvoudig uitgelegd:
Het Probleem: De "Verloren in Vertaling"-Kloof
De onderzoekers ontdekten dat standaard AI-vertalers deze taak vaak niet aankunnen. Waarom?
- Het Alfabet is Raar: APL gebruikt speciale symbolen die de meeste AI-modellen nog nooit hebben gezien. Het is als proberen een robot te leren een taal te lezen die geschreven is in emoji's die het niet begrijpt.
- De Logica is Anders: APL werkt op hele groepen getallen tegelijk (zoals een emmer water), terwijl C# meestal één getal tegelijk verwerkt (zoals een enkele druppel). De AI moet uitzoeken hoe ze de "emmer" in "druppels" kan breken zonder de logica te morsen.
- Geen Woordenboek: Er zijn niet veel voorbeelden van APL-code gekoppeld aan C#-code waar de AI van kan leren. Het is als proberen een nieuwe taal te leren zonder een schoolboek.
De Oplossing: Drie "Hulpjes" voor de Robot
De onderzoekers testten vier verschillende manieren om de AI-vertaler te helpen. Denk hierbij aan verschillende niveaus van ondersteuning voor een student die een moeilijk examen aflegt:
De "Solo"-Poging (Basislijn): De AI krijgt de APL-code en krijgt te horen: "Schrijf gewoon de C#-code."
- Resultaat: De AI raakt in de war. Het schrijft vaak code die er goed uitziet maar niet werkt, of het crasht omdat het de regels van C# is vergeten.
De "Vertalersnotitie" (Natuurlijke Taal): Voordat de code wordt geschreven, wordt de AI gevraagd eerst uit te leggen wat de APL-code doet in gewoon Engels (zoals een menselijke vertaler die een samenvatting schrijft). Vervolgens gebruikt het die samenvatting om de C#-code te schrijven.
- Resultaat: Dit hielp veel. Door de AI te dwingen eerst over de betekenis in het Engels na te denken, maakte het minder fouten.
De "Spiekbrief" (Retrieval): De AI krijgt een stapel referentiekaarten (een database met APL-regels en voorbeelden) en krijgt de opdracht om de specifieke regel op te zoeken die het nodig heeft voordat het schrijft.
- Resultaat: Dit was oké, maar soms koos de AI de verkeerde referentiekaart, dus het hielp niet zoveel als de "Vertalersnotitie".
De "Oefenronde" (Iteratieve Verfijning): Dit was de winnaar. De AI schrijft de code, waarna de computer probeert het uit te voeren. Als de code crasht of het verkeerde antwoord geeft, schreeuwt de computer: "Fout! Probeer opnieuw!" De AI leest het foutbericht, corrigeert zijn werk en probeert het opnieuw. Het blijft dit doen totdat de code perfect werkt.
- Resultaat: Dit leverde de beste resultaten op. Het is als een student die een oefentoets maakt, zijn fouten ziet en de toets opnieuw maakt totdat hij een 10 haalt.
De Geheime Ingrediënten: "Method Signatures"
De onderzoekers ontdekten ook een cruciale truc. Omdat C# zo streng is over typen (het moet weten of een getal een geheel getal of een decimaal getal is), gaven ze de AI een "blauwdruk" van de vorm van de functie voordat het begon met schrijven. Dit is als het geven van een sjabloon aan de AI met de tekst: "Deze functie neemt twee lijsten met getallen en retourneert een lijst met ja/nee-antwoorden." Met deze blauwdruk schreef de AI veel nauwkeurigere code.
Wat Ze Vonden (De Resultaten)
- AI kan het, maar het heeft hulp nodig: Een ruw AI-model is hier nog niet goed in. Maar als je het de "blauwdruk" geeft, het vraagt om de logica eerst in het Engels uit te leggen en het laat oefenen door zijn eigen fouten te corrigeren, wordt het zeer goed in de baan.
- Meer data = Betere resultaten: Hoe meer voorbeelden van APL-naar-C#-paren ze de AI voerden, hoe beter het werd. Ze ontdekten echter dat zelfs met een relatief kleine hoeveelheid data, de "Oefenronde"-methode verrassend goed werkte.
- De belangrijkste vijand is niet de syntaxis, maar de logica: De meeste van de tijd kon de AI code schrijven die compileerde (werkte zonder te crashen), maar het deed niet precies wat de originele APL-code deed. Het moeilijkste deel was het begrijpen van de intentie van de wiskunde, niet alleen de spelling van de code.
De Conclusie
De onderzoekers hebben succesvol een proces opgezet dat oude, mysterieuze APL-code automatisch kan vertalen naar moderne, bruikbare C#-code. Ze bewezen dat door fine-tuning (gespecialiseerde training), uitleg (Engelse samenvattingen) en feedbackloops (fouten corrigeren) te combineren, AI de kloof tussen deze twee zeer verschillende werelden kan overbruggen. Dit betekent dat bedrijven met oude, kritieke systemen geschreven in APL eindelijk in staat zijn ze te moderniseren zonder dat ze een zeldzame, dure expert moeten inhuren om alles met de hand te herschrijven.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.