Guvernatorul statului New Jersey a menționat recent limbajul de programare COBOL, un instrument tehnologic vechi de șase decenii. Dar ce reprezintă exact acest limbaj? Și cum se explică faptul că, deși este cunoscut de foarte puțini specialiști, el continuă să fie fundamental pentru infrastructura financiară globală?
Originile limbajului COBOL
Grace Hopper a fost o figură remarcabilă. A obținut un doctorat în matematică la Yale, a predat la Vassar și a avansat până la gradul de contraamiral în Marina SUA. Impactul ei în domeniul informaticii este evidențiat de numărul de fundații și programe create în onoarea sa. Centrul Național de Calcul Științific de Cercetare Energetică și-a denumit supercomputerul Cray XE6 în onoarea ei, iar Marina a numit distrugătorul său de rachete ghidate USS Hopper, având ca deviză „Aude et Effice” („Îndrăznește și Fă”), o expresie care i s-ar fi potrivit perfect lui Hopper.
Încurajată de necesitatea unui limbaj de programare mai accesibil, mai apropiat de limbajul uman decât codul mașină, Grace Hopper a creat primul compilator. Acest pas a deschis calea pentru apariția limbajelor compilate timpurii, cum ar fi FLOW-MATIC, fapt care i-a asigurat un loc în cadrul Conferinței/Comitetului pentru Limbaje de Sisteme de Date (CODASYL) în 1959.
Ea a avut un rol esențial și în specificarea și elaborarea limbajului COBOL (Common Business-Oriented Language). Prima întâlnire a comitetului a avut loc pe 23 iunie 1959, iar raportul și specificațiile limbajului au fost publicate în aprilie 1960.
Inovațiile aduse de COBOL
COBOL a introdus câteva concepte revoluționare, cel mai important fiind capacitatea de a funcționa pe echipamente produse de diverși fabricanți, o premieră la acel moment.
Limbajul a fost structurat pentru a oferi programatorilor un vocabular apropiat de cel al limbii engleze, permițând gestionarea unor cantități mari de date și oferind o precizie matematică ridicată.
Vocabularul său de cuvinte rezervate (cuvintele fundamentale ale limbajului) numără aproximativ 400. Programatorii combină aceste cuvinte pentru a crea programe cu sens sintactic.
Orice programator familiarizat cu alte limbaje va confirma că 400 este un număr extrem de mare de cuvinte rezervate. Pentru comparație, limbajul C are 32, iar Python are 33.
O altă caracteristică particulară a limbajului COBOL este cerința ca anumite linii de cod să înceapă în coloane specifice, o moștenire din era cartelelor perforate. Astăzi, programatorii au mai multă flexibilitate în formatarea codului COBOL, și nu mai sunt obligați să scrie totul cu majuscule. Deși acest lucru face lucrul cu el mai puțin restrictiv, COBOL rămâne o creație a epocii sale, așa cum se vede în exemplul următor:
IDENTIFICATION DIVISION. PROGRAM-ID. Hello-World. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. PROCEDURE DIVISION. MAIN-PROCEDURE. DISPLAY "Hello world, from How-To Geek!" STOP RUN. END PROGRAM Hello-World.
Succesul limbajului COBOL
Majoritatea tranzacțiilor efectuate prin bancomate sunt încă procesate cu ajutorul limbajului COBOL.
Deși pare greu de crezut în prezent, COBOL a fost un limbaj revoluționar la momentul lansării sale. A fost adoptat pe scară largă în sectorul financiar, în administrația publică și în marile companii și organizații, datorită scalabilității, capacităților sale de gestionare a loturilor mari de date și preciziei matematice. Implementat pe mainframe-uri din întreaga lume, COBOL a devenit o componentă solidă și durabilă a infrastructurii tehnologice.
Dependența noastră de sistemele bazate pe COBOL este impresionantă. Un raport Reuters din 2017 prezenta următoarele date uimitoare:
- Există 220 de miliarde de linii de cod COBOL încă utilizate astăzi.
- COBOL stă la baza a 43% din sistemele bancare.
- Sistemele care rulează pe COBOL gestionează tranzacții zilnice de 3 trilioane de dolari.
- COBOL se ocupă de 95% din tranzacțiile efectuate prin bancomate.
- 80% din tranzacțiile cu cardul de credit sunt posibile datorită limbajului COBOL.
Așa cum se poate vedea, este greu să treacă o zi fără a utiliza un sistem care se bazează pe COBOL. Conturile bancare, serviciile de compensare a cecurilor, dar și infrastructuri publice precum bancomatele și semafoarele, încă funcționează cu ajutorul acestui cod scris acum decenii.
Problema COBOL
Specialiștii care cunosc limbajul COBOL sunt fie pensionari, fie aproape de pensie, fie, în unele cazuri, nu mai sunt în viață. Pierdem constant persoanele cu abilitățile necesare pentru a menține aceste sisteme vitale în funcțiune. Noii programatori nu cunosc limbajul COBOL și, în general, nu doresc să lucreze pe sisteme vechi sau să dezvolte cod nou pentru acestea.
Această problemă este atât de serioasă, încât Bill Hinshaw, un veteran al limbajului COBOL, a fost nevoit să iasă din pensie pentru a fonda COBOL Cowboys. Această firmă de consultanță privată oferă servicii clienților corporativi care nu găsesc specialiști în COBOL. „Tinerii” de la COBOL Cowboys (al căror motto este „Not Our First Rodeo”) au peste 50 de ani. Ei consideră că 90% din sistemele de afaceri ale companiilor Fortune 500 funcționează pe COBOL.
Desigur, companiile private, corporațiile și băncile nu sunt singurele care trebuie să gestioneze volume uriașe de date financiare. Serviciile guvernamentale, atât la nivel federal, cât și local, au aceleași cerințe, folosind mainframe-uri și limbajul COBOL pentru a le satisface.
Pandemia de coronavirus a condus la dificultăți economice pentru proprietarii de afaceri, angajați și cei care lucrează pe cont propriu. Numărul mare de concedieri și șomaj din New Jersey a determinat guvernatorul statului să solicite sprijin din partea programatorilor COBOL experimentați pentru a ajuta la gestionarea sistemelor de backend învechite, care sunt copleșite de volumul de cereri noi.
Proiectul Open Mainframe coordonează o inițiativă de voluntariat pentru a oferi sprijin în această situație. Dacă considerați că puteți ajuta, sunteți încurajați să contactați organizația.
New Jersey nu este singurul stat care se confruntă cu această problemă. Peste 10 milioane de oameni s-au înregistrat pentru șomaj, iar numărul este în continuă creștere. Connecticut se luptă să proceseze un sfert de milion de noi înregistrări cu sistemele statului care au 40 de ani.
Aceasta este o problemă vastă și profund înrădăcinată. Un raport al Oficiului de Responsabilitate Guvernamentală din 2016 menționa sisteme COBOL care rulează pe mainframe-uri de până la 53 de ani. Printre aceste sisteme se numără cele utilizate pentru gestionarea datelor Departamentului pentru Afaceri Veteranilor, Departamentului de Justiție și Administrației Securității Sociale.
De ce nu se face o actualizare?
Modernizarea acestor sisteme vechi nu este atât de simplă precum pare. Ele sunt esențiale și susțin funcționarea constantă a lumii financiare, guvernamentale și de afaceri. Codul este vechi, stratificat și adesea slab sau deloc documentat. În plus, sistemele trebuie să funcționeze tot timpul. Situația a fost comparată cu scoaterea elicelor de pe un avion și încercarea de a-l echipa cu motoare cu reacție, în timp ce acesta este în aer.
Pe lângă riscuri, argumentul economic pentru migrarea la sisteme moderne este, de asemenea, un impediment. Costurile pentru menținerea funcțională a acestor mainframe-uri și aplicații COBOL sunt uriașe. Ar trebui instituțiile să abandoneze totul și să înceapă de la zero, atâta timp cât codul COBOL încă rulează și funcționează? Aceasta este o decizie dificilă pentru o conducere care nu este neapărat foarte familiarizată cu tehnologia. O migrație de la COBOL nu ar fi nici ieftină, nici rapidă.
„Tocmai am trecut printr-o conversie de la COBOL la Java”, a spus Hinshaw. „A durat patru ani, și încă nu este completă”.
Când Commonwealth Bank of Australia a înlocuit platforma sa centrală COBOL în 2012, procesul a durat cinci ani, cu un cost final de 749,9 milioane USD.
Și asta când lucrurile merg conform planului. Banca britanică TSB a fost forțată să migreze de la un sistem bazat pe COBOL în 2018, din cauza unei achiziții. Migrarea nu a fost un succes. Banca a fost incapabilă să efectueze tranzacții timp de mai multe zile, iar costul migrației a ajuns la 330 de milioane de lire sterline, în plus față de bugetul inițial alocat pentru lucrările de inginerie necesare migrației. TSB a mai pierdut 49,1 milioane de lire sterline din cauza fraudei financiare în timp ce sistemele sale se defectau.
Compensațiile acordate clienților au depășit 125 de milioane de lire sterline, iar banca a trebuit să cheltuiască 122 de milioane de lire sterline pentru angajarea de personal nou care să gestioneze cele 204.000 de reclamații ale clienților. Directorul executiv și-a dat demisia, iar compania încă gestionează consecințele, la doi ani de la eveniment.
Dilema COBOL
Situația actuală nu poate continua la nesfârșit, dar perspectivele de a schimba ceva nu sunt deloc încurajatoare. Cu toate acestea, singura modalitate de a îmbunătăți lucrurile este să efectuăm migrații controlate și atente către software și hardware modern.
Pentru a realiza acest lucru fără întreruperi, pierderi de date și perioade de nefuncționare, va fi nevoie de expertiză modernă și resurse financiare. Aceasta reprezintă o jumătate din soluție. Cealaltă jumătate este formată din experiența și timpul necesar pentru lucru cu COBOL. Din păcate, acestea sunt cele două ingrediente pe care aproape le-am epuizat.
Poate că o nouă generație de „cowboy-i” COBOL va veni în ajutor.