In het begin Covid-19-pandemie deed de gouverneur van New Jersey een ongebruikelijke bekentenis: hij heeft bijna geen COBOL-ontwikkelaars meer. Het werkloosheidsverzekeringssysteem van de staat is geschreven in een 60 jaar oude programmeertaal en moet worden bijgewerkt om honderdduizenden claims te kunnen verwerken. Het probleem is dat maar weinig overheidsfunctionarissen weten hoe ze dat moeten doen. En deze crisis is niet uniek voor New Jersey, maar slechts een van de vele staten die afhankelijk zijn van dit weerbarstige systeem. Op basis van ruwe berekeningen zijn de inefficiënties van COBOL schadelijk voor het Amerikaanse bbp 105 miljard dollar in 2020.
Je zou denken dat New Jersey hierna zijn systeem zou veranderen – en Covid was het laatste dat COBOL naar adem liet happen. Minder nauwkeurig. Het nieuwe werkloosheidssysteem van de staat brengt een aantal verbeteringen in de kwaliteit van leven met zich mee, maar aan de andere kant wordt dit nog steeds mogelijk gemaakt door het belangrijkste raamwerk dat de oude taal beheerst.
COBOL, een afkorting van Common Business-Oriented Language, is de meest gebruikte computertaal in de geschiedenis. Van de 300 miljard regels code die in 2000 werden geschreven, gebruikte 80 procent COBOL. Het systeem wordt nog steeds veel gebruikt en ondersteunt een groot aantal overheidssystemen, zoals de registratie van motorvoertuigen en de werkloosheidsverzekering; op een willekeurige dag kan hij de zaken op orde afhandelen ter waarde van 3 biljoen dollar uit financiële transacties. Ik zie COBOL als een soort digitaal asbest, dat vroeger bijna overal aanwezig was en nu heel moeilijk te verwijderen is.
COBOL werd voor het eerst voorgesteld in 1959 door een commissie bestaande uit het grootste deel van de Amerikaanse computerindustrie (inclusief Grace Hopper). Het roept op tot een “specificatie van een gemeenschappelijke zakentaal voor geautomatiseerde digitale computers” om een groeiend probleem op te lossen: programmeerkosten. Programma’s worden specifiek voor een bepaalde machine geschreven, en als je ze op een andere machine wilt draaien, betekent dat bijna volledig herschrijven. De commissie benaderde het ministerie van Defensie, dat het project graag aanvaardde.
Het ontwerp van COBOL onderscheidt het van andere talen uit het heden en verleden. Het is bedoeld om in gewoon Engels geschreven te worden, zodat iedereen, zelfs niet-programmeurs, het kan gebruiken; Symbolische wiskundige notatie werd pas na lang debat toegevoegd. De meeste versies van COBOL staan honderden woorden toe (Java staat slechts 68 woorden toe), inclusief ‘is’, ‘dan’ en ‘naar’, om ze gemakkelijker te kunnen schrijven. Sommigen zeggen zelfs dat COBOL bedoeld was om computerprogrammeurs te vervangen, die in de jaren zestig bij veel bedrijven een zeldzame plaats innamen. Het zijn experts in technologie die voor de meeste mensen bijna onbegrijpelijk is. COBOL-ontwerpers hoopten ook dat COBOL zijn eigen documentatie zou produceren, waardoor ontwikkelaars tijd zouden besparen en het gemakkelijk te onderhouden zou worden. lange termijn.
Maar wat betekent leesbaar? Programma’s zijn geen boeken of artikelen; het is een reeks voorwaardelijke instructies. Hoewel COBOL de complexiteit van een enkele regel code kan distilleren tot iets dat iedereen kan begrijpen, geldt dat onderscheid niet voor programma’s die duizenden regels lang zijn. (Het is net een montagehandleiding van Ikea: elke gegeven stap is eenvoudig, maar op de een of andere manier werkt alles nog steeds niet.) Bovendien wordt COBOL geïmplementeerd met een steeds meer gehate logica: de GO TO-instructie, een onvoorwaardelijk vertakkingsmechanisme waarmee je van het ene deel van het programma naar het andere kunt gaan. Het resultaat is ‘spaghetticode’, zoals ontwikkelaars graag zeggen, die zelfdocumentatie overbodig maakt.
Veel computerwetenschappers hadden vanaf het begin problemen met COBOL. Edsger Dijkstra had er een sterke hekel aan en zei: “Het gebruik van COBOL verlamt de geest; daarom moet het onderwijzen ervan als een strafbaar feit worden beschouwd.” Dijkstra had ook een hekel aan GO TO-uitspraken, met het argument dat ze programma’s bijna onmogelijk te begrijpen maakten. Er is sprake van een echte mate van snobisme: COBOL wordt vaak neergekeken als een puur utilitaire taal die bedoeld is om saaie problemen op te lossen.
Jean Sammet, een van de oorspronkelijke ontwerpers, zag het anders: taal heeft de lastige taak ingewikkelde zaken weer te geven, zoals de sociale zekerheid. Of zoals een andere verdediger schreef: “Helaas zijn er te veel zakelijke applicatieprogramma’s geschreven door programmeurs die nooit hebben geprofiteerd van goed onderwezen, gestructureerde COBOL.” Goede COBOL kan inderdaad zelfdocumenterend zijn, maar het hangt echt af van de specifieke programmeur. Fred Gruenberger, een wiskundige bij de Rand Corporation, zei het zo: “COBOL is, in de handen van een expert, een prachtig hulpmiddel – een zeer krachtig hulpmiddel. COBOL zou, omdat het ergens door een laaggeplaatste werknemer zou worden afgehandeld, een ellendige puinhoop zijn.”



