Cos'è COBOL? Spiegazione della programmazione COBOL

Alcune tecnologie non muoiono mai, si limitano a svanire nel legno. 

Chiedi allo sviluppatore di software medio informazioni su COBOL (Common Business Oriented Language) e ti guarderanno come se avessi menzionato la carta carbone, la benzina con piombo o il record di 78 giri / min. Rispetto a linguaggi moderni come Go o Python - o anche Pascal o C! - COBOL sembra prolisso, goffo, passé.

Ma COBOL ha resistito. Lungi dall'essere una tecnologia obsoleta dalla quale abbiamo felicemente separato l'azienda, COBOL è diventata un'istituzione. Enormi codebase COBOL sono ancora in uso in tutto il mondo, molti dei quali funzionano quasi esattamente come erano quando sono stati creati per la prima volta. Nel gergo hollywoodiano, il linguaggio COBOL ha "gambe".

Quindi, sì, COBOL è ancora rilevante e tempestivo, dolorosamente così, in effetti. Negli ultimi mesi COBOL è rientrato nella coscienza pubblica, poiché stati come il New Jersey hanno lanciato un appello ai programmatori per aiutare a spostare le loro applicazioni COBOL nel 21 ° secolo.

In questo articolo vedremo le origini di COBOL, come il design del linguaggio di programmazione si distingue anche oggi e cosa rende COBOL così duraturo e così intrattabile.

Storia COBOL

COBOL è nato alla fine degli anni '50 e all'inizio degli anni '60. Lo sviluppo del linguaggio è stato un progetto sponsorizzato dal Dipartimento della Difesa degli Stati Uniti (DoD) che includeva un consorzio di aziende di computer tra cui IBM, Honeywell, Sperry Rand e Burroughs. L'obiettivo era creare un linguaggio di programmazione con i seguenti attributi:

  • Portabilità tra i sistemi informatici, rendendo così più facile la migrazione del software sia tra generazioni di hardware che tra produttori di hardware.
  • Sintassi più simile all'inglese rispetto ad altri linguaggi dell'epoca (ad esempio, FORTRAN) come un modo per incoraggiare la programmazione da un pubblico più ampio, anche se a scapito di una certa velocità operativa.
  • La capacità di accogliere futuri cambiamenti nella lingua.

Le prime specifiche COBOL ufficiali furono pubblicate nel 1960. Nel decennio successivo, e con costernazione dei suoi critici, COBOL divenne la scelta predefinita per la scrittura di applicazioni aziendali. Una delle ragioni della sua rapida diffusione sono stati gli effetti di rete: IBM, uno dei collaboratori originali del linguaggio, è diventato un precursore aggressivo e la presenza dominante di IBM nel mondo dei computer ha contribuito a contribuire all'adozione di COBOL.

Grazie ai suoi vantaggi di design e al supporto dell'industria dei pesi massimi, COBOL è rimasto in piedi, sopravvivendo con un ampio margine ai sistemi originali per cui era stato progettato. Secondo varie stime, nel 1970 COBOL era il linguaggio di programmazione più utilizzato al mondo. Nel 1997 si credeva che COBOL gestisse circa l'80% delle app aziendali.

Linguaggio COBOL

I progettisti di COBOL ruppero con la sintassi concisa di altri linguaggi di programmazione all'epoca (di nuovo, come FORTRAN). L'idea era di creare un linguaggio di programmazione che potesse essere letto e compreso da non programmatori, in particolare contabilità, finanza, assicurazioni e altri professionisti aziendali.

Considera un programma "ciao mondo" scritto in un dialetto antico di COBOL:

DIVISIONE IDENTIFICAZIONE.

ID PROGRAMMA. CIAO MONDO.

DIVISIONE PROCEDURA.

DISPLAY "Hello World!".

VISUALIZZAZIONE FINALE.

STOP RUN.

Per gli sviluppatori di software moderni cresciuti sulla concisione di linguaggi come Python, questo codice è dettagliato. Ma la verbosità di COBOL (se non la sua esecuzione) deriva dalla stessa presunzione che informa i linguaggi moderni come Python: quel codice viene letto molte più volte di quanto non sia scritto, quindi dovrebbe essere scritto per essere leggibile.

Un programma simile in una versione più moderna di COBOL potrebbe essere simile a questo:

ID programma. Ciao.

divisione procedure.

visualizzare "Hello world!".

smettere di correre.

Sebbene questo esempio sia più conciso, si applicano gli stessi principi di base: il codice si sforza di essere esplicito su ciò che sta accadendo ad ogni passaggio.

COBOL ha regole rigide per quanto riguarda la sintassi e l'organizzazione interna dei programmi. Un programma COBOL è esplicitamente suddiviso in sezioni, o divisioni , che semplificano l'individuazione e la comprensione dei suoi componenti a colpo d'occhio:

  • Divisione identificazione: essenzialmente una sezione di metadati, contenente dettagli sul programma, il suo autore e così via.
  • Divisione ambiente: contiene dettagli sull'ambiente di runtime, ad esempio alias per dispositivi esterni, che potrebbero richiedere modifiche durante l'esecuzione del programma su hardware diverso. Ciò ha favorito la portabilità di un programma tra i sistemi, dove ad esempio l'I / O potrebbe essere gestito in modo completamente diverso.
  • Divisione dei dati: contenente  le sezioni file e archiviazione di lavoro , la divisione dati descrive i file e le variabili (rispettivamente) utilizzati nel programma.
  • Divisione delle procedure: il codice del programma effettivo risiede qui, suddiviso in unità logiche chiamate sezioni, paragrafi, frasi e istruzioni . Si è tentati di analogizzare queste strutture a moduli o funzioni, perché servono all'incirca le stesse funzioni (dividendo il codice in blocchi, con input e output vincolati) ma sono molto meno flessibili.

COBOL ha anche regole di formattazione estremamente rigide per il codice, fino al numero di spazi che precedono un comando. (Gli utenti Python lo troveranno familiare!) Alcune di queste restrizioni sono un sottoprodotto del raggiungimento della maggiore età di COBOL durante l'era mainframe degli anni '60, quando i programmi erano codificati su schede perforate e l'esatta formattazione delle righe di 80 colonne contava . Ma altre restrizioni di formattazione impongono la leggibilità.

L'idea alla base della rigida irreggimentazione dei programmi COBOL è di renderli il più auto-documentati possibile. Dopo tutto, i programmi COBOL tendevano a rimanere in vigore per anni o decenni. L'intento (se non sempre il risultato finale) era quello di rendere ogni programma COBOL un artefatto che qualsiasi programmatore COBOL potesse comprendere, anche anni dopo, senza l'aiuto del programmatore che lo ha creato. 

Sfide COBOL

Gran parte della continua prevalenza - e inerzia - di COBOL deriva dal fatto che le applicazioni COBOL, una volta scritte, tendevano a essere lasciate sul posto indefinitamente, con solo piccole modifiche. Più l'app era grande e mission-critical, meno era probabile che venisse disturbata. I mainframe, come le offerte IBM, hanno svolto un ruolo chiave: sono stati progettati per essere altamente compatibili con le versioni precedenti e per eseguire software legacy, come le app COBOL, su generazioni di hardware con modifiche minime. Il risultato: miliardi di righe di codice COBOL in esecuzione sostanzialmente invariate per decenni.

Negli anni COBOL si è evoluto, anche se lentamente. Anche ora ha una variante orientata agli oggetti, OO-COBOL, che include il supporto per funzionalità moderne come Unicode, impostazioni locali e tipi di dati più avanzati oltre a stringhe e numeri interi. Ma COBOL mantiene aggressivamente la compatibilità con le versioni precedenti, quindi anche questi miglioramenti ed estensioni aderiscono al mandato che le applicazioni COBOL esistenti devono continuare a essere eseguite.

Non tutte le scelte di progettazione del linguaggio COBOL sono state apprezzate dai programmatori COBOL. Alcuni hanno portato a programmi eccessivamente complessi che si sono rivelati difficili da comprendere o eseguire il debug, scoraggiando riscritture o miglioramenti. Il GO TOcomando di COBOL , come la sua controparte in C, consentiva ai programmatori di saltare liberamente all'interno di un programma e quindi scrivere applicazioni più potenti. Ma l'uso indisciplinato di GO TOpotrebbe trasformare un programma COBOL in un nido di riferimenti incrociati difficili da rintracciare.

La programmazione COBOL oggi

COBOL sopravvive oggi in poche incarnazioni. IBM mantiene attivamente le proprie implementazioni COBOL e sostiene molte applicazioni COBOL esistenti laddove vengono eseguite. Micro Focus COBOL è un'edizione COBOL commerciale che viene eseguita su Microsoft Windows, compila applicazioni COBOL in Java e .NET e distribuisce anche in ambienti cloud come Azure. Troverai anche implementazioni open source di COBOL, come GnuCOBOL, che sono disponibili gratuitamente e si compilano in codice macchina nativo. Tuttavia, potrebbero mancare di alcune delle funzionalità di distribuzione o debug più avanzate dei COBOL commerciali.

Mentre COBOL rimane ampiamente utilizzato, la profonda competenza COBOL sta diventando sempre più difficile da ottenere ogni anno che passa. Di conseguenza, molti ex programmatori COBOL devono essere indotti a ritirarsi dal pensionamento per portare le vecchie applicazioni nel 21 ° secolo. Spesso, non è la conoscenza della programmazione COBOL quella più importante, ma una profonda comprensione degli ambienti mainframe in cui viene eseguito COBOL. Molte applicazioni COBOL lavorano mano nella mano con tecnologie legacy come i sistemi di database e di gestione delle transazioni IMS e CICS di IBM, che richiedono competenze sempre più rare.

Così, per quanto COBOL possa sembrare vecchia scuola, la necessità di competenze linguistiche e ambientali di sviluppo COBOL è cresciuta ogni anno che passa. Gli annunci di lavoro per COBOL e le relative competenze abbondano. Nel marzo 2020, il New Jersey ha inviato una chiamata di emergenza ai programmatori COBOL per aiutare a migliorare i sistemi di sussidi di disoccupazione statali sulla scia del crunch COVID-19.

Impara COBOL

Le risorse di apprendimento per COBOL stanno nuovamente proliferando, data la crescente domanda per la lingua. Gli sviluppatori moderni che vogliono essere al passo con questo linguaggio più duraturo hanno alcune opzioni:

  • L'Università di Limerick, in Irlanda, offre un corso completo di programmazione COBOL online, per gentile concessione del suo Dipartimento di Computer Science and Information Systems. Non è aggiornato come alcune altre risorse, ma dato quanto poco COBOL cambia nel tempo, non è necessariamente un difetto.
  • L'Open Mainframe Project (parte della Linux Foundation) offre anche risorse COBOL. Uno è un corso completo di programmazione COBOL, co-sponsorizzato da IBM. È più moderno del corso dell'Università di Limerick e adattato all'implementazione zOS di IBM di COBOL, che è una versione ampiamente distribuita del linguaggio.

COBOL è stato un punto fermo dell'informatica aziendale per decenni e la domanda di talenti di programmazione COBOL continua a crescere. Se ti interessa mantenere o modernizzare i programmi COBOL, il tempo sembra più maturo che mai per tuffarti.