Evaluating LLMs in the Context of a Functional Programming Course: A Comprehensive Study

Dit onderzoek evalueert de effectiviteit van negen state-of-the-art Large Language Models in een functionele programmeringcursus met OCaml door middel van drie nieuwe benchmarks (λ\lambdaCodeGen, λ\lambdaRepair en λ\lambdaExplain), en concludeert dat hoewel deze modellen goed presteren bij het corrigeren van fouten en het beantwoorden van conceptuele vragen, ze minder succesvol zijn bij het oplossen van huiswerkproblemen in deze low-resource taal vergeleken met hun prestaties in Python en Java.

Yihan Zhang (McGill University, Canada), Brigitte Pientka (McGill University, Canada), Xujie Si (University of Toronto, USA)

Gepubliceerd Mon, 09 Ma
📖 5 min leestijd🧠 Diepgaand

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

Stel je voor dat je een nieuwe taal leert, zoals een vreemde taal of een instrument. Vroeger moest je dit alleen doen met een boek, een leraar en veel oefening. Vandaag de dag hebben we echter een nieuwe, slimme assistent: een LLM (een "Groot Taalmodel"). Dit is een supercomputer die alles heeft gelezen wat er op internet staat en nu lijkt te kunnen praten, schrijven en zelfs coderen in bijna elke taal.

Maar hoe goed is deze assistent echt? En kan hij helpen als je een moeilijke, specifieke taal leert, zoals OCaml (een programmeertaal die veel gebruikt wordt in de academische wereld, maar die minder bekend is dan Python of Java)?

Dit is precies wat drie onderzoekers van de universiteiten McGill en Toronto hebben onderzocht in hun paper. Ze hebben een soort "proefexamen" opgezet om te zien of deze slimme computers echt kunnen helpen bij het leren van functioneel programmeren, of dat ze alleen maar mooie, maar foutieve antwoorden geven.

Hier is een samenvatting van hun onderzoek, vertaald naar alledaagse taal:

1. De Drie Proefexamens (De "Benchmarks")

De onderzoekers hebben drie verschillende soorten taken bedacht om de AI te testen, net als een leraar die een student op verschillende manieren wil beoordelen:

  • λCodeGen (De Bouwopdracht): Hierbij kreeg de AI een opdracht in gewone taal (bijvoorbeeld: "Schrijf een functie die een boomstructuur doorzoekt") en moest het de code schrijven.
    • De analogie: Het is alsof je de AI vraagt: "Bouw me een huis" en je kijkt of het een stevig huis bouwt of een kartonnen doos.
  • λRepair (De Reparatieklus): De AI kreeg stukken code die fout waren (met fouten in de spelling, de logica of de structuur) en moest ze fixen.
    • De analogie: Je geeft de AI een kapotte auto en vraagt: "Maak deze weer rijvaardig."
  • λExplain (De Theorieles): De AI moest vragen beantwoorden over de theorie achter het programmeren (bijvoorbeeld: "Wat is het verschil tussen 'call-by-value' en 'call-by-name'?").
    • De analogie: Je vraagt de AI: "Leg uit waarom de lucht blauw is," zonder dat je een auto of huis hoeft te bouwen.

2. De Resultaten: Een Slimme, maar Onvolmaakte Hulp

De onderzoekers testten 9 verschillende AI-modellen (zoals GPT-4o, Claude 3.7, en open-source modellen). Hier zijn de belangrijkste bevindingen:

De Top 3 zijn sterk, maar niet perfect

De allerbeste modellen (zoals GPT-4o en o3-mini) deden het verrassend goed. Ze konden ongeveer 70% van de programmeeropdrachten perfect maken.

  • Maar: In de populaire talen Python en Java scoren ze vaak 90% of meer. In deze moeilijkere, minder bekende taal (OCaml) zakken ze iets. Het is alsof een topkok die perfect Italiaans pasta kan maken, moeite heeft met een heel specifiek, regionaal gerecht dat hij minder vaak heeft geoefend.

Repareren is makkelijker dan Bouwen

Het bleek dat de AI's veel beter zijn in het repareren van bestaande code dan in het bouwen van nieuwe code van nul af.

  • De analogie: Als je een auto hebt die niet start, kan de AI vaak snel zien dat de bougie los zit en die vastdraaien. Maar als je vraagt om een nieuwe auto te ontwerpen, maakt hij soms fouten in het ontwerp.
  • Ze zijn vooral goed in het oplossen van simpele fouten (zoals een vergeten puntkomma of een typefout). Bij complexe, logische fouten (waar de code wel werkt, maar het niet doet wat je wilt) hebben ze meer moeite.

De Theorie is lastig

Bij het uitleggen van abstracte theorieën (het "waarom" achter de code) deed het het goed, maar niet perfect.

  • Het probleem: De AI's zijn vaak erg luidruchtig. Ze geven het juiste antwoord, maar dan met een heel lang verhaal eromheen dat niet nodig is.
  • De analogie: Het is alsof je vraagt: "Hoeveel is 2+2?" en de AI antwoordt: "Nou, laten we eerst kijken naar de geschiedenis van de wiskunde, dan de betekenis van het getal 2, en uiteindelijk zeggen we dat het 4 is." Het antwoord is goed, maar het is vermoeiend om te lezen.

Kleine modellen zakken door het ijs

De kleinere, gratis modellen (zoals Llama 3.1 8B) deden het veel slechter. Vaak gaven ze code die niet eens werkte (het "huis" viel in elkaar).

  • De les: Je kunt niet zomaar elke AI gebruiken voor complexe taken. Je hebt een "zware" versie nodig voor zware klussen.

3. Wat betekent dit voor studenten en leraren?

  • Voor studenten: Gebruik de AI als een tutor, niet als een krabbel. Als je de code van de AI direct overneemt zonder te kijken, loop je het risico dat je een fout leert. Je moet kritisch blijven: "Begrijp ik dit antwoord echt, of is het gewoon een mooi verhaal?"
  • Voor leraren: De AI is een krachtig hulpmiddel, maar het is geen toverstaf. Leraren moeten studenten leren om de AI te controleren. Misschien is het een betere opdracht om de AI te vragen om een fout te maken, zodat de student die moet vinden?
  • Voor de toekomst: De AI's worden steeds beter, maar voor moeilijke, specifieke vakken (zoals deze programmeertaal) zijn ze nog niet 100% betrouwbaar. Ze zijn handig als "one-stop shop" voor veel talen, maar voor de allerbeste resultaten in een specifieke taal zijn er soms nog speciale tools nodig.

Conclusie in één zin

Deze slimme computers zijn als een zeer intelligente, maar soms overenthousiaste assistent: ze kunnen je enorm helpen met het oplossen van problemen en het uitleggen van concepten, maar je moet ze nooit blindelings vertrouwen, vooral niet als je een moeilijke, specifieke taal leert. Je bent nog steeds de kapitein van je eigen schip; de AI is slechts de navigatiecomputer.