Het valt amper op, maar de computertaal Cobol is ver doorgedrongen in vele aspecten van ons dagelijks leven. In feite zijn er zo'n 180 à 200 miljard Cobol-codelijnen wereldwijd in gebruik en in deze taal geschreven software automatiseert veruit het grootste gedeelte van onze verzekerings- en bankstransacties. Ben Wilson van Anubax belicht in dit artikel het wel en wee van deze historische programmeertaal.
Om te weten te komen waarom Cobol (COmmon Business-Oriented Language, maar ook wel gekscherend omschreven als Completely Obsolete, Burdensome Old Language) in ons dagelijks leven zo'n grote rol speelt, moeten we eerst weten dat het een erfenis uit het verleden is en dus geen hedendaagse uitvinding. Cobol deed zijn intrede in de jaren '60 en de meeste Cobol-programma's zijn dan ook geschreven in de jaren '70 en '80 door de babyboomers. Nu die stilaan met pensioen gaan, is het terecht om bezorgd te zijn over de toekomst van bestaande programma's. Zij overleven immers stilaan hun makers!
Cobol-migraties
Verder moeten we beseffen dat ook vandaag nog, bedrijven nieuwe programma's in Cobol schrijven en in productie nemen. Daarnaast voeren heel wat ondernemingen ook Cobol-migraties uit, waarvan een belangrijk deel zelfs naar Cobol migreert en niet weg van Cobol. Cobol blijft in feite een van de meest populaire bestemmingen in softwaremigratieprojecten. Tussen 2007 en 2008 bijvoorbeeld gaan wij als softwarebedrijf gespecialiseerd in migraties, de ingebruikname van 30 tot 40 miljoen Cobol-lijnen bij verschillende grote banken, verzekeringsmaatschappijen en distributiecentra in heel Europa coördineren.
Hoewel er zoveel Cobol in omloop is, komt het toch als een verrassing dat de jongste generatie van it'ers zo opvallend weinig met Cobol in aanraking komt. Als we kijken naar de it-curricula, zien we dat de aandacht voor Cobol over de jaren heen behoorlijk geslonken is.
Waarom het niet vanzelf weggaat
Voor it-trainingen en academische programma's is het aanleren van opkomende technologieën een vanzelfsprekende prioriteit. Toch kunnen we enkele redenen aankaarten voor de blijvende aantrekkingskracht van Cobol en waarom het leren van deze taal een verstandige investering kan zijn.
Allereerst is broncode in Cobol bijzonder porteerbaar. Je vindt ANSI Cobol standaard compilers zowel op bijna elk hardwareplatform uit de jaren ‘70 en ‘80, als op de mainframe-, Unix-, Linux-, en Windows-platformen van vandaag. Daardoor hoeft een bedrijf weinig risico te lopen wanneer het grote Cobol-toepassingen draait op niet-strategische platforms. Zo'n bedrijf kan de programma's gewoon behouden, maar toch het onderliggende platform vervangen (bijvoorbeeld, via een migratie naar Windows). In zulke gevallen zijn slechts minimale veranderingen aan de code vereist, afhankelijk van variaties bij de implementatie van de Cobol-standaard op de twee platformen.
Ten tweede scoort Cobol erg goed qua verwerkingssnelheid. Op vele platforms presteert deze programmeertaal voor zakelijke toepassingen zelfs beter dan C of C++; en de enige manier om de snelheid van zo'n programma de loef af te steken, is via een ontwikkeling in Assembly. Die sterke verwerkingssnelheid kan wel een migratieproject compliceren, omdat bijvoorbeeld een Cobol-naar-Java-migratie, waarbij het behoud van de sla's voor de verwerkingssnelheid essentieel is, vaak dure onderliggende hardware vereist. Een bedrijf kiest in zo'n situatie ook voor Cobol als doeltaal vanuit een pragmatisch, financieel oogpunt.
Identieke eigenschappen
Cobol is kenmerkend voor de periode waarin het uitgevonden werd, want andere programmeertalen uit hetzelfde tijdperk vertonen veel van dezelfde eigenschappen. Alternatieven zijn dan vaak proprietary programmeertalen en 4GL's, die in tegenstelling tot Cobol, niet geruggensteund worden door een set standaarden die gehandhaafd worden door een internationaal comité.
Het converteren van deze verouderde, proprietary talen naar Cobol kan dan duidelijke business- en technische voordelen met zich meebrengen. Daar zijn drie redenen voor: het uitsluiten van een afhankelijkheid van een leverancier kan op zich reeds een financieel voordeel opleveren en technische risico's doen afnemen; de verwantschap tussen deze talen en Cobol betekent dat conversie goedkoper en sneller is; en ook de onderhoudbaarheid van de oorspronkelijke programma's blijft beter bewaard, aangezien de bron-en doeltalen meer linguistieke eigenschappen gemeen hebben.
Meer dan populariteit alleen
Het is ook niet alleen de populariteit van de taal bij software-ontwikkelaars die voor de huidige omvangrijke legacy gezorgd heeft: Cobol is ook populair binnen software development tools. Zo zijn er code generators en Case-achtige tools zoals Pace, COOL:Gen, PacBase, Telon en zelfs EGL die Cobol kunnen genereren als tussenformaat vóór compilatie. Bedrijven die deze producten hebben, kunnen Cobol-expertise goed gebruiken tijdens troubleshooting en performance tuning, ook al ontwikkelen ze hun software niet per sé in Cobol.
Tot slot is Cobol dé programmeertaal die met de meeste reverse engineering en statische analyse tools compatibel is. Deze tools worden gebruikt bij Application Portfolio Management en ze kunnen Cobol-code zo analyseren dat het automatisch opportuniteiten detecteert voor verbetering, zoals het verwijderen van dode code, het verminderen van gedupliceerde code of de vereenvoudiging van complexe code. De drie meeste verspreide tools zijn WSAA van IBM, Revolve van Micro Focus en de Modernization Workbench van Relativity Technologies. Er is dus een omvangrijke third party tool support voor Cobol.
De come-back van Cobol
Als we de ervaring in de industrie moeten volgen, dan belooft een come-back van Cobol in het it-curriculum moeilijk te worden. De hardnekkigheid van Cobol is een pijnlijke ervaring voor veel bedrijven, want deze computertaal is heel anders dan nieuwe computertalen zoals Java of C#. Het feit dat Cobol zo lang overleeft in de industrie komt ook doordat een manuele omzetting naar jongere programmeertalen een technische kwelling betekent. Verder is een conversie moeilijk te rechtvaardigen in termen van een zakelijk of technisch voordeel.
Dit is een harde les voor velen. Er bestaan genoeg cases uit de twee laatste decennia van bedrijven die de uitdaging aangingen om van Cobol naar Java over te stappen en dit halverwege moesten opgeven omdat de complexiteit van de oefening begon door te dringen bij de aandeelhouders. Steeds opnieuw bleek de computertaal, waarin de programma's geschreven waren, van minder belang te zijn dan de tevredenheid van gebruikers over de functionaliteit en de applicaties die op een betrouwbare manier de business lieten draaien.
Klaar voor de toekomst?
Cobol mag dan wel al oud zijn, de taal heeft tijdens de voorbije tien jaar verschillende facelifts ondergaan (en overtreft daarmee gemakkelijk Java). Wat bedrijven vaak over het hoofd zien, is dat Cobol vandaag ondersteuning biedt voor objectoriëntatie, XML-parsing, en – dankzij de uitbreidingen van toolvendors – ook integratiemogelijkheden voor J2EE, .NET, webservices, event-driven programming en volledig grafische gebruikersinterfaces. De zaken zijn zo geëvolueerd dat je Cobol-programma's nu kunt schrijven, debuggen, compileren, en zelfs testen met de meest geavanceerde ontwikkeltools, zoals Eclipse en Visual Studio. Cobol heeft al een hele weg afgelegd sinds de CUI (character based user interface) development tools zoals ISPF.
Weinig migratiespecialisten raden aan om software van de ene taal naar de andere te converteren zonder duidelijke strategische en financiële argumenten. Toch volgen deze gespecialiseerde softwarebedrijven nog de wil van hun klanten bij het uitvoeren van migraties. De huidige generatie informaticastudenten moet zich daarom van het volgende vergewissen: Cobol is niet alleen nog altijd springlevend – vooral in de financiële industrie in heel Europa -, maar de aanwezigheid van Cobol neemt op sommige plaatsen zelfs toe.
Ben Wilson, directeur onderzoek en ontwikkeling Anubex
Lessen in Cobol
Uit een enquête van Anubex over it-opleidingen (oktober 2007) blijkt dat van de 37 ondervraagde hogescholen en universiteiten in België en Nederland tijdens het academiejaar 2007-2008 nergens Cobol wordt aangeleerd. Nu blijkt bij sommige scholen de boodschap toch aan te slaan en is de come-back van Cobol gestart. Een aantal progressieve academische instellingen zijn al bezig met de nodige voorbereiding voor het academiejaar 2008-2009. Eén voorbeeld hiervan vinden we terug in de Karel de Hogeschool in Antwerpen, België.
"We zijn van plan om in onze opleiding opnieuw een cursus te integreren over legacy systemen en Cobol. Natuurlijk zullen we Cobol niet meer op dezelfde manier doceren als vijf jaar geleden. Nu moet een student eerder een Cobol-programma kunnen aanpassen, dan het zelf vanaf nul te moeten schrijven. Verder is het belangrijk dat onze studenten begrijpen hoe je moderne grafische gebruikers interfaces kunt koppelen aan de klassieke Cobol", zegt Koen Schram, hoofd toegepaste computerwetenschappen aan de Karel de Grote Hogeschool. "Voor onze school, gespecialiseerd in toegepaste computerwetenschappen, is het belangrijk dat wij nu al inspelen op de vraag vanuit de industrie en op basis daarvan onze cursussen organiseren. Dit is precies wat we doen met Cobol: onze studenten klaarstomen om op een nieuwe manier te werken met de technologie van gisteren."
Het omzetten van programma’s van Cobol naar java of .net etc, is komplete WAANZIN !!!!!!
COBOL is een stabiele zichzelf documenterende taal indien gebruik gemaakt wordt van Verklarende namen voor de velden.
Geen { of } en N nivo’s diep.
Nee elke zin in Cobol begint op een bepaalde plaats en eindigd.
De bedoeling is dat ook een gebruiker met een beetje kennis het programma kan lezen, en weet waarom er op een lijst iets anders komt dan dat hij of zij verwacht bij een gegeven invoer.
Een meer algemenere taal is PL1 en de daarvan afgeleide talen zoals Quickbasic, Visual basic PASCAL, PL/SQL en de niewste versie van RPG-ile(native taal op de IBM i-Series(As/400). Zie: nl.wikipedia.org/wiki/IBM_System_i
JAVA en C zijn zijn geen talen, maar meer een spraakgebrek.
Probeer maar eens via telefoon een andere programmeur te vertellen hoe het programma er uitziet.
Het verschil tussen Hoofd en kleine letter van het alphabet veroorzaakt gigantisch veel fouten.
Miswschien heeft die fout ook 750.000 aangiftes laten verdwijnen.
A is in die talen iets anders dan a.
Waarom ??. Scheelde 40 jaar geleden opslagcapaciteit. Namen van variablen waren maar 2 posities groot.
Daarom op de brabdstapel met die talen.
Voor bedrijfstoepassingen zijn ze dodelijk. Niemand kan controleren wat die programma’s doen.
De van PL1 afgeleide talen kan iedereen met een beetje verstand van de opdrachten lezen.
IF Xxx = yyYy then
blabLa (YyyY)
else
blabla (XXX)
End if
De huidige syntax checkers zijn krachtig genoeg om te begrijpen wat bedoelt wordt met zoiets.
Schrijf dat eens in Java C
De reden om C te gebruiken was meestal dat het dicht tegen Assembler aanlag en het daardoor mogelijk was om direct interfaces aan te sturen.
De huidige compilers, zeker die van de System i, zijn krachtig genoeg om snelle efficiente code op het nivo van de machine interface te genereren.