Vreemde Talen

Augustus 2021

Als mensen zeggen dat naar hun ervaring alle programmeertalen in feite equivalent zijn, dan doen ze geen uitspraak over talen, maar over het soort programmeren dat ze hebben gedaan.

99,5% van programmeren bestaat uit het aan elkaar lijmen van aanroepen naar bibliotheekfuncties. Alle populaire talen zijn hier even goed in. Men kan dus gemakkelijk een hele carrière doorbrengen in de doorsnede van populaire programmeertalen.

Maar de overige 0,5% van programmeren is onevenredig interessant. Als je wilt leren waaruit dit bestaat, is de vreemdheid van vreemde talen een goede aanwijzing om te volgen.

Vreemde talen zijn niet per ongeluk vreemd. Niet de goede, tenminste. De vreemdheid van de goede impliceert meestal het bestaan van een vorm van programmeren die niet alleen het gebruikelijke aan elkaar lijmen van bibliotheekaanroepen is.

Een concreet voorbeeld: Lisp-macro's. Lisp-macro's lijken zelfs voor veel Lisp-programmeurs vreemd. Ze bevinden zich niet alleen niet in de doorsnede van populaire talen, maar zouden van nature moeilijk correct te implementeren zijn in een taal zonder deze in een dialect van Lisp te veranderen. En macro's zijn zeker bewijs van technieken die verder gaan dan 'glue programming'. Bijvoorbeeld, problemen oplossen door eerst een taal voor problemen van dat type te schrijven, en vervolgens je specifieke applicatie daarin te schrijven. En dit is niet alles wat je met macro's kunt doen; het is slechts één regio in een ruimte van programma-manipulerende technieken die zelfs nu nog lang niet volledig is verkend.

Dus als je je concept van wat programmeren kan zijn wilt uitbreiden, is een manier om dit te doen door vreemde talen te leren. Kies een taal die de meeste programmeurs vreemd vinden, maar waarvan de mediaangebruiker slim is, en focus vervolgens op de verschillen tussen deze taal en de doorsnede van populaire talen. Wat kun je in deze taal zeggen dat onmogelijk onhandig zou zijn om in andere talen te zeggen? Tijdens het leren hoe je dingen kunt zeggen die je eerder niet kon, zul je waarschijnlijk leren hoe je dingen kunt denken die je eerder niet kon denken.

Dank aan Trevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad en Robert Morris voor het lezen van conceptversies hiervan.