Op 23 augustus gaat de vlag uit, want veertig jaar geleden kreeg Cobol op die datum de ANSI-standaard X3.23 en werd het een officieel goedgekeurde programmeertaal. De 40-jarige programmeertaal geniet nog steeds de voorkeur bij grote transactionele systemen. Immer springlevend maar met met één schaduwkant: de Cobol-programmeur is een uitstervend ras. Het wordt een stil feestje.
Het is de tijd van ponskaarten, van machinetaal, van de eerste commerciële computer (Univac) in wording. Het is de tijd dat wiskundige Grace Hopper het programmeerwerk (destijds een beproeving) een elegantie meegeeft om in begrijpelijk Engels een applicatie te bouwen. Gewoonlijk zijn programma's in die tijd een onbegrijpelijke reeks wiskundige symbolen. Het is de tijd dat velen nog denken dat vijf computers wel de hele wereldbehoefte afdekken. Een tijd dat programmeertalen zijn gebonden aan hardware.
In 1959 ontstaat, gebaseerd op het harde werk van ‘Amazing Grace' (de bewonderende bijnaam die zij later verwierf), Cobol: Common Business Oriented Language. Deze programmatuur is wél platformonafhankelijk en in ‘gewone mensentaal' geschreven. Aan de code zelf is af te lezen wat het programma uitvoert; hetgeen met talloze regels cijfers en andere wiskundige symbolen niet het geval is.
Het spreekt voor zich dat deze eigenschap een zegen is voor het onderhoud van programmatuur, je ziet immers in de code waar het over gaat. En typisch voor Cobol: een regel mag niet meer dan tachtig tekens bevatten. Dit heeft te maken met de breedte van de ponskaarten.
Patronen
Veertig jaar oud en nog steeds springlevend in de meeste rekencentra. Dat is welhaast een ongepastheid in deze industrie die zich kenmerkt door hype-cycles. ‘Onze eigen' Edsger W. Dijkstra bleek niet erg ingenomen met de programmeertaal. "Het gebruik van Cobol verminkt de geest; het onderwijzen ervan zou daarom dan ook moeten worden beschouwd als een criminele daad", is één van zijn meest geciteerde uitspraken.
Waaraan is het succes (want dat kun je toch wel stellen met wereldwijd nog steeds tweehonderd miljard regels code in productiesystemen) dan toch te danken?
Daar zijn verschillende redenen voor. Met de natuurlijke taal kan het niet meer te maken hebben, want jongere talen bedienen zich ook al lang niet meer van ‘machinecode'. Steven Klusener, wetenschapper bij de Vrije Universiteit Amsterdam, vindt het lastig te begrijpen waarom Cobol zo'n stabiele factor is al die jaren. "Een mogelijke verklaring is dat men in de Cobol-wereld gebruik maakt van wat nu bekend staat als design/coding patterns."
Cobol-opdrachten moeten consistent corresponderen met het bijbehorende machinecode patroon. "Daardoor zijn Cobol-applicaties naar verhouding redelijk gemakkelijk – zelfs deels geautomatiseerd – te onderhouden door anderen. Momenteel ben ik op de universiteit bezig om voor een grote financiële instelling dergelijke patronen in kaart te brengen. Punt is namelijk dat de Indiase offshore-partner deze patterns (aanvankelijk) niet kende."
Bewezen technologie
Er zijn natuurlijk meerdere redenen voor de populariteit van Cobol. Zo is het, met zo'n lange geschiedenis, de meest gedocumenteerde programmeertaal ter wereld. En er zijn legio ‘best practices' waaruit mensen kunnen putten. Met deze taal spreken we van ‘bewezen technologie'.
Ordina heeft nog steeds veel strategische klanten die Cobol gebruiken. Zo heeft bijvoorbeeld de Rabobank zijn Cobol-beheer uitbesteed aan deze dienstverlener. Alexander Bosschaart is principal consultant bij Ordina en praat vanuit de dagelijkse praktijk over de grote belangstelling die de taal nog steeds geniet.
Zesduizend miljard euro
"Als het om grote, transactionele systemen gaat, dan is Cobol efficiënt en het best te onderhouden. Bovendien is – vooral bij de financiële instellingen – alles ooit begonnen met Cobol. Dat zijn enorm grote systemen geworden en daardoor zijn ze moeilijk te vervangen. Dit is eigenlijk ook niet nodig, want de processen blijven in de basis hetzelfde. De regels voor bijvoorbeeld het uitrekenen van rentes veranderen niet", legt Bosschaart uit. Toch zijn veel bedrijven bezig met het vervangen van hun oude technologie, vaak aangeduid als ‘legacy'.
Een Cobol-systeem met tienduizend functiepunten is geen uitzondering. Een functiepunt is een maatstaf voor de omvang van een programma, gebaseerd op de hoeveelheid ict-functionaliteit. "Dat vervang je niet zo maar", aldus Bosschaart. "Een simpele rekensom leert dat vervanging van alle Cobol-programmatuur door een andere programmeertaal grofweg uitkomt op zesduizend miljard euro. Dat betekent dat we nog lange tijd Cobol-programmatuur blijven houden."
Mengsel van programmeertalen
In deze tijd van het uitbesteden van (onderdelen van) de ict-dienstverlening, doet Ordina veel assessments op Cobol-systemen. Dat moet een indruk geven van de kwaliteit en onderhoudbaarheid van een applicatie. In het kader van de onderhoudbaarheid worden regelmatig delen van applicaties vervangen of opnieuw gebouwd.
Uit die code assessments blijkt dat de kwaliteit van de Cobol-code in zijn algemeenheid als ‘goed' valt te kenschetsen. "Maar er zijn natuurlijk altijd systemen die in de loop der jaren veel zijn gepatcht en slecht zijn gedocumenteerd." Ook in dat geval is het vaak goedkoper om te revitaliseren dan de programmatuur te vervangen.
Overigens ziet hij – wereldwijd – niet veel nieuwbouw en zeker al niet van grote systemen. Wel is er veel aandacht voor de koppeling van grote Cobol-systemen met de ‘voorkant' die veelal in Java of .NET zijn geschreven.
Bosschaart vindt dat een mengsel van programmeertalen tot goede resultaten kan leiden. Cobol voor de hoogfrequente, transactionele systemen en bijvoorbeeld Java of .NET voor de ‘webwinkels'. "Je bouwt een wolkenkrabber toch ook niet met baksteen? Daar gebruik je staal en beton voor; en eventueel baksteen als gevelversiering."
Schaarste aan Cobol-ontwikkelaars
Er is dus nog steeds behoefte aan Cobol-programmeurs, vaak denigrerend Cobol-krassers genoemd. "Er zit wel enige waarheid in die schimpnaam, want een nadeel is dat bij Cobol altijd de nadruk is gelegd op het programmeerwerk, het schrijven, en er veel te weinig aandacht was voor het bedrijfsbelang dat een programma dient, voor de mensen die ermee moeten werken. Die bredere visie zie je bij modernere talen wel terug", meent Bosschaart.
Hij en Klusener maken zich wel zorgen over de vergrijzing van de groep Cobol-ontwikkelaars. Cobol wordt niet meer onderwezen op universiteiten en hogescholen, waardoor er geen sprake meer is van een evenwichtige (leeftijds)verdeling binnen het totale aanbod aan Cobol programmeurs. "De schaarste zal het op termijn weer aantrekkelijk maken om Cobol te gaan leren", verwacht Bosschaart.
De Karel de Grote Hogeschool in Antwerpen onderkent dit en heeft voor het komende academische jaar weer een academische opleiding legacy systemen en Cobol opgenomen. Ook Ordina wil binnenkort weer beginnen met een Cobol-opleiding.
Zoals het er nu naar uitziet, zullen er echter weinig feestgangers zijn als Cobol in augustus zijn officiële verjaardag viert.
Verschillende versies
Cobol is eind 1959 in slechts zes maanden ontwikkeld door de Conference on Data Systems Languages (Codasyl). In januari 1960 krijgt de taal de goedkeuring van de Amerikaanse overheid, vandaar dat deze versie Cobol60 heet. In 1961 volgt een nieuwe versie, met aanvullingen daarop in 1962 en 1963 die uiteindelijk leiden tot Cobol-61 extended.
Vervolgens is de taal overgedragen aan het American National Standards Institute dat in 1968 consensus bereikt en Cobol als een officieel aanvaarde standaard neerzet. De internationalisering leidt ertoe dat ISO (International Standards Organisation) zich over de taal buigt en een nieuwe versie uitbrengt: Cobol-85.
De meest recente versie verscheen, na diverse malen te zijn uitgesteld, in 2002: logischerwijs Cobol-2002 geheten. Hierin zijn moderne functies als objectgeoriënteerd programmeren en automatische validatie opgenomen. De Nederlander Wim Ebbinkhuijsen heeft zich tientallen jaren eerst nationaal en later op internationaal niveau opgesteld als ‘Cobol-hoeder' en wordt als één van de vaders van de moderne versie gezien.
Uiteraard zijn er tal van dialecten ontstaan, ontwikkeld door bijvoorbeeld IBM, HP, CA, Tandem en Fujitsu. Tachtig procent van de Cobol-programma's is geschreven in de versie S-390 Cobol van IBM, verwijzend naar het besturingssysteem OS/390 dat IBM voor zijn System 390-mainframes (S/390) heeft gemaakt.
Anno 2008 wordt er gewerkt aan een uitbreiding van de 2002-standaard, die krijgt ondersteuning voor XML ingebouwd. De ontwikkeling van Cobol is dus nog in volle gang.
Efficiënter met geheugen
Cobol gaat veel doelmatiger om met computergeheugen dan objectgeoriënteerde talen, zoals Java en .NET. Een reden te meer, aldus principal consultant Alexander Bosschaart bij Ordina, om bij de ‘moedertaal' te blijven. Objectoriëntatie werkt met overerving, polyformisme en distributie van functionaliteit over verschillende objecten. De regie is niet centraal, hetgeen tot uiting komt in willekeurige en veelvuldige benadering van de database en dat leidt weer tot een hoog cpu-verbruik (duur) en veel i/o (trage responstijden). Klassieke Cobol-programmeurs schrijven sql-queries in nauwe samenhang met de databasebeheerder om tot een optimaal toegangspad te komen. Dat is met ‘object orientation" (OO) vrijwel onmogelijk.
Java legt dynamisch beslag op geheugen dat automatisch weer vrijkomt als het niet meer nodig is. Dit mechanisme – onder de naam garbage collection – gebruikt cpu en kost dus geld. Cobol gebruikt geheugen statisch. Bij het begin vraagt het programma geheugen aan en geeft het weer vrij als het klaar is. Hier is geen garbage collecter voor nodig.
Ook het instantiëren in een OO-taal kost extra cpu-gebruik. Voor elk logisch deel van een record wordt namelijk een object gecreëerd dat eigen geheugen nodig heeft. In Cobol is het mogelijk een record uit de database te lezen en direct te be- en verwerken.
"Objectgeoriënteerde talen zijn rationeel gezien de komende jaren geen alternatief voor Cobol bij de realisatie van de businesslogica voor grote bedrijfskritische administratieve systemen", meent Bosschaart.
Even om volledig te zijn: Tussen Cobol-68 en Cobol-85 zit natuurlijk een hele belangrijke versie namelijk Cobol-74.
–Dat is met object orientation (OO) vrijwel onmogelijk.
wat een bullshit.
indien je prut programmeert in java/c of in cobol
dan krijg je prut.
nooit gehoort van prepare once execute many times.??
kan ook in OO en dus ook in java….
Overigens moet je statements zelf closen en freeen in
java/cobol/c .
Nadeel van java is dat de garbage collector dat niet voor je doet; in c maak je een destructor die dat voor je doet….
Mijn geest is na 10 jaar Cobol nog steeds niet verminkt en uitspraken over andere talen dan Cobol kan ik ook wel doen, maar vanwege mijn beroemdheid zal ik wel niet geciteerd worden.
Mocht mijn geest toch nog verminken dan heb ik in ieder geval een ezelsbruggetje voor de leeftijd van Cobol, even oud als ik.
Schaarste? Dat wordt al jaren geroepen. Waarom liggen de tarieven voor Java en .net specialisten hoger? Kwestie van vraag en aanbod, trek uw conclusie.
Sinds ik het ponskaartentijdperk heb verlaten word ik om de zoveel jaar geconfronteerd met artikelen die vol verbazing de volhoudendheid van Cobol vaststellen en het komend tekort aan cobolprogrammeurs aankondigen. De redenen worden in het artikel genoemd.
De belangrijkste redenen zijn de betrouwbaarheid in bedrijfskritische transactionele processen en de investeringen die zijn gedaan. Welk bedrijf heeft die processen niet? Waarom meewaaien met de hypes in een tijdperk waar IT als een commodity wordt gezien en niet als een statussymbool. Het draait immers om bedrijfsprocessen en een betrouwbare ondersteuning. Aan de gestructureerde manier waarop cobol bijvoorbeeld errorroutines afdwingt zou menig modern systeem een voorbeeld aan kunnen nemen. Een tekort aan cobolprogrammeurs is overigens een fabeltje. Iedereen die gestructureerd kan denken, kan in cobol programmeren. Het is misschien niet ?cool?, maar dat is een pak yoghurt in vergelijking tot een drinkontbijt ook niet. Beide hebben echter hetzelfde doel.
Het wordt tijd dat de ITer de rol aanneemt van business process engineer en in de ?supermarkt? van IT oplossingen het best mogelijke alternatief kiest en het naar de processen boetseert. Cobol aangevuld met nieuwe techniek heeft daar zeker een blijvende plaats naast oracle, sap en andere nieuwe generatie systemen. Ik wacht op de vijftigste verjaardag van cobol en geniet daarnaast van nieuwe technieken. Best of both worlds.
Andre Trachsel
SAP IS-U interfaces consultant