La resistenza del COBOL: perché un linguaggio di programmazione che ha 60 anni è ancora richiesto

E’ una rarità nel mondo della tecnologia che qualcosa duri più di pochi anni, figuriamoci sei decenni come nel caso del linguaggio di programmazione COBOL. Vediamo perché questo linguaggio è ancora così importante e se svanirà presto.

Nel regno della tecnologia, una cosa che potrebbe generalmente essere considerata una regola è che le cose cambiano costantemente. L’innovazione, specialmente nell’era del cloud, è costantemente in atto e difficile da tenere traccia, poiché una tendenza sposta l’ultima in un gioco sempre più veloce di salto tecnologico. Questo è altrettanto vero quando si tratta di sviluppo software, poiché le software house oramai immerse nel cloud inseguono pipeline CI / CD senza soluzione di continuità, DevOps e pratiche di sviluppo agili.

A contrastare questa tendenza, tuttavia, è il linguaggio di programmazione COBOL, che, nonostante sia stato sviluppato alla fine degli anni ’50, svolge ancora un ruolo fondamentale per molte organizzazioni che eseguono applicazioni aziendali legacy basate su transazioni. Questo linguaggio è ancora molto pervasivo, al punto che ogni tanto saltano fuori notizie che testimoniano la sua esistenza all’interno di sistemi business-critical, evidenziando i vari problemi che il codice COBOL presenta a organizzazioni e sviluppatori.

La permanenza di COBOL è stata all’ordine del giorno di recente poiché la pandemia di Coronavirus mette a dura prova un’ampia gamma di infrastrutture IT. Il linguaggio di programmazione è stato uno dei problemi principali nel programma di stimolo CARES da 2,2 trilioni di dollari del governo degli Stati Uniti e nell’ambito dell’elaborazione di un aumento delle richieste di disoccupazione, con le agenzie statali che incolpano COBOL dei ritardi nell’erogazione degli assegni e in particolare la mancanza di talenti disponibili (che spesso è un vero punto critico). IBM ha anche cercato di risolvere questo problema collaborando con Open Mainframe Project della Linux Foundation lanciando un programma di formazione COBOL gratuito e un forum tecnico che consentisse ai programmatori COBOL di fornire consulenza e competenze gratuite durante l’epidemia.

Anche se questo può sembrare un quadro di un vecchio linguaggio senza speranza che soffoca inutilmente l’innovazione, la presenza del COBOL è più sfumata di quanto possa sembrare. Ci sono molti fattori rilevanti che contribuiscono al motivo per cui le organizzazioni potrebbero voler mantenere COBOL in giro e non è così semplice come sventrarlo e mandarlo nell’oblio. Anche se questo non vuol dire che non ci siano problemi seri con questo linguaggio – e la cultura che la circonda – che devono essere affrontati.

Perché COBOL è ancora così diffuso?

COBOL è stato inizialmente sviluppato nel 1959 come linguaggio di programmazione orientato al business che funzionava quasi esclusivamente su grandi computer mainframe e fungeva da strumento incredibilmente utile per modernizzare quelli che spesso erano processi aziendali basati su carta. Il linguaggio era comunemente usato per l’elaborazione basata sulle transazioni e continua a alimentare molti sistemi finanziari e amministrativi utilizzati dalle banche e dal settore pubblico.

Secondo Reuters , 220 miliardi di righe di codice COBOL rimangono in uso oggi e questo non mostra segni di rallentamento. Le ragioni alla base di ciò sono contrastanti, ma la maggior parte delle volte dipende dal fatto che è abbastanza difficile presentare un business case convincente per strappare e sostituire COBOL. È incredibilmente costoso e complicato farlo, dato quanto è radicato negli ambienti mainframe e la natura monolitica decennale delle applicazioni stesse, come dimostrato dal caso della Commonwealth Bank of Australia che ha sostituito la sua piattaforma bancaria principale basata su COBOL nel 2012 a un costo di oltre 1 miliardo di dollari australiani (749,9 milioni di dollari).

Un altro motivo per cui COBOL è andato avanti così a lungo è semplicemente che le applicazioni possono effettivamente funzionare esattamente come devono e il linguaggio non è necessariamente obsoleto . Derek Britton, responsabile globale del marketing di prodotto presso Micro Focus, custode di COBOL, illustra questo punto, sostenendo che i casi d’uso originali di COBOL sono ancora rilevanti oggi come quando è stato sviluppato per la prima volta.

“Per COBOL, i classici casi d’uso di un linguaggio – che è notoriamente progettato per ‘applicazioni aziendali’ – sono abbastanza evidenti e rimangono veri oggi come lo erano nel corso della storia di COBOL. Le applicazioni COBOL sono la linfa vitale per alcuni dei organizzazioni di maggior successo e gestiscono anche innumerevoli dipartimenti governativi in ​​tutto il mondo “, afferma Britton.

“Si tratta di applicazioni che sfruttano la capacità del COBOL di elaborare grandi mole di dati (necessità di accedere, elaborare, manipolare e creare rapporti su grandi quantità di dati), attività aritmetiche o di elaborazione significative (gestione di calcoli numerici complessi, senza errori) , e lavorando su larga scala (gestendo milioni di transazioni in un breve lasso di tempo). Non sorprende che COBOL rimanga una pietra miliare nel settore bancario, assicurativo, sanitario, logistico e in molti altri settori “.

Quali settori dipendono ancora da COBOL?

Come accennato, ci sono alcuni settori chiave che fanno affidamento sull’infrastruttura COBOL, soprattutto nel settore finanziario, nei servizi governativi, nelle telecomunicazioni e nella sanità. Bola Rotibi, direttore della ricerca presso la società di analisi CCS Insight, afferma che questi settori sono quelli più affamati di talenti degli sviluppatori COBOL, a causa della natura del linguaggio e della sua competenza nei loro rapporti commerciali.

“Le applicazioni COBOL sono utilizzate principalmente nelle applicazioni che richiedono elaborazione delle transazioni, quindi un punto fermo del settore dei servizi finanziari e di altri settori che fanno affidamento sull’elaborazione rapida di un grande volume di transazioni e spesso in batch”, afferma Rotibi.

“I servizi governativi responsabili del calcolo delle entrate fiscali e del pagamento dei benefici ai cittadini, così come le compagnie aeree che gestiscono l’emissione dei biglietti dei passeggeri, richiedono transazioni che devono essere altamente performanti e affidabili. Questo è un motivo fondamentale per cui le loro applicazioni COBOL rimangono cruciali per le loro operazioni commerciali “.

In quanto uno dei principali utilizzatori di COBOL, il settore finanziario è stato uno dei più colpiti dalla pandemia COVID-19. Secondo Vilve Vene, CEO e co-fondatore di European fintech Modularbank, la dipendenza da COBOL e la sfida delle competenze associate sono state una delle tante questioni che sono diventate evidenti a seguito dell’epidemia.

“Il problema che si presenta con i sistemi in esecuzione su COBOL è che l’apertura di questi sistemi al mondo esterno è un processo molto lungo, complesso e costoso”, spiega Vene.

“Finora, abbiamo visto banche investire enormi quantità di denaro per rinnovare i loro sistemi legacy costruendo strati aggiuntivi sopra di essi. Tuttavia, questa non è una soluzione efficace al problema poiché COBOL non è stato costruito fondamentalmente per supportare i flussi in real-time. “

Mentre Vene sostiene che COBOL, così come tutte le infrastrutture bancarie legacy, dovrebbero essere eventualmente sostituite con architetture più moderne per motivi competitivi, afferma che ciò dovrà essere fatto gradualmente “in ordine di priorità” poiché la sostituzione dell’intero sistema sarebbe troppo dirompente .

L’entità della carenza di competenze

Sebbene la carenza di competenze possa essere più evidente durante i principali “picchi” della domanda, come quelli da COVID-19, la questione è rimasta un punto di discussione preoccupante per decenni. La mancanza di talenti è guidata da alcuni fattori chiave, ma uno dei più significativi è la scarsità di istruzione, considerando che i corsi di informatica presso le università in gran parte non insegnano più questo linguaggio, con conseguente grave mancanza di nuovi talenti fra gli sviluppatori più giovani .  

La carenza di competenze intorno a COBOL rimane un problema piuttosto serio per molte organizzazioni, non solo perché molti sviluppatori non hanno familiarità con il linguaggio, ma perché lavorare col COBOL richiede generalmente una comprensione di alto livello, specifica e complessa dell’ambiente applicativo COBOL. Keith Banham, responsabile ricerca e sviluppo mainframe presso Macro 4 e veterano delle tecnologie mainframe da 40 anni spiega questo problema, inquadrando la carenza di competenze come una “crisi” che è più profonda del linguaggio stesso.

“È importante riconoscere che la crisi delle competenze non riguarda semplicemente una carenza di persone che capiscono come programmare nel linguaggio COBOL. Il problema più profondo è la mancanza di conoscenza delle applicazioni. Essere in grado di codificare in COBOL è il primo passo. la parte difficile è capire cosa fa un’applicazione. Se non si dispone di questa conoscenza si corre il rischio di commettere errori “, afferma Banham.

“Uno sviluppatore COBOL esperto con conoscenza di un’applicazione capirà, ad esempio, come la modifica del codice in una parte di un sistema influirà su un’altra parte. Quando si perde questa esperienza, i nuovi sviluppatori non sono consapevoli delle implicazioni di apportare modifiche”.

Un esempio di ciò è l’uso di quaderni da parte dei programmatori COBOL, che consentono loro di inserire la stessa sezione di codice in numerosi punti all’interno del sistema. Chiunque aggiorni quel codice condiviso deve capire esattamente come le sue modifiche influenzeranno tutte le diverse parti del sistema. Questo tipo di vasta conoscenza precedente è estremamente importante nel mondo di COBOL, nella misura in cui le organizzazioni si sono aggrappate in precedenza agli anziani programmatori COBOL perché detengono le “chiavi del regno”, per così dire.  

Gli sviluppatori dovrebbero imparare COBOL ora? 

Dal punto di vista dello sviluppatore, COBOL può essere un linguaggio molto utile da imparare, poiché è ancora ampiamente utilizzato da alcune delle più grandi aziende del mondo, con la stragrande maggioranza delle applicazioni aziendali in esecuzione su mainframe IBM contenenti codice COBOL. Sean Farrington, SVP EMEA per la piattaforma di formazione tecnologica SaaS Pluralsight, afferma che la continua popolarità di COBOL rappresenta un’opportunità interessante per i potenziali sviluppatori, poiché avere una comprensione sia di COBOL che dei linguaggi più moderni è un set di competenze che vale la pena avere.

“Nonostante la sua età, COBOL è ancora alla base di molti dei sistemi finanziari e amministrativi utilizzati dalle banche e dal settore pubblico. Senza le competenze per lavorare con COBOL, questo codice legacy non può essere mantenuto e non può essere nemmeno modernizzato o aggiornato”, spiega Farrington .

“Ad esempio, se le banche tradizionali vogliono stare al passo con le fintech agili, è fondamentale disporre di talenti in grado di lavorare sia con le competenze COBOL che con i linguaggi più recenti. Che si tratti di tradurre COBOL in un linguaggio moderno come Java o Python senza perdere funzionalità, o integrando COBOL con nuovi strumenti, è ancora richiesta la competenza nel linguaggio. E con miliardi di righe di codice COBOL ancora in uso, sarà probabilmente un’abilità di cui gli sviluppatori trarranno vantaggio negli anni a venire “.

Tuttavia, mentre le opportunità di lavoro possono essere opzioni solide ed estremamente sicure per gli sviluppatori COBOL, il lavoro può essere relativamente poco interessante. Poiché gli sviluppatori sono ricercati, i talenti COBOL possono spesso essere classificati in un certo senso, con poche opportunità di espandere i propri orizzonti. Per quegli sviluppatori che cercano di lavorare in un ambiente moderno e in rapida evoluzione come una “start-up”, un lavoro che mantiene un’architettura COBOL vecchia di decenni può essere difficile da vendere. Può anche essere abbastanza difficile iniziare per gli sviluppatori, poiché la sintassi varia notevolmente in altri linguaggi.

La longevità del linguaggio va avanti

Dato che è diffuso e permea la natura all’interno dei settori chiave, è improbabile che COBOL scomparirà del tutto presto. Fondamentalmente, esiste un intero ecosistema di strumenti e servizi che sono cresciuti per supportare e mantenere la longevità delle applicazioni COBOL.

Secondo Rotibi, sebbene siano stati compiuti notevoli sforzi per semplificare il linguaggio per i moderni approcci di sviluppo, si aspetta ancora una mossa sottile e graduale per aggiornare l’infrastruttura COBOL su tutta la linea.

“Penso che continuerà a esserci un passo costante a lungo termine verso la modernizzazione delle applicazioni COBOL esistenti. Ma ciò avverrà nel contesto della strategia di trasformazione digitale di un’organizzazione e anche nel soppesare i vantaggi in termini di costi per la riprogettazione di una soluzione COBOL esistente”, Dice Rotibi.

“Molte applicazioni COBOL continuano ad essere adatte allo scopo per quanto riguarda la logica di business e le transazioni che supportano. Sono stati fatti grandi passi avanti nell’evoluzione delle piattaforme principali che eseguono le applicazioni COBOL, consentendo loro di soddisfare i requisiti di prestazioni operative per le transazioni e le soluzioni applicative moderne. Anche se sono stati compiuti alcuni sforzi per modernizzare alcuni aspetti del linguaggio COBOL, penso che ci siano molte moderne tecnologie software oggi disponibili che soddisfano le esigenze del tipo di applicazioni richieste in futuro “.

Tuttavia, Rotibi ribadisce che ciò non accadrà dall’oggi al domani e che il linguaggio non svanirà, notando i miliardi di righe di codice ancora negli ambienti di produzione. Gli sforzi per modernizzare lo stesso COBOL a cui si riferisce si sono anche consolidati tra i CIO come alternative estremamente praticabili per estrarre completamente il linguaggio e i mainframe associati, a causa dei risparmi sui costi associati. Molti sforzi sono stati fatti per portare COBOL nel 21 ° secolo, tra cui le soluzioni che facilitano COBOL ad affiancare JAVA su mainframe e persino un recente spinta per ottenere le applicazioni COBOL per l’esecuzione come contenitori su kubernetes .

Come ulteriore esempio, Sam Knutson, vice presidente della gestione del prodotto presso Compuware, afferma che gli sforzi di IBM per aggiornare il compilatore COBOL hanno consentito al linguaggio di persistere nel tempo.

“La particolarità di COBOL è il compilatore, che IBM ha svolto un lavoro magistrale migliorandolo continuamente”, spiega Knutson.

“Questi miglioramenti hanno assicurato la velocità e le prestazioni costanti di COBOL e hanno contribuito a mettere a punto il codice macchina per essere più efficace ed efficiente con le risorse di elaborazione più recenti e più grandi sul mainframe. Ecco perché l’economia mondiale gira giustamente su oltre 220 miliardi di linee di Codice COBOL e quel numero aumenta ogni giorno. “

Tuttavia, indipendentemente dal fatto che COBOL abbia un futuro luminoso, insipido o cupo davanti a sé, uno dei suoi principali problemi riguarda la cultura che generalmente lo circonda. Se le organizzazioni desiderano mantenere un pool di talenti adeguato di sviluppatori COBOL, il linguaggio e l’infrastruttura associata devono essere modernizzati in qualche modo che renda più facile la ricerca dei talenti fra gli sviluppatori. Alla fine della giornata, l’ultima cosa che gli sviluppatori moderni vogliono fare è lavorare su un unico linguaggio antiquato e idiosincratico, facendo lavori di manutenzione per il resto della loro carriera.

“Se la tradizionale esperienza degli sviluppatori su mainframe, nota per essere settorializzata in silos, processi rigidi e avversi agli esperimenti e con strumenti basati ancora sulle schermate testuali verdi, non cambia, le organizzazioni non possono aspettarsi di attirare i talentuosi programmatori di nuova generazione che dovranno diventare i prossimi amministratori delle loro applicazioni COBOL mission-critical “, continua Knutson.

“Non possono contare su nuovi sviluppatori se questa cultura Old School Cobol non cambierà. Ciò equivale a sperare che i concorrenti limitino la propria innovazione per garantire all’organizzazione rivale il tempo per recuperare il ritardo, non succederà mai “.