COBOL is dood...Lang leve COBOL !

COBOL (afkorting van COmmon Business Oriented Language) is dood. Tenminste, als we de uitspraken van een grote groep beslissers in de ICT wereld voor lief nemen. COBOL, een van de eerste gestandaardiseerde programmeertalen, is er al sinds de computer zijn intrede deed in het bedrijfsleven als middel voor het voeren van de bedrijfsadministratie. IBM, NCR, BULL, en noem ze allemaal maar op. Op deze computers werd (en wordt) veelal geprogrammeerd in COBOL.
Miljarden regels code zijn in de loop der jaren ontsproten uit de geesten van al dan niet briljante programmeurs die maar één doel voor ogen hadden : Het bouwen en onderhouden van toepassingen die de business op betrouwbare wijze, stabiel en snel ondersteunt. Niets meer en niets minder.

Onlangs heb ik een artikel gelezen waarin zonder schroom werd gesteld dat COBOL programmeurs geen “echte code” schrijven. C# programmeurs en C++ programmeurs of zelfs Java programmeurs doen dat namelijk wel. Dat zijn de “die hards” die ECHTE code schrijven.

De vraag rijst dan wat “echte code” dan wel precies voorstelt. Is dat low-level access naar lagen in het besturingssysteem ? Of wellicht het schrijven van prachtige recursieve algoritmen die geweldige fractals op het beeldscherm toveren ? Of het aan elkaar knopen van .Net classes en interfaces ? Multi User Dungeon games schrijven ? Dat zal het wel zijn….Echte code. 

Mijn indruk van programmeurs die vinden dat zij “echte code” schrijven is die van slimme geesten die zich bezighouden met het uitvinden van het wiel. Want na al die jaren software ontwikkeling is er voor ieder probleem wel een oplossing bedacht. En in die specifieke gevallen waar dit (nog) niet opgaat kan de oplossing best bestaan uit een combinatie van reeds bestaande deeloplossingen.

Terug naar die dode programmeertaal COBOL. Toen ik in de jaren 80 mijn opleiding tot applicatie ontwikkelaar volgde, en met succes afsloot, werd mij al snel in de oren gefluisterd dat ik COBOL maar moest vergeten en een moderne programmeertaal moest aanleren. C dus. Ik heb dat advies ter harte genomen en ben C gaan schrijven. Leuk taaltje maar dat gehannes met pointers en geheugentoewijzing was toch wel wat lastig en foutgevoelig. Dus schreef ik een laag die in ieder geval het administreren van geheugenallocatie en de bijbehorende pointers voor zijn rekening nam. Dan kon dat niet meer fout gaan. Voor wat betreft geheugen allocatie schreef ik dus geen “echte code” meer ? Als ik in de lijn van de programmeurs uit de vorige alinea denk…Nee dus. Ik schreef code die een zelfbedachte interface aansprak waardoor ik geen fouten meer kon maken met die pointers en het vrijgeven van geheugen. Geen echte code dus. Maar wel door en door betrouwbaar. Overigens heb ik ook een laag geschreven die het manipuleren van strings vrijwaarde van buffer overflows. Wel zo veilig…

Wat heeft dit met COBOL te maken ? Wel, in COBOL ben je als ontwikkelaar nauwelijks met techniek bezig. Dat verzorgt de runtime van COBOL wel voor je. De ontwikkelaar houdt zich bezig met business logica (dat wordt namelijk van hem verwacht) en niet of nauwelijks met technologie.

Prikken in geheugen dat niet bij het data item hoort dat de ontwikkelaar adresseert ? Wordt genadeloos afgestraft door de runtime environment. Schrijven van binaire code (garbage) in een tekstfile ? Kan niet. Geheugen vol midden in de loop van een programma ? Vergeet het maar. Delen door nul ? Mag, komt gewoon nul uit (of dit vanuit wiskundig oogpunt juist is, is een ander verhaal).

Om nog maar te zwijgen van krachtige functies in COBOL als het COMPUTE statement, het snelle ISAM bestandssysteem en de standaards die al van meet af aan zijn vastgelegd en worden bewaakt ten aanzien van alle details met betrekking tot de programmeertaal.

Waarom moet COBOL dan het veld ruimen ? Hier is wel iets voor te zeggen als we ons verplaatsen naar eind jaren 90. COBOL was muf, karaktergeörienteerd, rook nog naar ponskaarten en had een IDE waar niemand echt van onder de indruk was. Jonge mensen waren niet bepaald gemotiveerd om COBOL te leren simpelweg omdat dit werd geassocieerd met HOOFDLETTERS, lange veldnamen, green screens van 80x25 en ga zo maar door. Spinrag alom. Niet leuk om mee te werken dus.

Nu, een kleine 20 jaar verder is het aantal COBOL programmeurs schaars aan het worden en in de gedachten van velen wordt de taal nog steeds verbonden aan het imago zoals hiervoor beschreven. 

Dit misverstand moet nu eens de wereld uit worden geholpen. De COBOL zoals we die nu kennen is veel rijker dan de COBOL van twintig jaar terug. OO technologie is gewoon beschikbaar in COBOL. De IDE van de hedendaagse COBOL is Visual Studio of Eclipse. Hoofdletters mogen nog wel maar hoeft helemaal niet meer. Database access is uiterst eenvoudig geworden. Interfaces naar andere systemen en andere programmeertalen zijn rijkelijk voorhanden. Web interfaces/services worden volledig ondersteund in COBOL.

Kortom, met COBOL kan anno nu hetzelfde gedaan worden als met iedere andere programmeertaal. Zeker op het gebied waar COBOL voor bedoeld is, het ontwikkelen van zakelijke toepassingen die gewoon goed moeten werken, heeft zich nog steeds geen waardig rivaal aangediend. 

Doordat COBOL anno nu niet meer naar ponskaarten ruikt, een hedendaagse IDE kent, OO technologie ondersteunt en gemengd kan worden met andere programmeertalen is de taal weer interessant voor de instroom van jonge ontwikkelaars. Immers, in COBOL kun je hetzelfde als in C# of Java. Alleen is de taal gewoonweg onverslaanbaar als het gaat om het stabiel en snel afhandelen van (financiële en/of logistieke) transacties en berekeningen.

COSS leidt, in samenwerking met een gerenommeerd opleidingsinstituut, ontwikkelaars op in het gebruik van COBOL als programmeertaal voor de afhandeling van business logica. Wij zien sinds eind 2006 begin 2007 een toename van instroom van jonge kandidaten die door grote organisaties als banken en verzekeringsmaatschappijen worden klaargestoomd voor het onderhoud op hun bestaande, in COBOL ontwikkelde, applicaties. Naast COBOL kennis worden deze kandidaten voorzien van extra bagage in de vorm van Microsoft .Net training en C# ontwikkeling. Ofwel, COBOL meets C#...gebruik het beste van twee werelden zonder compromissen.

Naast bovengenoemde opleidingen biedt COSS een 1 daagse short track training in het gebruik van het door COSS ontwikkelde ADF. Dit ADF is een verzameling class libraries waarin alle interactieve onderdelen (GUI) van een applicatie zijn voorgedefinieerd.

Een ontwikkelaar die zowel kundig is in COBOL als .Net/C# is van grote waarde voor al die organisaties die nu leunen op bedrijfskritische COBOL toepassingen en overwegen deze applicaties te moderniseren met behoud van investering. 

Onder moderniseren kan tevens worden verstaan het migreren van applicaties van het mainframe naar Windows Server, het implementeren van een SOA model en web interfaces.

COBOL is niet dood, COBOL leeft…