CLARC: C/C++ Benchmark for Robust Code Search

Dit paper introduceert CLARC, een robuust C/C++ benchmark voor codezoekopdrachten dat is opgebouwd uit een geautomatiseerde pipeline en real-world GitHub-repositories, en waaruit blijkt dat bestaande modellen sterk afhankelijk zijn van lexicale kenmerken in plaats van semantisch begrip.

Kaicheng Wang, Liyan Huang, Weike Fang, Weihang Wang

Gepubliceerd 2026-03-06
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je een enorme bibliotheek binnenstapt, maar dan niet met boeken, maar met miljoenen regels computercode. Als programmeur ben je vaak op zoek naar een specifieke oplossing, een stukje code dat al eens is geschreven, zodat je het niet zelf hoeft uit te vinden. Dit noemen we "code zoeken".

Vandaag de dag gebruiken we slimme computers (AI) om ons te helpen zoeken. Maar er is een groot probleem: de tests die we gebruiken om te zien hoe goed deze AI's zijn, zijn te makkelijk. Het is alsof we de AI's testen met een zoekopdracht waarbij we alleen naar de titel van het boek kijken, in plaats van naar de inhoud. Als de titel "Hoe maak je een taart" heet, denkt de AI: "Ah, ik weet het!" Maar als de titel verandert in "Recept voor gebak", raakt de AI in paniek, zelfs als de inhoud exact hetzelfde is.

Hier komt CLARC in beeld. Dit is een nieuw, veel strengere test voor code-zoekmachines, speciaal gemaakt voor C en C++ (de talen die worden gebruikt voor besturingssystemen, auto's en complexe software).

Hier is hoe het werkt, uitgelegd met een paar creatieve vergelijkingen:

1. De Bibliotheek van de Realiteit

De makers van CLARC hebben niet zomaar een paar voorbeelden bedacht. Ze hebben de hele GitHub (een enorme online bibliotheek voor programmeurs) doorzocht en echte, werkende stukken code geselecteerd.

  • De Analogie: Stel je voor dat je eerder alleen oefende met recepten uit een kinderboekje. CLARC gooit je nu in een professionele keuken met echte, complexe recepten die daadwerkelijk kunnen worden gekookt (gecompileerd).

2. De Drie Levels van Moeilijkheid

De test verdeelt de code in drie groepen, net als een videogame met steeds zwaardere levels:

  • Level 1 (De Solo-avonturier): Een stukje code dat alleen standaard hulpmiddelen gebruikt.
  • Level 2 (De Teamspeler): Code die werkt met speciale, zelfgemaakte bouwstenen (zoals een eigen soort bakplaat).
  • Level 3 (De Orkestleider): Complexe code die afhankelijk is van andere stukken code die eronder zitten. Hier moet de AI echt begrijpen hoe alles samenwerkt.

3. De "Vermommingstest" (De Kern van het Experiment)

Dit is het meest spannende deel. De onderzoekers wilden weten: Begrijpt de AI echt wat de code doet, of kijkt hij alleen naar de namen van de variabelen?

Ze hebben de code drie keer "vermomd":

  • De Neutralisatie: Alle namen worden vervangen door saaie namen als functie_a, variabele_b. Het is alsof je een boek leest waar alle namen van personages zijn vervangen door "Hij" en "Zij".
  • De Randomisatie: De namen worden willekeurig veranderd in onbegrijpelijke klinkerreeksen.
  • De Vertaling naar Machine-taal: De code wordt vertaald naar Assembly of WebAssembly. Dit is als het vertalen van een prachtig geschreven roman naar een lijst met binaire cijfers (0 en 1) of een lijst met machine-instructies. De "smaak" van de taal is weg, alleen de logica blijft over.

4. Wat bleek er? (De Schokkende Resultaten)

Toen ze de beste AI-modellen (zoals die van OpenAI en andere tech-giganten) op deze test lieten werken, gebeurde er iets vreemds:

  • Op de normale test: De AI's scoorden fantastisch. Ze vonden de juiste code bijna altijd.
  • Op de "vermomde" test: De scores instortten.

De Metaphor:
Het is alsof je een superheld hebt die elke sleutel herkent aan de vorm van de tandjes. Maar zodra je de tandjes afslijpt en de sleutel een andere kleur geeft, kan hij hem niet meer openen, zelfs niet als het exact dezelfde sleutel is die hij gisteren nog gebruikte.

De AI's blijken niet te begrijpen wat de code doet (de logica). Ze kijken alleen naar de woorden die erin staan (de namen van variabelen en functies). Als die namen weg zijn of veranderd zijn, raken ze volledig verdwaald.

5. Waarom is dit belangrijk?

In de echte wereld wordt code vaak "vermomd" (obfuscatie) om hackers te misleiden, of wordt code vertaald naar een andere taal voor verschillende apparaten. Als onze zoekmachines niet robuust genoeg zijn om door deze vermommingen heen te kijken, kunnen we geen veilige software bouwen of fouten vinden in gecompliceerde systemen.

Conclusie

CLARC is een waarschuwing en een hulpmiddel. Het zegt: "Stop met het testen van AI's met te makkelijke vragen. Ze zijn slim in het herkennen van patronen, maar ze zijn nog niet slim genoeg om de diepere betekenis van code te begrijpen als de oppervlakte verandert."

De onderzoekers hopen dat deze nieuwe test ervoor zorgt dat de volgende generatie AI's echt gaat leren denken als een programmeur, in plaats van alleen maar te kijken als een woordenboek.