Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE...

41
storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 1 1-12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15 , aula 5 ARGOMENTI ARGOMENTI (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI) (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI) SOFTWARE: DI COSA PARLIAMO? PERIODO PIONIERISTICO: LINGUAGGIO MACCHINA = STRUTTURA HARDWARE LINGUAGGI DI PROGRAMMAZIONE INGEGNERIA E INDUSTRIA DEL SW APPENDICE: ESEMPI FORTRAN E COBOL

Transcript of Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE...

Page 1: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

TRACCIA PER LE LEZIONI 11-12martedì 25 maggio, ore 1630-1815, aula 5

ARGOMENTI ARGOMENTI (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI)(EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI)

SOFTWARE: DI COSA PARLIAMO?

PERIODO PIONIERISTICO: LINGUAGGIO MACCHINA = STRUTTURA HARDWARE

LINGUAGGI DI PROGRAMMAZIONE

INGEGNERIA E INDUSTRIA DEL SW

APPENDICE: ESEMPI FORTRAN E COBOL

Page 2: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

ARGOMENTI (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI)

SOFTWARE: DI COSA PARLIAMO?SOFTWARE: DI COSA PARLIAMO?

PERIODO PIONIERISTICO: LINGUAGGIO MACCHINA = STRUTTURA HARDWARE

LINGUAGGI DI PROGRAMMAZIONE

INGEGNERIA E INDUSTRIA DEL SW

APPENDICE: ESEMPI FORTRAN E COBOL

Page 3: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nella letteratura di carattere storico, solo una minoranza di lavori si occupano in profondità dell’evoluzione del software nei suoi molteplici aspetti; in particolare quasi tutte le “storie generali” la trascurano del tutto o la liquidano con cenni fugaci. [1] Solo i

linguaggi di programmazione possono vantare un buon numero di opere specialistiche. [2]

La natura immateriale del software rende poi problematica, se non impossibile, la sua esibizione nelle istituzioni museali che sono invece ormai numerose e ricche di reperti di interesse storico che documentano l’evoluzione dell’hardware.

Un autorevole richiamo verso una maggiore attenzione alla storia del software è stato lanciato in un recente convegno intitolato “History of Computing: Software Issues”.[3] In tale convegno …

[1] Una notevole eccezione è il recente saggio di Paul E. Ceruzzi, tradotto anche in italiano (n.[5] nella bobliografia), che vi dedica l’intero Capitolo 3 - “Gli albori del software, 1952-1968” - e altri ampi passaggi.

[2] Tra queste, i nn.[2], [3] e [4] nella bibliografia.

[3] Gli atti del convegno sono rubricati al n.[6] della bibliografia.

Page 4: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

… si è proposto di adottare come criterio storiografico l’osservazione del “fenomeno software” secondo i seguenti punti di vista:

- il software “come arte” (periodo pionieristico),

- il software “come scienza logico-linguistica” (teoria; linguaggi; sistemi operativi),

- il software “come attività economica” (professioni; industria del sw),

- il software “come tecnica ingegneristica” (ingegneria del sw).

Page 5: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Il termine “software” è un neologismo entrato in voga intorno al 1960 come contrapposto a “hardware”, parola in uso già da tempo[1]; si dava così una connotazione riconoscibile ed emblematica - una “dignità” insomma - a quella che potremmo chiamare “l’altra faccia dell’informatica”.

Inizialmente per “software” s’intendevano i programmi, di qualsiasi genere, necessari a rendere operante un computer. Questa accezione ristretta venne gradualmente estesa fino ad abbracciare tutto il ventaglio di metodologie e di attività associate alla semplice scrittura dei programmi.

Il quadro è diventato estremamente complesso; vediamo di chiarire ……

[1] Il termine “hardware”, come inteso nel gergo informatico, è invece un traslato della parola inglese che corrisponde all’italiano “ferramenta”.

Page 6: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: IL “NOCCIOLO DURO”IL “NOCCIOLO DURO”

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

Page 7: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: A QUALE SCOPO?A QUALE SCOPO?

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

APPLICAZIONI

“ORIZZONTALI” (D’INTERESSE

GENERALE)

“VERTICALI” (D’INTERESSE

SETTORIALE)

UTENZA / MERCATO

Page 8: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: COME FARLO?COME FARLO?

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

TOOLS DI SVILUPPO

INGEGNERIA DEL SOFTWARE

APPLICAZIONI

“ORIZZONTALI” (D’INTERESSE

GENERALE)

“VERTICALI” (D’INTERESSE

SETTORIALE)

Page 9: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: CHI LO FA?CHI LO FA?

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

TOOLS DI SVILUPPO

INGEGNERIA DEL SOFTWARE

APPLICAZIONI

“ORIZZONTALI” (D’INTERESSE

GENERALE)

“VERTICALI” (D’INTERESSE

SETTORIALE)

UTENZA / MERCATO

SOFTWARE “FREE”

INDUSTRIA DEL SOFTWARE

AUTOPRODUZIONE

Page 10: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: ENTRO QUALI CONTESTI?ENTRO QUALI CONTESTI?

ARCHITETTURE HARDWARE (PROCESSORI,

FIRMWARE, PERIFERICHE, RETI)

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

TOOLS DI SVILUPPO

INGEGNERIA DEL SOFTWARE

INFORMATICA TEORICA (COMPUTER SCIENCE)

STANDARD “DI FATTO” / “ LEGALI”

Page 11: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

SOFTWARE: UN POSSIBILE QUADRO DI RIFERIMENTO

Ogni casella e ogni relazione dovrebbe avere una sua storia! Noi seguiremo solo alcuni percorsi.

LINGUAGGI DI PROGRAMMAZIONE

SISTEMI OPERATIVI

PROTOCOLLI TLC

TOOLS DI SVILUPPO

INGEGNERIA DEL SOFTWARE

STANDARD “DI FATTO” / “ LEGALI”

ARCHITETTURE HARDWARE (PROCESSORI,

FIRMWARE, PERIFERICHE, RETI)

INFORMATICA TEORICA (COMPUTER SCIENCE)

APPLICAZIONI

“ORIZZONTALI” (D’INTERESSE

GENERALE)

“VERTICALI” (D’INTERESSE

SETTORIALE)

UTENZA / MERCATO

SOFTWARE “FREE”

INDUSTRIA DEL SOFTWARE

AUTOPRODUZIONE

Page 12: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

ARGOMENTI (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI)

SOFTWARE: DI COSA PARLIAMO?

PERIODO PIONIERISTICO: PERIODO PIONIERISTICO: LINGUAGGIO MACCHINA = STRUTTURA HARDWARELINGUAGGIO MACCHINA = STRUTTURA HARDWARE

LINGUAGGI DI PROGRAMMAZIONE

INGEGNERIA E INDUSTRIA DEL SW

APPENDICE: ESEMPI FORTRAN E COBOL

Page 13: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Il programma “inaugurale” (1948) preparato per il test della Baby Machine dell’Università di Manchester (vedi una precedente lezione).

Il programma effettivo, scritto bit per bit in linguaggio macchina e introdotto in memoria mediante una serie di switches, si trova nelle due colonne sulla destra.

Fonte: [8] nella bibliografia di questa lezione

Page 14: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Appunti autografi di A.M.Turing: programmazione del computer Mark I (Manchester, 1953)

Fonte: [8] nella bibliografia di questa lezione

Page 15: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Appunti autografi di A.M.Turing: programmazione del computer Mark I (Manchester, 1953)

A caccia di un errore:

How did this happen ?

Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)

Page 16: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Fonte: [1] nella bibliografia di questa lezione

Page 17: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nei computer pionieristici della prima generazione, compresi quelli prodotti in ambiente industriale, il software era praticamente inesistente e quindi il suo sviluppo rimaneva completamente a carico di ogni utilizzatore.

Il gruppo inglese diretto da Maurice Wilkes, lavorando sul loro EDSAC (1949) all’Università di Cambridge, fu tra i primi ad affrontare in maniera sistematica anche il problema “primigenio” del software mettendo a punto e dando alle stampe una libreria di componenti software (sottoprogrammi o subroutines) per risolvere una volta per tutte i problemi che più di frequente ricorrono nel calcolo matematico.

Abbiamo detto “una volta per tutte”, ma bisogna intendersi: i sottoprogrammi della libreria EDSAC, pur utilissimi come esemplificazione di un approccio sistematico, non erano infatti applicabili a nessun computer diverso da esso. Fatto che era esplicitamente avvertito nel sottotitolo del libro: With special reference to the EDSAC.

Il software EDSAC si basava su due elementi chiave destinati a fare scuola in quanto preludevano a fondamentali componenti del cosiddetto “software di base”.

Il primo era il programma di caricamento che leggeva il simbolico da nastro, lo traslitterava in codice binario di macchina e trasferiva il controllo a tale codice eseguibile. Questo ingegnoso ed elegante programma, di appena 40 istruzioni designate come initial orders, svolgeva quindi le funzioni di traduttore e di loader.

I programmi non potevano essere “salvati” in codice di macchina e quindi ogni loro esecuzione doveva ripartire dal nastro simbolico; in questo senso il processo di traduzione può essere considerato affine alla tecnica degli intrpretatori piuttosto che a quella dei compilatori.

Il secondo era il meccanismo di chiamata dei sottoprogrammi e di ritorno al programma chiamante: una invenzione di David Wheeler passata alla storia come Wheeler’s Jump.

Considerata l’importanza storica dell’EDSAC e il suo valore paradigmatico nei confronti di molti computer dell’epoca, nel seguito vi farò riferimento a titolo esemplificativo.

Page 18: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Sruttura generale dell’EDSAC (1949), rappresentativa dei computer pionieristici.

Input e output sono ancora rudimentali: - lettore/perforatore di banda di carta - telescrivente.

Notare inoltre l’esiguità degli organi aritmetici (no Floating Point): - registro moltiplicatore - accumulatore (addizioni e sottrazioni).

Ne conseguono le caratteristiche salienti del corredo di istruzioni native ovvero del linguaggio macchina, unico linguaggio inizialmente disponibile per costruire il software.

Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)

MULTIPLIER REGISTER

ACCUMULATOR

Page 19: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Il corredo di istruzioni native (Order Code) dell’EDSAC. Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)

Page 20: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nella rappresentazione simbolica delle istruzioni il primo carattere (lettera maiuscola) costituisce il codice operativo e il secondo (n, quando presente) designa l’indirizzo dell’operando (o argomento) su cui agisce l’istruzione stessa.

Per brevità sorvoliamo sul significato della seconda lettera maiuscola, quando presente.

Page 21: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Unica struttura di controllostruttura di controllo: il salto condizionato

Page 22: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Registro accumulatoreaccumulatore: un passaggio obbligato

Page 23: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

MULTIPLIER REGISTER

ACCUMULATOR

Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)

Registro accumulatoreaccumulatore: un passaggio

obbligato

Page 24: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Si tratta quindi di istruzioni a un solo indirizzo, che aderiscono strettamente alla struttura fisica della macchina.

Questo implica l’intervento di un organo non dichiarato nel corpo dell’istruzione ma individuato univocamente dalla descrizione (“semantica”) dell’istruzione stessa.

Nel caso dell’EDSAC, come in quasi tutti i computer coevi, tale organo poteva essere l’accumulatore (vedi p.e. l’istruzione A n) oppure il registro moltiplicatore (come nell’istruzione H n).

I prospetti che seguono illustrano alcune caratteristiche del linguaggio macchina dei computer pionieristici; si nota quante poche siano state le eccezioni rispetto al formato a un solo indirizzo.

Page 25: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

codice operativo

argomento (indirizzo di memoria)

Il secondo argomento (tipicamente un organo aritmetico come l’accumulatore o il moltiplicatore) è implicito e lo si evince dalla semantica dell’istruzione specificata dal codice operativo.

Formato delle istruzioni a un solo indirizzo

Page 26: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

codice operativo

argomento (indirizzo di memoria)

Il secondo argomento (tipicamente un organo aritmetico come l’accumulatore o il moltiplicatore) è implicito e lo si evince dalla semantica dell’istruzione specificata dal codice operativo.

Esempio 1 (codice EDSAC): copiare il contenuto della posizione di memoria n1 nella posizione di memoria n2

Formato delle istruzioni a un solo indirizzo

T n2

A n1

Tranfer the contents of the accumulator to storage

location n2 and clear the accumulator. (N.B.: questa istruzione serve solo per azzerare l’accumulatore; dato lo scopo finale dell’esempio, il precedente contento dell’accumulatore è irrilevante)

Add the number in storage location n1 into the accumulator.

T n2

Tranfer the contents of the accumulator to storage

location n2 and clear the accumulator. (N.B.: nel caso non si volesse lasciare azzerato l’accumulatore, andrebbe

usata l’istruzione U n2)

Page 27: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Esempio 2 (codice EDSAC): sommare i contenuti delle posizioni di memoria n1 e n2 e mettere il risultato nella posizione di memoria n2 (con parole più immediate: sommare il contenuto di n1 al contenuto di n2)

T n3

A n1

Tranfer the contents of the accumulator to storage location

n3 and clear the accumulator. (N.B.: questa istruzione serve solo per azzerare l’accumulatore; la posizione di

memoria n3 è usata come area “di comodo”)

Add the number in storage location n1 into the accumulator.

T n2

Tranfer the contents of the accumulator to storage location

n3 and clear the accumulator. (N.B.: nel caso non si volesse lasciare azzerato l’accumulatore, andrebbe usata

l’istruzione U n2)

A n2 Add the number in storage location n2 into the accumulator.

Page 28: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

I due esempi precedenti, per quanto banali, mostrano quanto la programmazione in linguaggio macchina fosse complicata e prona ad errori.

La semplice struttura dell’EDSAC, e il conseguente formato a un solo indirizzo delle istruzioni, è stata peraltro adottata da quasi tutti i progettisti dei computer pionieristici, come evidenziato nelle due tavole che seguono.

Page 29: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)

1948 1949 1950 1952 1953 1953

Page 30: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nel formato a 3 indirizzi, il quarto elemento dell’istruzione (indicato da “+1”) contiene l’indirizzo della prossima istruzione da eseguire; indirizzo che, di norma, è invece contenuto in un apposito registro denominato Instruction (o Program) Counter.

Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)

Page 31: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nei primi computers, il corredo delle istruzioni di macchina (istruzioni “native”) raramente ne prevedeva più di una ventina.

Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)

Page 32: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Nel computer EDSAC II (1951) Maurice Wilkes introdusse il concetto di macchina microprogrammata.

Il microprogramma era una ROM che conteneva un interprete capace di tradurre in comandi effettivamente eseguibili a livello hardware (e inaccessibili al programmatore) le istruzioni scritte in un linguaggio più sintetico e più potente: era questo il linguaggio disponibile al programmatore, al quale appariva come il vero linguagggio macchina (o linguaggio “nativo”). Con riferimento all’Esempio 1, la slide illustra come il microprogramma potrebbe ad esempio sovrapporsi a una modesta struttura hardware tipo EDSAC (primo modello) per trasformarla, agli occhi dell’utente, in una più potente macchina con istruzioni a 2 indirizzi (la generalizzazione a 3 indirizzi è intuitiva).

La microprogrammazione fu una delle idee più innovative e di maggior successo nella storia dell’informatica moderna e dette luogo alla tecnologia cosiddetta firmware che ha avuto e ha tuttora innumerevoli applicazioni. Esempi tipici di macchine microprogrammate sono state le famiglie di computer IBM 360 e 370 e la serie VAX della DEC (Digital Equipment Corporation) nonché, in Italia, la CEP (Calcolatrice Elettronica Pisana) e l’ELEA 6001, dell’Olivetti.

Nel modello a strati, in cui lo strato più esterno è l’interfaccia utente, il firmware è rappresentato come come lo strato più interno che avvolge il nucleo hardware: una sorta di ibrido in cui l’immaterialità del software possiede stabilmente una sede fisica che ne realizza le funzioni.

Page 33: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

C (Copy) n1 n2

T n2

A n1

T n2

Livello utente

MICROPROGRAMMA (su ROM)

Livello firmware

Livello hardware

LINGUAGGIO MACCHINA (istruzione a due indirizzi)

COMANDI ESEGUIBILI (istruzioni a un indirizzo)

Page 34: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Questo è l’elenco dei tipi (Category) di sottoprogrammi, quasi un centinaio, approntati per la libreria EDSAC

Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)

Page 35: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

L’aritmetica floating point era realizzata via software e le subroutines necessarie furono un classico adempimento a carico di ogni team di programmatori, fino a quando i computer non furono dotati degli appositi dispositivi hardware e delle corrispondenti istruzioni native.

EDSAC, per di più, non disponeva neppure di hardware per la divisione; a tale operazione provvedevano quindi le subroutines della categoria D.

Page 36: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Le subroutines per l’input e per l’output formattato (print and layout), nella pratica, erano non meno utili dei sottoprogrammi matematici. Programmare la ricezione di dati dal lettore di nastro perforato o l’invio alla telescrivente, carattere per carattere, erano infatti operazioni particolarmente ostiche.

Page 37: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Le istruzioni, qui incorniciate in colore, venivano digitate sulla telescrivente e perforate su nastro di carta in una forma simbolica che, sebbene ancora piuttosto criptica, segnava un progresso notevole rispetto alla codifica puramente binaria.

Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)

Esempio di subroutine della Libreria EDSAC: il caso più semplice di divisione.

Page 38: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

I programmi erano perforati su nastro e il corredo di software risiedeva quindi su una collezione di strisce di carta perforata. Sulla sinistra della foto si distinguono i nastri dei programmi da eseguire in giornata (job queue).

Page 39: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

Folclore protoinformatico: preparazione dei programmi per

l’EDSAC.

Fonte: [1] nella bibliografia di questa lezione

Page 40: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

La foto ritrae un’operatrice intenta alla telescrivente “fuori linea” (cioè non collegata al computer né a una linea telefonica) dotata di un lettore e di un perforatore di banda di carta.

Le istruzioni del programma, scritte sul modulo nel leggìo, vengono digitate sulla tastiera e registrate sul nastro perforato. I sottoprogrammi vengono invece letti dal nastro di libreria e, al punto opportuno, riprodotti automaticamente sul nastro principale. L’intera libreria dei sottoprogrammi è custodita nella cassettiera sulla sinistra.

L’input e l’output al/dal computer erano effettuati rispettivamente per mezzo di un lettore di nastro di carta e di una telescrivente collegati direttamente alla macchina.

Queste modalità operative continuarono a far parte del folclore protoinformatico anche quando i lettori veloci di schede, mutuati dalla meccanografia, divennero il mezzo di input preferito; alle strisce di carta si sostituirono allora i “pacchi” (deck) di schede.

Page 41: Storia dell'informatica - uniud 2009- 10 - corrado bonfanti - traccia lez. 11- 12 TRACCIA PER LE LEZIONI 11-12 martedì 25 maggio, ore 16 30 -18 15, aula.

storia dell'informatica - uniud 2009-10 - corrado bonfanti - traccia lez. 11-12

ARGOMENTI (EVOLUZIONE DEL SOFTWARE: ALCUNI PERCORSI)

SOFTWARE: DI COSA PARLIAMO?

PERIODO PIONIERISTICO: LINGUAGGIO MACCHINA = STRUTTURA HARDWARE

LINGUAGGI DI PROGRAMMAZIONELINGUAGGI DI PROGRAMMAZIONE

INGEGNERIA E INDUSTRIA DEL SW

APPENDICE: ESEMPI FORTRAN E COBOL