MINI STORIA

È una carrellata di sensazioni e avvenimenti del passato! Non c’è un filo logico, è da leggere tutto di un fiato a mente libera.

Questo é per far comprendere quanto sia complicato trovare il fil rouge che tutto collega…………….

Una panoramica sulla storia del mio pensiero informatico, un po’ personale……

Una storia di informatica inizia sempre in un garage! Un giorno, rovistando nel garage di casa riappaiono due miei vecchi computer che tanta storia hanno avuto e tanto entusiasmo mi hanno dato. Ho passato giornate e anche nottate a programmare con queste macchine:

Il Texas TI-99/4A e il vecchio caro amico C64!! (anni 80)

Si parla di circa 20 KB (KiloByte) di memoria ROM e 64 KB di RAM e i processori avevano frequenze dell’ordine dei MHz. Il computer sul quale sto lavorando (22 ott 2019) ha una memoria RAM di 8 GB (GigaByte) e una frequenza di 3,4 GHz. Dal 1980 sono stati fatti passi da gigante, per rendersi conto è opportuno dare una occhiata alla tabella dei prefissi e loro valori. I prefissi sono in notazione decimale, in informatica (trattando numeri binari) sono diversi in valore assoluto ma sono usati correntemente nell’approssimazione decimale. Sono comunque presentati anche i prefissi usati in informatica con il loro valore esatto.

tabella prefissi in decimale
  • il kB, ovvero il kilobyte, che equivale a 2^10 byte, cioè a 1.024 byte; si legge 1.000 byte
  • il MB, ovvero il megabyte, che equivale a 2^20 byte, cioè a 1.048.576 byte; si legge un milione di byte
  • il GB, ovvero il gigabyte, che equivale a 2^30 byte, cioè a 1.073.741.824 byte; si legge un miliardo di byte o mille mega byte
  • il TB, ovvero il terabyte, che equivale a 2^40 byte, cioè a 1.099.511.627.776 byte; si legge 1.000 miliardi di byte

Come si può intuire passiamo da un periodo (anni 80) da valori migliaia all’attuale che viene comparato a valori di miliardi e con il tera si passa al bilione.

Grandi macchine, grandi ricordi, grandi lavorate!! All’apertura degli scatoloni si tirava fuori la macchina, il manuale, la si accendeva e subito compariva la scritta: READY con un prompt (un quadratino) lampeggiante.

Schermata d’avvio del COMMODORE 64

Il prompt pareva supplicarti di scrivere qualcosa, di comunicare con la macchina, questo ovviamente tramite la tastiera. In quegli anni il mouse non era ancora in uso, venne adottato come strumento di INPUT più tardi. La XEROX applica l’invenzione di Douglas Engelbart negli anni 70 però solo Steve Jobs si accorge delle potenzialità dello strumento si appropria dell’idea e del brevetto e costruisce il primo Apple Lisa, con un sistema operativo pensato anche per l’uso del mouse.[1] Ma tornando a noi, con che linguaggio si parlava con quelle macchine?

Ovviamente, con il linguaggio di programmazione BASIC!![1]

[1] Il BASIC è un linguaggio di programmazione ad alto livello sviluppato nel 1964 presso l’Università di Dartmouth sul calcolatore GE-225 dai professori John George Kemeny e Thomas Eugene Kurtz. Il BASIC è un linguaggio di programmazione ad alto livello sviluppato nel 1964 presso l’Università di Dartmouth sul calcolatore GE-225 dai professori John George Kemeny e Thomas Eugene Kurtz. La parola è l’acronimo della frase in lingua inglese “Beginner’s All-purpose Symbolic Instruction Code” ovvero – in italiano – “codice di istruzione simbolica di uso generale per principiante”. Il primo programma in questo linguaggio venne eseguito il 1º maggio 1964 alle ore 4:00 a.m..”

A onore del vero in quegli anni, anche per invogliare le persone e incrementare le vendite, venivano forniti manuali, veramente sontuosi, tutti incentrati sui primi rudimenti del BASIC. Erano principalmente rivolti a creare semplici programmi per la risoluzione di problemi gestibili con algoritmi. I giochi e altre applicazioni sono comparse solo dopo un po’ di tempo ed erano ancora “non professionali”.

Come esempio trascrivo un breve programma con le istruzioni che si dovevano digitare in macchina.


Si vuole calcolare la misura dell’area, del perimetro e della diagonale di un numero imprecisato di rettangoli, introducendo la misura dell’altezza e della base.

10 REM A P e D di rettangoli

20 INPUT B

30 INPUT H

40 A=B*H

50 P=2*(B+H)

60 D=SQR(B^2+H^2)

70 PRINT “area=”A

80 PRINT “perimetro=”P

90 PRINT “diagonale=”D

RUN


Le righe sono numerate perché le istruzioni devono essere eseguite esattamente in quell’ordine. L’istruzione “REM” indica una semplice riga di commento: non ha influenza sul programma. L’istruzione “INPUT” è quella che immette i dati. Si immettono le formule . Dopo aver fatto partire il programma con “RUN” appaiono sullo schermo dei prompt lampeggianti, in sequenza, ai quali dobbiamo assegnare i valori di altezza e base. Le istruzioni 40, 50, 60 sono i calcoli che la macchina deve eseguire. Con l’istruzione “PRINT” dico alla macchina “stampami” o, meglio, fammi vedere a video i risultati!

Questa è un semplice PROGRAMMA di tipo lineare con una sequenza di istruzioni, che può essere replicato un numero infinito di volte, ma possiamo fare di più! Con un programma che utilizzi istruzioni più sofisticate è possibile far stabilire, ad esempio, se un numero è pari o dispari, creare dei loop e altro….

Il computer può prendere una decisione, una decisione logica!!!

Ebbene esistono istruzioni, che obbedendo alle leggi dell’algebra booleana, possono far prendere decisioni, secondo il programma prefissato! Di questo ne parleremo più avanti. Siamo arrivati “vorticosamente” ai giorni nostri. Pensate ai smartphone, sofisticatissimi computer con i quali potete connettervi, scattare foto, fare filmati e, alla fine fare anche telefonate, in ogni caso anche questi sofisticatissimi smartphone funzionano secondo gli stessi principi di questi calcolatori!

Tutto è iniziato DOVE, QUANDO e COME?

Tutta l’umanità e la sua storia hanno contribuito in vario modo alla nascita e realizzazione del computer; è difficile trovare un filo d’Arianna che ci indichi il percorso, ce ne sono tanti, tutti significativi e importanti!!

Ad esempio, da un punto di vista tecnologico, come hanno fatto le macchine a diventare così piccole?

Sicuramente l’invenzione del transistor e la conseguente realizzazione dei CHIP hanno contribuito alla miniaturizzazione dei circuiti! Da un punto di vista tecnologico il salto di qualità e importanza è stato epocale, ha permesso il passaggio dall’era del vapore a quello dell’elettronica.

Ci dobbiamo porre una domanda fondamentale:

“il computer è una macchina da calcolo o una macchina logica?”

è una domanda molto sofisticata e di non facile risposta. Occorre aprire molti aspetti della conoscenza per riuscire ad essere esaustivi. Si può iniziare citando il filosofo greco Aristotele, il padre della LOGICA, che gettò le fondamenta della civiltà occidentale introducendo i concetti di VERO/FALSO e quello delle categorie[1] che classificavano tutto lo scibile umano.


[1] Le categorie sono l’attribuzione di un predicato ad un soggetto. Sono le classi supreme di ogni predicato possibile con cui poter ordinare tutta le realtà. Le Categorie (Κατηγορίαι – IV secolo a.C.) sono una sezione dell’immensa produzione di Aristotele, raggruppata da Andronico di Rodi nel complesso chiamato Organon. Esse riguardano i modi e le qualità dell’Essere e la maniera in cui l’uomo lo vede e lo interpreta.

Leonardo Pisano detto il Fibonacci[1] introdusse in Europa e nell’occidente, allora conosciuto, lo zero, quindi il sistema numerico decimale e ha scritto “Liber abbaci” (libro di calcolo) nel quale trattava per la prima volta l’ALGEBRA[2] e le sue regole combinatorie. Con l’introduzione dello 0 si ha un sistema numerico posizionale, dove il valore del numero è dato dalla posizione delle cifre. Es. 1024 si legge milleventiquattro e scritt0 in forma polinomiale risulta

il numero milleventiquattro
Liber abbaci con la serie di Fibonacci

[1] Leonardo Pisano detto il Fibonacci (Pisasettembre 1170 circa – Pisa1235 circa) è stato un matematico italiano.

[2] Un foglio del manoscritto su pergamena del Liber abbaci conservato nella Biblioteca Nazionale Centrale di Firenze (Codice Magliabechiano Conv. Soppr. C 1, 2616, fol. 124r). Il testo è quello celebre sulla fertilità di una coppia di conigli, con cui viene introdotta la sequenza di numeri oggi nota con il nome di successione di Fibonacci; come si può vedere, infatti, il riquadro sulla destra presenta le prime 13 cifre (in numeri arabi) della serie: 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 e 377.


Come non citare il grande filosofo tedesco Gottfried Wilhelm von Leibniz, genio universale! Introdusse il sistema binario, e iniziò a cercare di “algebrizzare” la logica Aristoteliana. Tutto quello che abbiamo velocemente elencato può essere considerata la fase preparatoria all’inizio della grande epopea informatica!

Nel 1790, subito dopo la Rivoluzione Francese, Napoleone aveva deciso che la Repubblica aveva bisogno di nuove tabelle numeriche per poter creare un sistema equo di tassazione delle proprietà con il nuovo sistema metrico decimale. Napoleone aveva anche ordinato la conversione del vecchio sistema imperiale di misura al nuovo sistema metrico. Per aiutare ingegneri e matematici, l’istituto cartografico francese aveva quindi commissionato la realizzazione di nuove tavole matematiche: le Tables du Cadastre

Nel XVIII secolo i calcoli venivano fatti a mano. Un gruppo di persone (tra 60 e 80) sommava e sottraeva numeri fino a completare ogni riga delle tavole. Era un lavoro semplice, non richiedeva particolari abilità, se non saper leggere e far di conto. Non a caso, molti calcolatori (detti computer) erano parrucchieri che avevano perso il lavoro, vista la scarsa richiesta di tagli aristocratici nella Francia post-rivoluzionara.

Il progetto richiedeva circa dieci anni per essere completato, ma a causa della guerra la Repubblica non aveva fondi per la pubblicazione del lavoro. Per decenni il manoscritto fu dimenticato all’Académie des Sciences, fino a quando, nel 1819, fu notato da un giovane matematico britannico di nome Charles Babbage. All’epoca Babbage aveva 28 anni e solo tre prima era stato eletto membro della Royal Society, la più importante istituzione del Regno Unito. Conosceva bene il mondo dei “calcolatori Umani”, avendo più volte coordinato la realizzazione di tavole astronomiche e attuariali.

Al suo ritorno in Inghilterra, Babbage aveva deciso di replicare il progetto francese, ma non con calcolatori umani, ma con una macchina per evitare la grande mole di errori prodotti in queste tavole. Babbage aveva intuito le potenzialità della meccanizzazione, aveva capito che si poteva sostituire non solo la forza dei muscoli, ma anche quella della mente.

Nel 1822 aveva proposto la costruzione della sua “macchina calcolatrice delle differenze”, e nel 1824 si era assicurato i finanziamenti del governo. Nei successivi dieci anni si era immerso nel mondo della manifattura, alla ricerca delle tecnologie migliori con cui realizzare la sua invenzione.

Il 1833 è l’annus mirabilis di Babbage. In quell’anno, infatti, non solo aveva prodotto un modello funzionante della sua macchina calcolatrice (macchina differenziale), ma aveva anche pubblicato il suo classico Sulla economia delle macchine e delle manifatture, affermandosi come il più autorevole esperto industriale dell’epoca.

Ogni sabato sera Babbage teneva incontri nella sua casa di Devonshire Street, a Londra. A questi incontri partecipavano i maggiori personaggi di quel periodo tra i quali Charles Darwin, Michael Faraday, Charles Dickens e una giovane matematica, entusiasta dei progetti di Babbage: Ada Lovelace.

Negli incontri il modello della macchina differenziale era esposto come un oggetto innovativo e suscettibile di dotte conversazioni.

Un anno più tardi Babbage abbandonò la macchina differenziale per un progetto ancora più ambizioso: la macchina analitica!

Mentre la macchina differenziale era limitata alla compilazione delle tavole matematiche, la macchina analitica avrebbe dovuto eseguire qualsiasi tipo di calcolo.

Alla pari di un moderno computer, la macchina analitica era composta da un processore (detto mill, mulino), che eseguiva i calcoli e da una memoria (detta store, magazzino), che immagazzinava i numeri; inoltre dava la possibilità all’utente di immettere nuove istruzioni tramite schede perforate.

Una pausa per delle riflessioni dovute. Le istruzioni erano introdotte tramite schede perforate (spirito duale, buco si/buco no), ma i problemi erano di pretta natura matematica e il primo SW, sviluppato da Ada Lovelace, riguardava le genesi dei numeri di Bernoulli. I calcoli erano ancora eseguiti con l’ausilio del sistema decimale. Questo era il progetto del primo proto computer dell’era Vittoriana, una miniera di idee, che causa la tecnologia dell’epoca, ancora non adatta, non potevano essere sviluppate a dovere.

Nello stesso periodo fece la sua comparsa un personaggio, umile e molto colto, ma non sorretto dall’establishmen: George Boole. Era sovrastato dai personaggi di quel periodo, Charles Dickens, Charles Darwin, Michael Faraday e molti altri.

Quest’uomo ha formalizzato la Logica Aristoteliana fornendogli una veste matematica che prese il nome di algebra booleana.

Introducendo l’equazione:     

pietra angolare di tutta l’informatica

Questa equazione è verificata per solo due valori 0 e 1

Difatti se sostituiamo alla x il valore 0, l’equazione è soddisfatta lo stesso se sostituiamo alla x il valore 1, qualsiasi altro valore l’equazione non è soddisfatta. Da questa considerazione ecco la necessità di introdurre il sistema binario.

Questa equazione ha una derivazione diretta dalla relazione di Leibniz:

questa relazione ha un preciso significato (vedi Liebniz in questo stesso sito), quella sopra di Boole è l’algebrizzazione di questa. Boole formalizzò la logica classica algebrizzandola e ponendo le condizioni per passare dal sistema decimale a quello binario.

Boole introdusse i connettivi logici AND, OR, NOT assimilabili all’operazione di intersezione di due insiemi (AND), unione di due insiemi (OR disgiunzione inclusiva) e NOT assimilabile alla differenza dello stesso insieme.

Il lavoro di Boole fu “dimenticato” perché “i saggi” di quel periodo avevano apprezzato il lavoro, ma avevano decretato che fosse per pochi e che aveva esaurito la sua spinta teorica.

Passarono 84 anni prima che il lavoro (gigantesco) di Boole fosse notato da un giovane ingegnere americano: Claude Elwood Shannon, il padre dell’odierno digitale!! Shannon è un giovane ingegnere elettrotecnico che a soli 28 anni si accorge che l’algebra di Boole è analoga al comportamento dei switching circuits o circuiti di commutazione.

SONO NATE LE LOGIC GATES!!!

Le porte logiche AND OR NOT sono gli architravi dei nostri computer DIGITALI. Sono i componenti fondamentali, ad esempio, come i mattoncini LEGO e combinandole si può costruire di tutto.

Di seguito tre rappresentazioni:

  1. uno schema che rappresenta le principali porte e relativi simboli, con le tavole di verità e le espressioni booleane, riferite al linguaggio degli insiemi.
  2. una visione schematica delle porte collocate nei chip.
  3. Una applicazione importante delle porte è senza dubbio il circuito FLIP-FLOP e un circuito sequenziale delle porte che ha la capacità di MEMORIZZARE i BIT. È la memoria!!!
  4. Un circuito Half-adder semisommatore in grado di sommare i bit!!!
schema LOGIC GATES
Porte allocate nei microprocessori AND e NOT
Circuito FLIP FLOP permette la memorizzazione di un bit
Full Adder permette la somma di due bit anche con il riporto (carry)