Vroeg in De Covid-19-pandemie dwong de gouverneur van New Jersey tot een ongebruikelijke bekentenis: hij had geen COBOL-ontwikkelaars meer. De werkloosheidsverzekeringssystemen van de staat waren geschreven in de 60 jaar oude programmeertaal en moesten worden bijgewerkt om de honderdduizenden claims te kunnen verwerken. Het probleem was dat maar weinig overheidsmedewerkers wisten hoe ze dat moesten doen. En de crisis strekte zich uit tot buiten New Jersey, slechts een van de vele staten die afhankelijk waren van deze logge systemen. Volgens ruwe berekeningen kost de inefficiëntie van COBOL het Amerikaanse bbp 105 miljard dollar in 2020.
Je zou kunnen denken dat New Jersey hierna zijn systeem zou hebben vervangen – en dat Covid de laatste zucht van COBOL was. Niet helemaal. Het nieuwe werkloosheidssysteem van de staat bracht een aantal verbeteringen in de kwaliteit van leven met zich mee, maar aan de andere kant werd het nog steeds mogelijk gemaakt door een mainframe dat de oude taal draaide.
COBOL, een afkorting van Common Business-Oriented Language, is de meest gebruikte computertaal in de geschiedenis. Van de 300 miljard regels code die in het jaar 2000 waren geschreven, was 80 procent in COBOL. Het wordt nog steeds op grote schaal gebruikt en ondersteunt een groot aantal overheidssystemen, zoals de registratie van motorvoertuigen en werkloosheidsverzekeringen; op een bepaalde dag kan het iets van de orde van grootte aan ter waarde van 3 biljoen dollar van financiële transacties. Ik beschouw COBOL als een soort digitaal asbest, ooit bijna alomtegenwoordig en nu ongelooflijk gevaarlijk moeilijk te verwijderen.
COBOL werd voor het eerst voorgesteld in 1959 door een commissie bestaande uit het grootste deel van de Amerikaanse computerindustrie (waaronder Grace Hopper). Het riep op tot “specificaties voor een gemeenschappelijke zakentaal voor geautomatiseerde digitale computers” om een groeiend probleem aan te pakken: de kosten van programmeren. Programma’s werden speciaal voor specifieke machines geschreven, en als je ze op iets anders wilde draaien betekende dat een vrijwel totale herschrijving. De commissie benaderde het Ministerie van Defensie, dat het project graag accepteerde.
Het ontwerp van COBOL onderscheidt het van andere talen uit het heden en verleden. Het was bedoeld om in gewoon Engels te worden geschreven, zodat iedereen, zelfs niet-programmeurs, het zou kunnen gebruiken; symbolische wiskundige notatie werd pas na veel discussie toegevoegd. De meeste versies van COBOL staan het gebruik van honderden woorden toe (Java staat slechts 68 woorden toe), waaronder “is”, “then” en “to”, om het typen gemakkelijker te maken. Sommigen hebben zelfs gezegd dat COBOL bedoeld was om computerprogrammeurs te vervangen, die in de jaren zestig in veel bedrijven een verheven plaats innamen. Ze waren meesters van een technologie die de meeste mensen nauwelijks konden bezitten en waar de ontwerpers zelfs maar op konden hopen. documentatie, waardoor ontwikkelaars tijd besparen en het op de lange termijn eenvoudig te onderhouden is.
Maar wat betekende het eigenlijk om leesbaar te zijn? Programma’s zijn geen boeken of artikelen; het zijn voorwaardelijke instructiesets. Hoewel COBOL de complexiteit van een enkele coderegel kon destilleren tot iets dat iedereen kon begrijpen, viel dat onderscheid uiteen in programma’s die duizenden regels besloegen. (Het is net een montagehandleiding van Ikea: elke stap is eenvoudig, maar op de een of andere manier sluiten de dingen nog steeds niet aan.) COBOL werd bovendien geïmplementeerd met een stukje logica dat steeds meer werd veracht: de GO TO-instructie, een onvoorwaardelijk vertakkingsmechanisme dat je van de ene sectie van een programma naar de andere deed vliegen. Het resultaat was ‘spaghetticode’, zoals ontwikkelaars graag zeggen, met daarnaast zelfdocumentatie.
Veel computerwetenschappers hadden vanaf het begin problemen met COBOL. Edsger Dijkstra had er een beroemde hekel aan en zei: “Het gebruik van COBOL verlamt de geest; het onderwijzen ervan moet daarom als een criminele daad worden beschouwd.” Dijkstra had eveneens een hekel aan de GO TO-verklaring en beweerde dat deze programma’s bijna onmogelijk te begrijpen maakte. Er was sprake van een zekere mate van oprecht snobisme: er werd vaak neergekeken op COBOL als een puur utilitaire taal die bedoeld was om saaie problemen op te lossen.
Jean Sammet, een van de oorspronkelijke ontwerpers, zag het anders: de taal had simpelweg de ingewikkelde taak om ingewikkelde zaken weer te geven, zoals de sociale zekerheid. Of zoals een andere verdediger schreef: “Helaas zijn er te veel van dergelijke zakelijke applicatieprogramma’s geschreven door programmeurs die nooit het voordeel hebben gehad dat gestructureerde COBOL goed werd onderwezen.” Goede COBOL was eigenlijk zelfdocumenterend, maar veel hing af van de specifieke programmeur. Fred Gruenberger, een wiskundige bij de Rand Corporation, zei het zo: “COBOL is, in de handen van een meester, een prachtig stuk gereedschap – een zeer krachtig stuk gereedschap. COBOL, omdat het ergens door een klerk op laag niveau zal worden gehanteerd, zal een ellendige puinhoop zijn.”



