Development

Carriere
wanhoop

Van de ene naar de andere programmeertaal

Consistente voorspellingen doen over wat code gaat doen, is moeilijk.

© Shutterstock fizkes
17 februari 2022

Iedere programmeertaal is anders, en dat is soms behoorlijk frustrerend. Op school leren mijn vierdeklassers nu JavaScript terwijl ze al Python kenden en dat is natuurlijk een recept voor verwarring. Opeens moeten er ronde haakjes om een conditie en krulhaakjes om de body van een loop, in plaats van een dubbele punt achter een conditie en inspringen bijeen loop.

In de kerstvakantie las ik een geweldig interessant proefschift over precies dit fenomeen van Schotse onderzoekster Ethel Tshukudu. Zij beschrijft in detail de verschillende manieren waarop je in de war kan zijn als je een nieuwe programmeertaal leert.

Soms is er sprake van daadwerkelijke correspondentie, True Carryover noemt Tshukudu dit. We gebruiken dan dezelfde syntax die ook hetzelfde betekent. Bijvoorbeeld bij het toewijzen van een variabele, dat gaat in Python en in JavaScript met een isje: x = 10. Dat is een geval waar kennis van Python ons dus helpt on JavaScript meteen te begrijpen en ook te kunnen schrijven.

In andere gevallen is de betekenis hetzelfde maar de syntax anders, dat noemt Tshukudu Abstract True Carryover. Bijvoorbeeld een for lus in Python of eentje in JavaScript. Ze zien er heel anders uit, maar doen in de basis wel hetzelfde. Dat is wel even wennen en een hoop gedoe, maar echt ingewikkeld is het niet.

Maar, soms is er ook verwarring van een gevaarlijke soort. Een False Carryover. Dan hebben we het over code die er hetzelfde uitziet maar iets heel anders doet. Bijvoorbeeld een tekstje aan een lijst plakken. In Python kan je dat syntactisch wel weergeven, maar dan krijg je een foutmelding als je de code uitvoert:

tijdschriften = [‘Nature’, ‘AG Connect’, ‘Der Spiegel’]
tijdschriften = tijdschriften + 'De Groene'

In JavaScript mag je dit exact zo ook schrijven, maar daar werkt de code wel. Althans, je krijgt geen foutmelding, maar de code werkt ook niet zoals de meeste mensen zouden verwachten. [Zet je verwachting hieronder als reactie]

Dit simpele voorbeeldje laat al zien hoe moeilijk het is om consistente voorspellingen te doen over wat code gaat doen, zelfs voor ervaren programmeurs. Tussen ieder paar talen heb je talloze False Carryover’s, en zelfs binnen talen werken dingen soms niet consistent, terwijl het er syntactisch goed uit ziet.

Magazine AG Connect

Dit artikel is ook gepubliceerd in het magazine van AG Connect (januari/februarinummer 2022). Wil je alle artikelen uit dit nummer lezen, zie dan de inhoudsopgave.

Reactie toevoegen