Each language version is independently generated for its own context, not a direct translation.
De Grote Schatkaart van Wiskundige Code: Een Verkenning van GitHub
Stel je voor dat je een gigantische bibliotheek binnenstapt, de "Bibliotheek van de Wereld", waar elke computerprogramma ter wereld in ligt opgeslagen. In deze bibliotheek zijn er speciale boeken die gaan over drijvende komma-rekenen (floating-point arithmetic). Dat is de manier waarop computers met breuken en decimalen werken, zoals 3.14 of 0.0001.
Het probleem? Het is ontzettend lastig om te weten of die berekeningen in die boeken wel 100% correct zijn. Computers maken soms kleine afrondingsfouten, net als wanneer je geld in je hoofd rekent en een centje verliest. Als die fouten in kritieke software zitten (zoals in een vliegtuig of een medische machine), kan dat rampzalig zijn.
Wetenschappers proberen al jaren nieuwe "rekenregels" (tools) te bedenken om die fouten te vinden. Maar tot nu toe hebben ze die regels getest op een heel klein, speciaal geselecteerd stukje van de bibliotheek. Het was alsof ze alleen maar op de kinderboeken in de bibliotheek testten, terwijl ze eigenlijk wilden weten hoe volwassenen in de echte wereld rekenen.
Wat hebben deze onderzoekers gedaan?
Andrea, Tobias en Eva (de auteurs van dit paper) wilden weten: "Hoe ziet echte, dagelijkse wiskundige code er eigenlijk uit?"
Ze hebben een enorme robot (een software-tool genaamd Scyros) gebouwd die door miljoenen openbare projecten op GitHub (een soort GitHub voor programmeurs) heeft gekeken. Ze hebben gekeken naar talen waar de programmeur zelf moet zeggen wat voor soort getal hij gebruikt (zoals C++, Java en Go), omdat dat makkelijker is om automatisch te scannen.
De Grote Ontdekkingen (in simpele taal):
Het is overal:
Net als dat bijna iedereen wel eens koffie drinkt, gebruiken bijna alle grote softwareprojecten drijvende komma-getallen. Ze schatten dat meer dan 62% van alle projecten dit gebruiken. Het is dus niet iets voor alleen maar ruimtevaart-ingenieurs; het zit in alles.De "Kinderboeken" vs. De "Echte Wereld":
De onderzoekers vergeleken de bestaande testboeken (de benchmarks die wetenschappers nu gebruiken) met de echte code die ze vonden.- De testboeken (FPBench): Dit zijn vaak simpele, geïsoleerde rekensommen. Ze lijken op een oefening in een wiskundehoofdstuk: "Bereken de sinus van 30 graden." Ze hebben weinig vertakkingen (als-dit-dan-dat) en geen lussen (herhalingen).
- De echte code: Dit is veel rommeliger en complexer. Echte code zit vol met if-statements (als dit gebeurt, doe dat dan) en loops (doe dit steeds opnieuw).
- De les: De huidige testtools zijn getest op simpele, geïsoleerde sommen. Maar in de echte wereld werken die tools vaak niet goed omdat ze niet gewend zijn aan die rommelige, complexe structuren. Het is alsof je een auto test op een rechte racebaan, maar de auto moet eigenlijk door een drukke stad met stoplichten en bochten rijden.
De "GSL" is een mythe:
In de wetenschap wordt vaak gesproken over de "GNU Scientific Library" (een soort standaardpakket met wiskundige functies) als voorbeeld. De onderzoekers vonden dat deze library in de echte wereld bijna nooit wordt gebruikt. Het is alsof je denkt dat iedereen in Nederland "De Telegraaf" leest, terwijl blijkt dat mensen vooral online nieuws lezen. De tools die gebaseerd zijn op die library missen dus de echte praktijk.Kleine stukjes, grote impact:
De meeste wiskundige code zit in kleine, zelfstandige stukjes (functies), niet in één gigantisch, onbegrijpelijk blok. Dit is goed nieuws! Het betekent dat we tools kunnen bouwen die zich focussen op die kleine stukjes, zolang ze maar goed kunnen omgaan met de "verwarring" (de loops en if-statements) eromheen.
Wat hebben ze gedaan met deze kennis?
Ze hebben niet alleen gekeken, ze hebben ook iets teruggegeven aan de gemeenschap:
- Ze hebben een enorme dataset vrijgegeven met 10 miljoen echte wiskundige functies.
- Ze hebben 59 nieuwe testcases gemaakt (de "Challenge Benchmarks"). Deze zijn niet gemaakt door wetenschappers in een lab, maar zijn echt uit de wereld gehaald. Ze bevatten de echte rommel: pointers, macro's en complexe logica.
Conclusie: Waarom is dit belangrijk?
Stel je voor dat je een nieuwe bril ontwerpt om slecht zicht te corrigeren. Als je die bril alleen test op een witte muur met een zwart puntje, denk je dat hij perfect werkt. Maar als je hem op straat probeert, met bewegende auto's en regen, werkt hij misschien niet.
Deze paper zegt: "Stop met testen op de witte muur. Kijk eens naar de echte, rommelige straat."
Door te kijken naar hoe programmeurs echt werken, kunnen we betere tools bouwen die niet alleen in theorie werken, maar ook in de praktijk. Ze hebben de kaart getekend van het echte landschap, zodat de volgende generatie wetenschappers niet meer verdwaalt in een fantasiewereld, maar de echte problemen oplost.