GUIDE

Storia dei Linguaggi di Programmazione

“A long time ago, in a galaxy far, far away….

Siamo arrivati al secondo episodio della (si fa per dire) rubrica Programmazione: Parliamone. Quello che sto per raccontarvi è la storia dei linguaggi di programmazione nel periodo di massima crescita, dal dopoguerra in su. E’ bene precisare come sia una storia tragica, ricca di colpi di scena, con forti scene di sesso e tanto, tanto sangue.

Ma anche no.

Durante gli anni Quaranta, definiti da me il periodo duro e oscuro della programmazione, i linguaggi non erano ancora stati concepiti come noi li intendiamo. Esistevano delle macchine da programmare, contenenti la propria particolare struttura ed il proprio tipo di linguaggio da utilizzare. Nel campo dell’informatica, infatti, vigeva l’anarchia dei linguaggi macchina. I programmatori di un tempo potevano scrivere del codice solo nel veloce ma complicatissimo linguaggio macchina che la CPU non doveva traslare. Il codice veniva direttamente posto all’interno del processore. Lo svantaggio era composto dal fatto che, essendo assolutamente simile a codice binario, erano davvero in pochi a portarlo utilizzare e gli errori erano davvero facili da creare. Con la riduzione delle dimensioni delle macchine, gli scienziati™ si misero al lavoro per risolvere questi enormi svantaggi che non permettevano una sana evoluzione in questo campo.

Venivano quindi creati il linguaggi che avrebbero composto la Seconda Generazione dei linguaggi di programmazione. Evoluzione della prima generazione, questi linguaggi erano ancora molto simili al linguaggio macchina, ma avevano la caratteristica di trasformare delle precise istruzioni in simboli più facili da utilizzare per i coders. Anche in questo caso, il codice veniva direttamente assemblato all’interno della CPU come se non ci fosse stato un domani venendo trasformato in linguaggio macchina ed aveva un tasso di compatibilità veramente basso. Questo significava nuovamente che ogni architettura aveva ancora il proprio linguaggio.
I vantaggi erano una velocità incredibile ed una massima ottimizzazione del codice per quell’esatta architettura; la complessità del codice, la sua lenta curva di apprendimento, gli svantaggi. Gli scienziati, non ancora contenti, decisero quindi di elevare la programmazione ad un livello ancora più astratto ed abbandonarono la velocità che caratterizzava le precedenti generazioni per una migliore usabilità. Da allora, questo grezzo assembly (o assembler) venne utilizzato solamente per lavori che richiedessero una stretta collaborazione dell’hardware quali driver grafici, parti di kernel, videogames, rendering ed elaborazione video.

Nacque quindi la Terza Generazione dei Linguaggi di Programmazione insieme al concetto stesso di Linguaggio ad alto livello. La rivoluzione partì dagli anni Cinquanta e Sessanta con l’invenzione dei linguaggi che avrebbero inspirato tutti i successori: Fortran, ALGOL e COBOL. Questi pezzi di storia portarono alla luce concetti fondamentali nella programmazione odierna come variabili, funzioni, loop e puntatori. Bastarono pochi anni perché altri due linguaggi storici si facessero vivi, facendo scoprire al mondo la facilità del BASIC e la leggerezza del PASCAL. Entrambi contribuirono fortemente alla ricerca e riuscirono nell’intento di portare la programmazione nelle scuole. Le caratteristiche di questi linguaggi erano la necessità di un programma che traducesse o interpretasse il codice in linguaggio macchina, creando di fatto la categoria dei Linguaggi Compilati, ed una marcata lontananza dall’Assembly che aveva semplificato estremamente la situazione a tecnici e studiosi.
Ci vollero però gli anni Settanta per far sì che il pezzo grosso, baluardo, esempio da seguire e capo supremo di tutti i linguaggi si facesse avanti. Nel 1973, il C scese in campo. Caratterizzato inizialmente da una povertà di funzioni e da una rigida sintassi, questo fighissimo pezzo di gnocca linguaggio acquistò in poco tempo la condizione di must-have del piccolo programmatore, diventando così popolare a causa della sua versatilità da venir inserito in tutto ciò che era possibile, rimpiazzando la maggior parte del codice assembler contenuto in driver e kernel vari e creando così il primo vero pilastro della programmazione in grado di fare da ponte tra i diversi livelli d’astrattezza dei linguaggi.

Questa storia sarebbe potuta finire con cotanta bellezza se solo non fosse stato per la venuta dell’ Anticristo dell’informatica. Dieci anni esatti dopo l’apparizione del C, entrò in campo il C++ (si plas plas) che, con le sue classi e l’ eleganza del C, scatenò l’apocalisse. Come un angelo nero, portò morte e distruzione tra i ranghi dei coders, distinguendosi in magie come Confusionedaoperatore, multitthreadingneancheconmastercard e sintassipeggioredellastoria, aprendo però completamente la strada alla fantasmagorica e tanto blasonata Programmazione Orientata agli Oggetti. Questa svolta epocale creò le basi per la costruzione di interfacce grafiche così come le conosciamo ora ed illuminò la strada a linguaggi come Java, Delphi e C#. Lentamente, nacquero linguaggi misti come Python, Perl, Ruby e PHP e dagli anni Novanta ad oggi la situazione rimase praticamente invariata.

Teoricamente, la storia non finisce qua, poiché esistono altre due generazioni di linguaggi di programmazione. La Quarta e la Quinta Generazione contengono dei linguaggi che non sono adibiti ad un uso generale, bensì cercano di spostare l’attenzione su particolari settori come la matematica e l’elettronica, inserendo progettazione visuale, database e una tendenza alla risoluzione di problemi logici. Possiamo ricordare come esempi MATLAB, LabVIEW, SQL e Visual Basic. La Quinta Generazione si è inoltre specializzata sulla ricerca robotica, ponendo particolare attenzione sulla costruzione di Intelligenze Artificiali e patterns neurali. Due linguaggi particolarmente importanti sono il Lisp ed il Prolog poiché, essendo stati scritti decenni prima che anche solo si immaginasse tale livello logico (In particolare il Lisp che è considerato il secondo linguaggio di programmazione ad alto livello più vecchio subito dopo il Fortran), sono dei capolavori di ingegno, pionieri di un futuro che ancora non esiste. Infatti, quest’ultima generazione non si è ancora imposta, essendo tuttora in fase di ricerca nei laboratori di tutto il mondo, e diventerà popolare solamente quando la robotica sarà una realtà apprezzata e sviluppata nella nostra vita giornaliera.

Link di Approfondimento
Storia dei linguaggi di programmazione
Breve biografia dei linguaggi più utilizzati
Generazioni dei Linguaggi di Programmazione

[more]La prossima puntata è ancora in fase di progettazione. Molto probabilmente, comunque, si tratterà dei concetti di base contenuti in ogni linguaggio degno di questo nome.[/more]
[more]Grazie ad tutti per i consigli :) [/more]

Top 10 Scienze e Nuove Scoperte 2019
Top 10 Scienze e Nuove Scoperte 2019
Uber-paradigmi di programmazione
Debugging: la maledizione del programmatore
Alla ricerca del compilatore perduto
Basi ed acidi dei linguaggi di programmazione
Linguaggi di programmazione: parliamone!
Python e Ruby