Spreek jij Python?

Tekst Paul A. Kirschner
Gepubliceerd op 12-05-2020
Leren programmeren lijkt op het leren van een tweede taal, zo wijst onderzoek uit. Een talige aanleg komt daarbij beter van pas dan rekenvaardigheid.

Het doet er niet toe wat ik zelf vind van de vraag of kinderen van jongs af aan moeten leren programmeren. Zolang het over meningen gaat, heeft niemand gelijk. Maar als je ervoor kiest, moet je het goed doen.
Programmeren wordt meestal behandeld als een STEM-vak (Science, Technology, Engineering, Mathematics). Toch delen programmeertalen veel kenmerken met een (tweede) natuurlijke taal. Duh! Ze heten niet voor niets ‘programmeertalen’. Deze kennen eigen woorden en symbolen, en hebben een eigen grammatica en syntaxis (zinsbouw). Als je programmeert, creëer je betekenis door de woorden en symbolen op basis van regels (grammatica en vooral syntaxis) aan elkaar te rijgen. Onderzoek laat zien (Denny e.a., 2011) dat leerlingen enorm worstelen met die syntaxis. Paul Denny en zijn collega’s ontdekten bijvoorbeeld dat leerlingen meestal een broncode (leesbare tekst in een programmeertaal) inleveren met fouten in de syntaxis: dit gold voor bijna drie kwart (73%) van de zwakkere leerlingen en voor ongeveer de helft van de beste leerlingen.

Volgens recent onderzoek van Chantel Prat en collega’s van de universiteit van Washington (2020) lijkt vooral een aanleg voor het leren van talen te voorspellen of je ook goed kan (leren) programmeren. Die talige aanleg komt beter van pas dan wiskundige kennis of rekenvaardigheid. Dat komt, volgens de onderzoekers, doordat het schrijven van een broncode lijkt op het leren van een tweede taal: je moet de woordenschat en grammatica van die taal leren en snappen hoe deze samen ideeën en bedoelingen communiceren. In een interview in Science Daily vertelt Prat dat programmeren vaak nodeloos ingewikkeld wordt gemaakt door bijvoorbeeld stereotypen over hoe een goede programmeur eruitziet, maar ook door inleidende cursussen die vaak gebaseerd zijn op het idee dat programmeren sterk afhankelijk is van wiskundige vaardigheden.

Dat laatste wordt niet ondersteund door het onderzoek van Prat en collega’s. Daarin moesten de deelnemers een spelletje programmeren in de programmeertaal Python. De onderzoekers ontdekten dat taalvaardigheid meer dan 70% van de verschillen verklaarde in de snelheid waarmee betere en minder goede presteerders leerden programmeren. Slechts een klein deel van de verschillen had te maken met hun rekenvaardigheid. Oftewel: het programmeersucces bleek vooral af te hangen van de taalvaardigheid. Behalve rekenen bleek ook logisch en abstract redeneren (fluid intelligence) veel minder van invloed.
Dichter bij huis onderzochten Felienne Hermans van de Universiteit Leiden en collega’s (2018) hoe het programmeeronderwijs verbeterd kon worden. Hun aanbeveling: neem een voorbeeld aan taalonderwijs. Zo is bekend uit Hermans’ onderzoek met Alaaeddin Swidan (2019) dat beginnende lezers een tekst beter begrijpen wanneer ze deze hardop lezen, doordat hardop lezen (vocalisatie) de aandacht op de tekst vestigt. Hermans en collega’s willen nu weten of het hardop lezen van broncode op een vergelijkbare manier werkt: ondersteunt dit kinderen bij het leren programmeren? De eerste resultaten zijn bemoedigend: leerlingen die de broncode hardop lazen, scoren hetzelfde op begrip als leerlingen die de broncode alleen in stilte lazen, maar ze onthouden wel beter wat er in die code stond.

Hermans’ volgende onderzoeksstap wordt de overgang van echt hardop naar alleen in gedachten lezen. In het taalonderwijs zien we dat naarmate leerlingen ouder worden, ze meer in stilte vertrouwen op zogenoemde subvocalisatie: een tekst lezen met de innerlijke stem. Hiervan is bekend dat het eveneens het leesbegrip verbetert, ook bij bekwame, volwassen lezers. Zou dit ook gelden voor programmeren?
Als leren programmeren inderdaad lijkt op het leren van een tweede taal, kan dit een doorbraak betekenen voor effectief, efficiënt en bevredigend programmeeronderwijs, ongeacht je mening over de noodzaak daarvan.


Paul A. Kirschner is emeritus hoogleraar Onderwijspsychologie aan de Open Universiteit en gasthoogleraar aan de Thomas More Hogeschool (België). 


Bronnen:

Denny, P., Luxton-Reilly, A., Tempero, E., & Hendrickx, J. (2011). Understanding the syntax barrier for novices. In ITiCSE '11: Proceedings of the 16th annual joint conference on Innovation and technology in computer science education (pp. 208–212). Association for Computing Machinery. https://doi.org/10.1145/1999747.1999807

Hermans, F., Swidan, A., & Aivaloglou, E. (2018). Code phonology: An exploration into the vocalization of code. In ICPC '18: Proceedings of the 26th Conference on Program Comprehension (pp. 308-311). Association for Computing Machinery. https://doi.org/10.1145/3196321.3196355

Prat, C. S., Madhyastha, T. M., Mottarella, M .J., & Kuo, C. H. Relating natural language aptitude to individual differences in learning programming languages. Scientific Reports, 10, 3817 (2020). https://doi.org/10.1038/s41598-020-60661-8

Swidan, A., & Hermans, F. (2019). The effect of reading code aloud on comprehension: An empirical study with school students. In CompEd '19: Proceedings of the ACM Conference on Global Computing Education (pp. 178-184), Association for Computing Machinery. https://doi.org/10.1145/3300115.3309504


Dit artikel verscheen in Didactief, mei 2020.

Een ogenblik geduld...
Click here to revoke the Cookie consent