Il linguaggio di programmazione che non vuole morire

(Immagine:: Shutterstock / Gorodenkoff)

I sistemi bancari, commerciali e governativi del mondo sono sostenuti da un linguaggio di programmazione sviluppato oltre mezzo secolo fa, ma attualmente sono poche le persone che sanno ancora usarlo.

Creato nel 1959 dalla Dott.ssa Grace Hopper e dal suo team, COBOL ha sopportato il passare del tempo con grande successo, con oltre 220 miliardi di righe di codice stimate ancora in uso oggi. Se non fosse per FORTRAN, inventato cinque anni prima, COBOL avrebbe il titolo di più vecchio linguaggio di programmazione attivo al mondo.

La bellezza di COBOL, secondo i suoi sostenitori, sta nella sua semplicità, stabilità e affidabilità, ciò ha permesso al codice di essere ampiamente accettato e adottato fin da subito.

 "COBOL è stato creato ancor prima che esistessero ingegneri del software o sviluppatori, nell'accezione moderna del termine”, osserva Barry Baker, vicepresidente di IBM Z Software. "Utilizza parole inglesi ed è stato progettato per gli utenti aziendali. Pertanto, è stato semplice da utilizzare fin da subito, così come è facile da leggere, modificare e correggere." Tuttavia, l'utilizzo di un linguaggio di programmazione vecchio di decenni, non importa quanto possa essere affidabile, comporta anche dei lati negativi. 

I sistemi non richiedono manutenzione o aggiornamenti anche per molti anni, e visto che parliamo di oltre sessant'anni fa, è molto probabile che gli sviluppatori originali siano probabilmente morti da tempo. Nonostante la sua antichità (riferendosi al breve contesto della storia dell'informatica), il linguaggio continua a sostenere sistemi mission-critical nei settori pubblico e privato, e la carenza di competenze potrebbe avere effetti devastanti, percepiti non soltanto da piccole e medie imprese, ma anche dai singoli cittadini.

A cosa serve COBOL?

COBOL funziona principalmente su computer mainframe, utilizzati dai governi e dalle grandi compagnie per svolgere carichi di lavoro intensivi, come elaborazioni batch, analisi dei dati e funzioni contabili su larga scala.

Oggi, i servizi di cloud computing come AWS e Microsoft Azure sono in grado di eseguire questi stessi tipi di attività senza la necessità di possedere voluminoso hardware fisico, che inoltre, si rivela anche molto costoso da alloggiare e mantenere.

Nonostante l'emergere del Cloud computing, tuttavia, il mercato dei mainframe è vivo e vegeto, e di conseguenza, anche COBOL lo è altrettanto.

Due società svolgono un’opera eccezionale nella manutenzione di COBOL e sono considerate dai più, come i custodi del linguaggio: IBM e Micro Focus.

IBM domina il mercato mainframe con il suo IBM Z, che è ormai interoperabile con il Cloud da diversi anni. Annunciata a settembre, l'ultima versione (IBM z15) è progettata espressamente per supportare ambienti Cloud ibridi ed è in grado, grazie a COBOL, di elaborare un trilione di transazioni al giorno.

(Image credit: IBM)

Micro Focus, nel frattempo, fornisce strumenti di sviluppo e modernizzazione specifici per COBOL alle organizzazioni che si affidano a tale linguaggio. Ideale per l'elaborazione di record nei database e per l'analisi di grandi volumi di dati, COBOL si trova spesso nel settore finanziario, delle telecomunicazioni, dell'aviazione e della sanità, nonché nei sistemi governativi." È un linguaggio che è stato appositamente progettato per essere facile da usare e per traslare la logica di business nelle applicazioni e soddisfare i requisiti di elaborazione delle transazioni dei principali sistemi di infrastruttura utilizzati da molte organizzazioni operanti in questi settori", ha spiegato Bola Rotibi, direttore della ricerca per lo sviluppo software presso la società di analisi CCS Insight.

"Esistono pochissime applicazioni e transazioni finanziarie in tutto il mondo che non sono servite in tutto, o in parte, da un'applicazione COBOL, anche nelle odierne operazioni digitalmente abilitate". In effetti, secondo i dati di Reuters, il 43% dei sistemi bancari statunitensi è basato su COBOL, mentre un enorme 80% delle transazioni di persona e il 95% delle interazioni ATM dipendono da tale linguaggio.

I mainframe IBM Z, nel frattempo, elaborano circa l'87% delle transazioni con carta di credito, $8 trilioni di pagamenti e 4 miliardi di voli passeggeri ogni anno, dichiara IBM. COBOL è stato anche aggiornato più volte da quando è stato sviluppato per la prima volta, il che, secondo Baker, è "una misura chiave per mantenere funzionale il linguaggio". Le applicazioni COBOL precedenti, ad esempio, possono essere facilmente ricompilate ed eseguite nel Cloud o in ambienti consolidati come Linux e Windows.

(Image credit: IBM)

E a cosa non serve?

Probabilmente COBOL non avrebbe superato la prova del tempo se non avesse saputo adempiere a una vasta gamma di funzioni in maniera eccellente, ma ovviamente non è scevro dai limiti intrinsechi della sua età. "COBOL funziona bene per quello per cui è stato progettato" è il ritornello comune tra i più esperti del linguaggio. In altre parole, il codice è scarsamente adatto quei casi d'uso moderni che si sono presentati dopo la sua creazione.

Ad esempio, progettato molto prima che esistesse Internet, il linguaggio non è adatto per facilitare il livello di interazione e dinamismo richiesto dalle applicazioni mobili e web. Secondo Baker, quando sono emersi nuovi carichi di lavoro, COBOL ha dovuto cedere il passo a linguaggi più recenti, come Python e Java. "La popolarità di un linguaggio di programmazione, è dovuta alle preferenze degli sviluppatori, alla necessità di utilizzare nuovi paradigmi di programmazione, come quella orientata agli oggetti, e nuovi tipi di carichi computazionali, come il calcolo ad alte prestazioni, l'analisi e l'apprendimento automatico”, ha affermato.

I moderni linguaggi di programmazione sono anche più rigorosi ed efficienti di COBOL, un vantaggio per gli sviluppatori che lavorano spesso in tempi ristretti. "COBOL era e continua ancora ad essere prolisso", ha detto Rotibi a TechRadar, "ciò significa che sono necessarie molte più righe di codice per eseguire un comando, rispetto a quanto accade con altri linguaggi."

COBOL code

(Image credit: MicroFocus)

Anche negli scenari in cui COBOL dovrebbe prosperare, l’età del linguaggio ha iniziato a farsi problematica. Negli ultimi mesi, i sistemi basati su COBOL sono stati ritenuti incapaci di tenere il passo con il numero di richieste di disoccupazione ricevute da più Stati USA, in quanto la disoccupazione è salita alle stelle nel paese a causa della pandemia di coronavirus. La mancanza di sviluppatori COBOL disponibili ha costretto il governatore del New Jersey, Phil Murphy, a emettere un appello pubblico per cercare volontari in grado di scrivere codice in un linguaggio vecchio di decenni. "Abbiamo letteralmente un sistema che ha più di 40 anni", ha lamentato.

Il sistema mal ottimizzato e obsoleto si basava su codice COBOL scritto anni fa e ha causato gravi ritardi, con effetti significativi negativi sulla vita dei richiedenti, senza ombra di dubbio. Adrian Keward, Principal Solution Architect presso la società di software open source Red Hat, ritiene che le organizzazioni siano riluttanti a confrontarsi con la presenza di vecchi sistemi COBOL, soprattutto perché hanno sempre funzionato perfettamente, ma ciò ha anche comportato un atteggiamento pericoloso nei confronti della manutenzione e nell'aggiornamento di tali sistemi.

"Moltissimo codice COBOL è ancora in uso, ma sempre meno persone sono in grado di capirlo e utilizzarlo, di questi tempi. Di conseguenza, il linguaggio tende a essere trascurato, finché non diventa necessaria la sua sostituzione ", ha spiegato. "Poiché non è stato necessario modificare nulla nel codice COBOL per molti anni, la maggior parte delle aziende che lo usano, hanno un approccio del tipo “se funziona, perché aggiustarlo?”.

Perché COBOL è passato di moda?

Degli sviluppatori che hanno ancora familiarità con COBOL, molti stanno arrivando a fine carriera; solo l'11,5% ha meno di 35 anni, mentre il 18,8% ha più di 55 anni. La popolarità del linguaggio ha avuto una parabola discendente dal 2002 circa, passando a essere il 5° linguaggio di programmazione più popolare, contro il 33° oggi, anche se negli ultimi anni ha goduto di una piccola rinascita. Quindi, come potrebbe un linguaggio usato così ampiamente per un insieme così vitale di necessità andare alla deriva verso l'oscurità?

I fattori in gioco sono numerosi, ma il principale tra questi è il semplice fatto che COBOL non era più considerato interessante dai talenti emergenti dell'informatica. Almeno fino a un certo punto, COBOL è stato poco considerato, poiché l’interesse verso i linguaggi più moderni lo ha relegato in secondo piano. Secondo John Pyke, CEO della società di migrazione di vecchi sistemi CIMtrek, "l'IT è un'industria che segue la moda, e i neolaureati sono desiderosi di lavorare su progetti nuovi e importanti. Di solito questi sono realizzati in linguaggi come Java e C#, per creare applicazioni molto interattive e basate su API."

Java

(Image credit: Shutterstock / BEST-BACKGROUNDS)

Con il linguaggio che stava progressivamente passando di moda, le università sono state disincentivate a tenere corsi di COBOL per i propri studenti. Ciò ovviamente è andato ad aggravare il problema, che si è palesato solo a posteriori, quando la carenza di competenze tra gli sviluppatori più giovani ha iniziato a farsi sentire in maniera evidente. "COBOL è passato di moda per due motivi", suggerisce Keward. “In primo luogo, mancano le università che organizzano corsi per insegnare agli studenti come utilizzarlo e padroneggiarlo. In secondo luogo, i progressi tecnologici hanno spostato le operazioni dai mainframe alle architetture client-server e il linguaggio Java ha contribuito ampiamente ad accelerare il processo. L'innovazione ha vinto sulla stabilità."

Nel tentativo di correggere lo squilibrio di competenze (e presumibilmente per prolungare la vita del linguaggio da cui traggono profitto), sia IBM che Micro Focus hanno avviato separatamente alcune iniziative di rilancio. Spinta dalla pandemia, IBM ha avviato un nuovo corso, progettato sia per i principianti che per i professionisti che richiedono aggiornamenti di COBOL. Ha inoltre lanciato un'iniziativa che collega i programmatori COBOL con i potenziali datori di lavoro.

Individuando una flessione delle competenze di COBOL, Micro Focus ha collaborato con aziende e università per istituire il programma accademico COBOL, che fornisce accesso gratuito agli strumenti di insegnamento più recenti. La società gestisce anche un gruppo Facebook di programmatori COBOL, con circa 15.000 membri. "Dinosauri, programmatori COBOL vecchi e nuovi e altri schiavi del codice sono tutti benvenuti.", recita la pagina Informazioni del gruppo, che dice più sul linguaggio di chiunque potrebbe fare in 2.000 parole.

Cosa impedisce alle aziende di liberarsi di COBOL?

La difficoltà più significativa per le aziende che desiderano ridurre la loro dipendenza da COBOL è data dal volume di codice in circolazione. Il processo non rappresenta necessariamente una sfida tecnica insormontabile, ma presenta certamente una sfida logistica. Secondo Pyke, l'entità della situazione potrebbe essere paragonata all'aggiornamento dei sistemi resosi necessario negli anni precedenti al Millennium Bug, quando le organizzazioni hanno tentato di mettere una pezza ai propri sistemi informatici per adattarli a un anno che richiedeva la corretta differenziazione di quattro numeri in luogo di due (ovvero 2000, invece di 99).

"Ripensandoci 20 anni dopo, la quantità di denaro e le risorse impiegate per ridurre l'impatto del Millennium Bug dovrebbe almeno dare un'idea del compito erculeo necessario per superare la dipendenza da COBOL", ha detto. Il colosso bancario Capital One è tra le grandi imprese che cercano disperatamente di ridurre al minimo la dipendenza dal linguaggio e sta affrontando le forche caudine, svolgendo il lavoro necessario per dismettere i propri mainframe.

"Il funzionamento dei mainframe non è solo più costoso dell’utilizzo del Cloud, ma essi non offrono la capacità di ridimensionare rapidamente le funzionalità e non consentono alle aziende di trarre vantaggio dall'open source", ha affermato Joseph Muratore, vicepresidente di Capital One. "Stiamo lavorando quanto più rapidamente possibile per modernizzare le ultime applicazioni mainframe rimanenti ed eliminare la dipendenza di Capital One da COBOL... Molte aziende sottovalutano la natura globale completa di questo tipo di trasformazione", ha aggiunto.

(Image credit: Shutterstock / Elle Aon)

Nel caso di Capital One, lo stato delle cose ha reso sensato l’allontanamento da COBOL e dal mainframe, ma questo non è necessariamente il caso di tutte le aziende che utilizzano tale linguaggio. "Nella maggior parte dei casi, un'organizzazione ha effettuato investimenti significativi sui propri sistemi COBOL nel tempo, incluso lo sviluppo di ulteriori IP e processi per supportarli", ha dichiarato a TechRadar il dirigente di Micro Focus Derek Britton. “Questi sistemi chiave offrono vantaggi reali e generalmente coinvolgono dati business-critical. Eliminarli per ricominciare da zero può rendere inefficienti tali investimenti e mettere a rischio entrate importanti".

In effetti, secondo un recente sondaggio eseguito da Micro Focus, una grande parte delle aziende non ha alcuna intenzione di abbandonare completamente il linguaggio, forse a causa del lavoro gravoso dell'attività di dismissione o semplicemente per via delle spese da sostenere. Oltre due terzi (70%) delle imprese intervistate hanno affermato di aver favorito la modernizzazione come approccio per attuare il cambiamento, invece di dismettere e rimpiazzare le applicazioni chiave scritte in COBOL.

Nel frattempo, quasi tutti gli intervistati (92%) hanno affermato che COBOL rimane di importanza strategica nei nuovi ecosistemi. Tutto ciò fa capire che vedremo il secondo linguaggio di programmazione più vecchio del mondo ancora per molto tempo. Per le organizzazioni il cui rapporto economico con COBOL rende impossibile migrare (e per i quali la lingua svolge ancora perfettamente la sua funzione), l'unica soluzione al dilemma del divario di competenze è un maggiore impegno nella formazione del personale e nella manutenzione dei sistemi, necessario ben prima che comincino a manifestarsi malfunzionamenti. Senza queste misure vitali, si potrebbe arrivare al caso limite in cui le organizzazioni si troverebbero senza nessuno che sappia mantenere le applicazioni critiche basate su COBOL.