[Podcast] 1×06: Antichi Linguaggi (di programmazione) perduti
Nuova puntata del podcast decisamente impegnativa: al pari degli Archeologi ‘veri’, abbiamo esplorato la storia dei linguaggi di programmazione con un approccio biologico/evoluzionistico.
Ricordiamo che le puntate dei podcast di Archeologia Informatica sono disponibili anche su iTunes.
Carlo, Simone ed io siamo partiti con una definizione del linguaggio di programmazione, della formalizzazione delle sequenze di istruzioni da far eseguire ai vari tipi di elaborazione.
Formalizzazione di sintassi e regole per la definizione di algoritmi codificati.
Abbiamo trattato argomenti storici e personaggi come Ada Lovelace, la figlia di Lord Byron, che è considerata la madrina dei linguaggi di programmazione, avendone fornito l’idea e le prime specifiche a Charles Babbage.
Abbiamo citato i telai Jacquart, la cui ‘programmazione’ consiste un esempio di ‘archeo-sistemi a controllo numerico’.
Va riportato anche il sistema utilizzato Hermann Hollerith, il fondatore di IBM, che utilizzò sistemi automatici (da lui sviluppati) su schede perforate per il censimento di fine 19mo secolo da parte del governo federale USA.
Abbiamo anche cercato di dare alcuni elementi sull’annosa querelle tra “nasce prima il software, nasce prima il linguaggio di programmazione”.
Per mantenere un’elevata quota rosa abbiamo citato Grace Hopper, la sua influenza sulla nascita dei compilatori e del Cobol ed abbiamo citato una vecchia ma ottima puntata di TeknoDiggaz.
Ci siamo soffermati sulla differenza tra linguaggi interpretati e compilati, sulle differenze tra i codici sorgenti ed eseguibili.
Abbiamo fornito alcune note sui linguaggi per poi analizzarne la storia ed evoluzione; abbiamo stabilito differenti periodi storici, partendo dalla prima metà del XXmo secolo cercando di stabilire un’esatta cronologia dei linguaggi di programmazione.
Anni ’40: La preistoria e la guerra.
I linguaggi arcaici, logica cablata, valvole, molto hardware, schede perforate, le bombe di Turing etc. (di cui abbiamo parlato anche nel primo episodio del podcast).
La prima età del linguaggio.
Anni ’50: le prime “forme di vita complesse”.
Compaiono vari linguaggi sempre più formali, dedicati a problemi matematici; vengono poste le basi per LISP e Fortran, la prima versione del linguaggio di programmazione scientifico per eccellenza.
Anni 60: l’era dei giganti.
“L’esplosione cambriana”: concordemente alla crescita esponenziale dell’hardware, aumentano anche i problemi affrontabili con computer sempre più potenti, piccoli e disponibili ad un maggior numero di persone.
Cobol/CICS diventa il linguaggio di programmazione ‘business’ più utilizzato.
Nasce il Basic, che dominerà parecchi decenni a venire, soprattutto nella fascia ‘bassa’.
Si sviluppano Fortran e Algol, dedicati, verticali e molto orientati a problemi scientifici.
Nasce anche il LOGO, primo tentativo di Papert di approcciare (in modo anche grafico) la didattica ‘scolastica’.
Thompson e Ritchie pongono le basi di ‘B’, il padre di C.
APL: il geroglifico dei linguaggi di programmazione (mia esperienza), criptico e (apparentemente) potentissimo, ne riportiamo un esempio di listato.
⍝ ⍳ n generates a list of numbers from 0 to n-1
⍝ n n ⍴ A arranges the elements of A in an n×n matrix⎕ ← 5 5 ⍴ ⍳ 25
Anni 70: dai mainframe ai primi personal
Il Basic si propone in tutte le salse hardware e software ed è uno degli elementi della nascita di Microsoft (Bill Gates stesso ne scrive una versione che diverrà un vero e proprio standard di riferimento per i primi personal/home computer).
In questo periodo vi è principalmente una prevalenza di sistemi IBM e DEC ed i linguaggi che vengono implementati sono tanto più specializzati, da un lato alle
- vedono la luce il Forth, Pascal, Smalltalk ed il Modula (una derivazione parziale del Pascal),
- linguaggio C, con UNIX coevo… la prima vera abbinata di sistema operativo e linguaggio di programmazione che hanno vissuto in simbiosi per decenni,
- il primo SQL: un linguaggio dedicato esclusivamente all’interrogazione dei database
Anni 80: la nuova esplosione di vita dei personal/home computer
- il Basic diventa linguaggio di programmazione e spesso OS dei principali computer personali,
- C++, il C con classi e programmazione ad oggetti,
- i vari linguaggi dedicati ai database (Dbase, Clipper) che giravano sui personal computer e che spesso non erano ancora relazionali ma così diffusi,
- con il desktop publishing inizia anche l’era PostScript, il linguaggio di definizione della pagina dedicato alle stampanti Laser ed ai programmi di impaginazione,
- Perl, lo scripting language spesso descritto come il coltellino svizzero delle prime applicazioni web
Anni 90
L’era Internet propone nuove prospettive ed esigenza: i computer non sono più stand-alone o al massimo in LAN, ma sono sempre più interconnessi e si impongono modelli client-server che spostano l’elaborazione ed il data-retrieving sui server.
Si impongono i primi linguaggi di scripting (spesso nipotini di Perl), differenti dai ‘veri’ linguaggi di programmazione e che consentono il vero RAD, sviluppo rapido delle applicazioni:
- Python
- PHP
- Java: tenta la strada del linguaggio ‘uber alles’, sistema operativo per vari device, set top box, computer, thin client e molto altro: non avrà il successo sperato da Sun
- Javascript
- Rexx
Dal 2000 ad oggi si sono proposte numerose soluzioni .NET e C#: il framework di Microsoft ed una diffusione di processori dedicati, sempre più efficienti e interconnessi.
Come potremmo chiudere le note di questa puntata senza citare “Conoscere il Computer direttamente dal computer”, Corso di Basic pubblicato da Beatrice D’Este, che tanto è rimasto nella memoria di Simone Pizzi?
Una collana di divulgazione informatica italiana che costituisce un’esperienza decisamente unica.
Tutta la collana è disponibile sul sito di Ready64.it sia nelle scansioni di diversi fascicoli sia i file corrispondenti alle singole cassette per chi voglia leggerle su emulatori C64 o su veri Commodore!
Vi segnalo anche l’emulatore online per il linguaggio APL disponibile su GitHub e le versioni scaricabili per PC.
Segnalo inoltre un elenco veramente nutrito di compilatori ed interpreti per Basic, Cobol, Assembly, C, LISP, Modula2, Pascal e molti altri (perlopiù gratuiti).
Torneremo in futuro sicuramente sull’argomento, ben consci di aver solo toccato la punta dell’iceberg!
Vi invitiamo, come sempre, a scaricare le puntate del podcast anche da iTunes Store.
Non so se sono io, ma si sente molto male! Salta come un vinile 🙂