prof. Nunzio Brugaletta |
LinPROG |
Gli sforzi volti a cercare di inventare linguaggi di programmazione che mettessero a disposizione strumenti sempre più potenti e semplici per la codifica di algoritmi, ha portato alla fine della metà del secolo scorso alla nascita di due linguaggi, di concezione diversa rispetto all'Assembly, e dedicati alla scrittura di algoritmi riguardanti la risoluzione di problemi legati alle applicazioni dei computer in quegli anni: il Fortran (1954) per lo sviluppo di applicazioni scientifiche e il COBOL (1961) per lo sviluppo di applicazioni gestionali, tuttora, per la loro solidità, utilizzati. I nomi sono acronimi, rispettivamente, di Formula Translation e Common Business Oriented Language.
Si tratta dei capostipiti della famiglia dei cosiddetti linguaggi 3GL (Third Generation Language, linguaggi di Terza Generazione).
IDENTIFICATION DIVISION. PROGRAM-ID. SOMMA. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. COBOL85. OBJECT-COMPUTER. COBOL85. DATA DIVISION. WORKING-STORAGE SECTION. 77 NUM1 PIC 99. 77 NUM2 PIC 99. 77 SOMMA PIC 99. PROCEDURE DIVISION. MAIN SECTION. DISPLAY “Primo numero da sommare “ ACCEPT NUM1. DISPLAY “Secondo numero da sommare “ ACCEPT NUM2. ADD NUM1 NUM2 GIVING SOMMA. DISPLAY “Somma dei numeri “ SOMMA. FI-MAIN. STOP RUN.
L'esame delle caratteristiche generali del listato riportato, anche se la natura del COBOL è quella, come osservato, di applicazioni gestionali che utilizzano file su memorie di massa, e quindi di programmi molto diversi da quello di esempio, mette in evidenza le peculiarità dei linguaggi di terza generazione.
Nella dichiarazione delle variabili (nella DATA DIVISION nel COBOL) le variabili non fanno più riferimento a byte o word come è richiesto dall'Assembly, ma, in forma più generale, si fa riferimento a tipi: numerici o alfanumerici. Ci si astrae dalle esigenze della macchina e ci si avvicina alla logica di chi scrive il programma che, per esempio, se deve scrivere l'istruzione per effettuare una somma, la scrive prescindendo dallo spazio riservato alle variabili o dal tipo specificato di variabili (intere o virgola mobile).
Le istruzioni, come quella per la somma presente nel programma di esempio, sono codificate in modo da evidenziare il tipo di operazione da fare e come essa si concretizza nella mente del programmatore più che come viene conservata nella memoria di un computer. La corrispondenza con il linguaggio macchina non è 1:1 come nell'Assembly, ma 1:n. Ad una istruzione di un linguaggio 3GL corrisponde un blocco di istruzioni macchina.
La terza generazione dei linguaggi di programmazione è chiamata anche la generazione dei linguaggi procedurali. Con questo termine si intende un paradigma di programmazione che prevede di sviluppare il programma come composto da un insieme di istruzioni raggruppate e delimitate da opportuni caratteri o parole chiavi. In ogni blocco di codice sono descritte le azioni che deve svolgere il computer per conseguire i risultati attesi.
I linguaggi di programmazione appartenenti a questa generazione nascono come strumenti messi a disposizione per scrivere programmi di una certa categoria: il Fortran per le applicazioni scientifiche, che hanno la caratteristica di richiedere molti calcoli su un insieme ristretto di dati, il COBOL per quelle gestionali che invece hanno caratteristiche opposte: pochi calcoli ma su una massa enorme di dati. Per la loro natura specialistica questi linguaggi vengono chiamati anche algoritmici.
Mano a mano che si ampliavano i campi di applicazione dei computer, nascevano nuovi linguaggi di programmazione che mettevano a disposizione strumenti specialistici per la risoluzione di algoritmi di una certa classe. Un linguaggio 3GL è composto da un insieme finito di parole chiavi scelte in modo da rendere semplice la scrittura di alcuni algoritmi. Per esempio in Fortran esistono istruzioni per il calcolo della radice quadrata o per il calcolo del seno di un angolo, istruzioni che non esistono, invece, in COBOL: chi sviluppa programmi gestionali non ha infatti alcun bisogno del calcolo di radici quadrate o del seno di un angolo, cosa invece comune per chi sviluppa applicazioni di carattere scientifico. Per chi ha necessità di utilizzare applicazioni di altro tipo occorrono altri strumenti; ecco quindi la nascita di speciali linguaggi per particolari applicazioni.
http://ennebi.solira.org |
ennebi@solira.org |