Intel ontwikkelt AI die doel van programmeercode kan achterhalen

Abonneer je gratis op Techzine!

Intel ontwikkelt, samen met onderzoekers van MIT en het Georgia Institute of Technology, een AI-engine die het doel van een regel programmeercode kan achterhalen. Dit is een grote stap in de ontwikkeling van een AI-tool die zelf applicaties kan ontwikkelen.

Vorig jaar heeft Intel een groep samengesteld om onderzoek te doen naar de mogelijkheden voor machine programming, een concept waarbij AI zelf code schrijft voor het ontwikkelen van applicaties. Een grote uitdaging wanneer er code geschreven wordt middels een AI is de beschrijving van de gebruiker, De AI moet moet begrijpen waar de gebruiker precies om vraagt. Oftewel, wat is het doel?

Machine Inferred Code Similarity (MISIM) analyseert code-regels om het doel te achterhalen. Stel, twee ontwikkelaars schrijven twee verschillende code-regels. MISIM kan aan de hand van de geschreven code-regels achterhalen dat ze uiteindelijk hetzelfde bedoelen, ongeacht welke structuren en algoritmes de ontwikkelaars hebben gebruikt. Volgens de onderzoekers is MISIM tot 40,6 keer accurater dan de vorige systemen om code te vergelijken. Het onderzoeksteam heeft de AI-engine getest op 45.780 verschillende applicaties.

Context-aware semantic structure

De reden voor deze nauwkeurigheid is een nieuwe techniek genaamd context-aware semantic structure (CASS). CASS vogelt het doel uit van de broncode door AI en machine learning-algoritmes in te zetten om scores toe te wijzen aan de codes. Als twee stukken code er verschillend uitzien, maar dezelfde functie hebben, krijgen zij dezelfde score. CASS kan ook code beoordelen zonder gebruik te maken van een compiler, een tool die source code vertaalt naar machine code.

Tool voor ontwikkelaars

Intel heeft al enkele manieren bedacht waarop zij deze nieuwe technologie kunnen gebruiken. MISIM kan code in real-time evalueren. Intel wil deze functie gebruiken om ontwikkelaars aanbevelingen te kunnen geven tijdens het programmeren. MISIM kan ook ingezet worden om bugs op te sporen door twee vergelijkbare code-regels naast elkaar te leggen. Als de code van de ontwikkelaar sterk afwijkt, kan dit wijzen op een fout.