Development

Hoe maak je een programmeertaal meertalig?
Felienne Hermans maakte programmeertaal Hedy meertalig en vertelt erover tijdens AG TechFest.
Felienne Hermans maakte programmeertaal Hedy meertalig en vertelt erover tijdens AG TechFest.
Felienne Hermans bracht in 2020 Hedy de wereld in. Daarmee kunnen kinderen – en volwassenen – stapsgewijs leren programmeren in Python. Maar hoewel programmeren in Python toch vooral in het Engels gaat, kan met Hedy tegenwoordig in maar liefst dertig talen gewerkt worden, bijvoorbeeld in het Arabisch, Hindi en Nederlands. Hoe ze dat voor elkaar heeft gekregen, vertelt ze op 29 september tijdens AG TechFest.
Hermans - universitair hoofddocent bij het Leiden Institute of Advanced Computer Science (LIACS) van de Universiteit Leiden en columniste bij AG Connect – omschreef Hedy in 2020 als een soort ‘baby Python’, waarmee je stap voor stap kunt leren programmeren. “We merkten dat als kinderen leren programmeren, ze direct aan heel veel dingen tegelijkertijd moeten denken. Wil je bijvoorbeeld een programma een regel tekst toont, dan moet je de ‘print’-functie kennen, maar ook weten dat de tekst die getoond moet worden tussen enkele aanhalingstekens en ronde haakjes moet staan”, legde ze destijds uit. “Er komt heel veel tegelijkertijd op ze af, waardoor ze weleens delen vergeten. Dat is erg frustrerend voor ze.”
Hedy lost dit op door een voorbeeld te nemen aan hoe kinderen leren schrijven. Wie leert schrijven, leert eerst de losse letters kennen, dan woorden en dan pas zinsopbouw en interpunctie. Bij Hedy gaat dat op eenzelfde manier: kinderen leren per niveau programmeren en op ieder niveau komt er een regel bij.
Meertalig Hedy
Inmiddels is Hedy dus een succes: het wordt wereldwijd gebruikt en er zijn dus miljoenen programma’s mee gemaakt. Hermans won er in 2021 zelfs de Nederlandse Prijs voor ICT-onderzoek mee. “Eén van de spannendste dingen die we daarna hebben gedaan, is het mogelijk maken om in meerdere talen te programmeren. Dus niet alleen in het Engels, maar ook in het Nederlands, Spaans en Chinees. En het kan nu zelfs in talen die van rechts naar links gaan, zoals Arabisch en Hebreeuws”, vertelt ze nu.
Nieuwsgierig naar Hedy? Felienne moest AG TechFest in 2022 helaas missen, maar op woensdag 20 september 2023 krijgt Hedy een herkansing! Hedy community manager Sabina Chiță vertelt er alles over tijdens AG TechFest 2023 in de Werkspoorkathedraal in Utrecht!
De meertaligheid was nodig om kinderen wereldwijd aan te kunnen spreken, merkte Hermans. Niet alleen moeten kinderen anders Engels aanleren nog voor ze leren programmeren, maar het kan bijvoorbeeld ook nodig zijn om van toetsenbord te wisselen. “Als een Arabisch kind in het Engels wil programmeren, kan hij zijn toetsenbord wel op Engels zetten. Maar als je dan een functienaam in het Arabisch wil gebruiken, moet je hem weer terugschakelen. De meertaligheid is dus belangrijk om dit laagdrempelig te houden.”
Trucjes in de hele techstack
Hedy meertalig maken is echter gemakkelijker gezegd dan gedaan. Het houdt namelijk meer in dan alleen wat woorden vertalen. Bepaalde talen hebben namelijk andere karakters of zelfs andere getallen of interpunctie. “In het Chinees zijn de punten en komma’s bijvoorbeeld anders. En die worden niet herkend in Python”, legt Hermans uit. “Dus we moesten allerlei trucjes uithalen om dat over de gehele techstack mogelijk te maken.”
Gelukkig hoefde Hermans dat niet allemaal zelf te doen. Rondom Hedy zit tegenwoordig een hele gemeenschap aan vrijwilligers die dit soort werk op zich nemen. “Maar steeds als er een nieuwe taal bij kwam, waren er weer dingen die niet werkten. We kwamen dus in een spiraal: we implementeerden nieuwe dingen, trokken nieuwe mensen aan en daardoor kwamen er weer nieuwe problemen bij. Gelukkig lijken we nu wat stabieler te zijn. Er komen wel nieuwe talen bij, maar dat lijkt nu allemaal goed te gaan.”
Meertalige toekomst van Python?
Al het werk brengt echter wel een nieuwe vraag naar boven: is Hedy nog wel een subset van Python, zoals dat eerder het geval was? “In zekere zin zijn we nu een superset van Python. En dat is een probleem, want uiteindelijk moeten kinderen dus alsnog naar Engels over.”
Hermans hoopt dan ook dat er in de toekomst meer nagedacht wordt over meertaligheid in programmeertalen. “Ik hoop nog steeds dat we met Hedy de transitie naar Python gemakkelijker maken, maar ik hoop ook dat we zo een generatie kweken die zegt: Python, krijg je zaakjes eens op orde. Dat we een community creëren die nadenkt over hoe je een programmeertaal kunt vertalen, zowel technisch als filosofisch. Want zo moeilijk is het niet. En ik draag hier nu zelf ook aan bij, want Hedy is helemaal open source. Als je dit wil doen, zijn er dus al tips en tricks.”
Ik ben het helemaal met Pietertje eens. NIET DOEN! Ik zit zelf 45 jaar in de IT als developer. Als IT'er ben je al in het nadeel wanneer je van (bijvoorbeeld) SQL een ander "dialekt" spreekt dan het gebruikelijke. Een computertaal is geen taal, al doen de "woorden" dit vermoeden. En je bent volledig op jezelf aangewezen als je een probleem hebt waarvan gevraagd wordt: maak even een kopie van je programma dan kijk ik er even naar. Hadden we niet voldoende geleerd van de babylonische spraakverwarring? Daar probeerden ze alleen nog maar een hoge toren te bouwen! Ik mag hopen dat we in de programmeertaal Hedy geen kencentrale aan de praat willen krijgen. Dit is een dom idee en het leidt alleen maar kinderen op die nooit meer aan de bak komen.
Ik kan de uitdagingen van meertaligheid zeker begrijpen. Om kinderen te introduceren in het programmeren kan het denk ik ook zeker helpen om te beginnen met bekende zaken.
Echter, wanneer het langzamerhand professioneler wordt, ben ik het eens met Pietertje. Ik heb zelf ook ervaren dat language packs voor programmeertalen en runtimes kunnen leiden tot "wild-goose chasing" wanneer er fouten optreden en je hulp zoekt via Google of Stackoverflow. Ik denk daarom dat het goed zou zijn bij de hogere levels van de taal ook het Engels langzaam als regel te introduceren om zo mensen er aan te laten wennen tijdens het leerproces.
Lijkt me niet echt een probleem te hoeven zijn. Het schrijven in een programmeertaal is te vergelijken met de presentatie laag van een onderliggend interne presentatie, deze interne presentatie zou over alle varianten van Hedy uniform moeten zijn. Als je dan netjes werkt, maken getal / datum formaten niet uit en kan iemand in het Chinees ook mijn Nederlandse programma bekijken en testen. Een groot probleem blijft natuurlijk de presentatie van teksten, labels in JSON etc, dit zou je gedeeltelijke kunnen oplossen met woordenboeken tussen talen, maar dat blijft de uitdaging.
De problemen met MS Office zijn dat de intern presentatie vermengt is Regionale instellingen zodat uitwisselbaarheid een probleem is en dat de macro taal onvoldoende ondersteuning biedt en/of constructies toestaat die regionale instellingen vermengt met rekenkundige gegevens.
Niet doen! Hou het bij Engels. Stel dat je een foutmelding krijgt in het Nederlands dat de functie "ALS" niet ok is? De kans dat je de oorzaak en oplossing kunt vinden in het Nederlands is bijna nihil. Of je wilt een vraag stellen op een forum... Er zijn veel meer bronnen te vinden in het Engels. VBA Excel is zo'n horror: dan heeft iemand een macro in het Nederlands gemaakt en het werkt niet op een andere computer.
Get over it. Of gaan we beginnen zoals de Fransen en alle termen naar het Nederlands te vertalen. Bonne chance.