TRACCIA PER LE LEZIONI 11-12
martedì 25 maggio, ore 1630-1815, aula 5
ARGOMENTI
(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
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
ARGOMENTI
(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
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
… 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).
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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”.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
SOFTWARE: IL “NOCCIOLO DURO”
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
SOFTWARE: A QUALE SCOPO?
APPLICAZIONI
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
“ORIZZONTALI”
(D’INTERESSE
GENERALE)
“VERTICALI”
(D’INTERESSE
SETTORIALE)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
UTENZA / MERCATO
SOFTWARE: COME FARLO?
APPLICAZIONI
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
“ORIZZONTALI”
(D’INTERESSE
GENERALE)
“VERTICALI”
(D’INTERESSE
SETTORIALE)
INGEGNERIA DEL
SOFTWARE
TOOLS DI SVILUPPO
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
SOFTWARE: CHI LO FA?
APPLICAZIONI
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
“ORIZZONTALI”
(D’INTERESSE
GENERALE)
“VERTICALI”
(D’INTERESSE
SETTORIALE)
AUTOPRODUZIONE
INGEGNERIA DEL
SOFTWARE
TOOLS DI SVILUPPO
INDUSTRIA DEL
SOFTWARE
SOFTWARE “FREE”
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
UTENZA / MERCATO
SOFTWARE: ENTRO QUALI CONTESTI?
STANDARD
“DI FATTO” / “ LEGALI”
INFORMATICA TEORICA
(COMPUTER SCIENCE)
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
ARCHITETTURE
HARDWARE
(PROCESSORI,
FIRMWARE,
PERIFERICHE, RETI)
INGEGNERIA DEL
SOFTWARE
TOOLS DI SVILUPPO
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
SOFTWARE: UN POSSIBILE QUADRO DI RIFERIMENTO
STANDARD
“DI FATTO” / “ LEGALI”
APPLICAZIONI
INFORMATICA TEORICA
(COMPUTER SCIENCE)
LINGUAGGI DI
PROGRAMMAZIONE
SISTEMI OPERATIVI
PROTOCOLLI TLC
ARCHITETTURE
HARDWARE
(PROCESSORI,
FIRMWARE,
PERIFERICHE, RETI)
“ORIZZONTALI”
(D’INTERESSE
GENERALE)
UTENZA / MERCATO
“VERTICALI”
(D’INTERESSE
SETTORIALE)
AUTOPRODUZIONE
INGEGNERIA DEL
SOFTWARE
TOOLS DI SVILUPPO
INDUSTRIA DEL
SOFTWARE
SOFTWARE “FREE”
Ogni casella e ogni relazione dovrebbe avere una sua
storia! Noi seguiremo solo alcuni percorsi.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
ARGOMENTI
(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
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Il programma
“inaugurale” (1948)
preparato per il test
della Baby Machine
dell’Università di
Manchester (vedi una
precedente lezione).
Fonte: [8] nella bibliografia di questa 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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Appunti autografi di A.M.Turing: programmazione del computer
Mark I (Manchester, 1953)
Fonte: [8] nella bibliografia di questa lezione
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Fonte: [1] nella bibliografia di questa lezione
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Sruttura generale dell’EDSAC (1949),
rappresentativa dei computer
pionieristici.
Input e output sono ancora rudimentali:
- lettore/perforatore di banda di carta
- telescrivente.
MULTIPLIER
REGISTER
ACCUMULATOR
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)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Il corredo di istruzioni native
(Order Code) dell’EDSAC.
Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Unica struttura di controllo:
il salto condizionato
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Registro accumulatore:
un passaggio obbligato
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
MULTIPLIER
REGISTER
ACCUMULATOR
Registro accumulatore:
un passaggio obbligato
Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Formato delle istruzioni a un solo indirizzo
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Formato delle istruzioni a un solo indirizzo
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
T
n2
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)
A
n1
Add the number in storage location n1 into the
accumulator.
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)
T
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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
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”)
A
n1
Add the number in storage location n1 into the accumulator.
A
n2
Add the number in storage location n2 into the accumulator.
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)
T
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
1948
1949
1950
Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
1952
1953
1953
Fonte: [8] nella bibliografia di questa lezione (con adattamenti del docente)
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Livello utente
LINGUAGGIO MACCHINA
(istruzione a due indirizzi)
C (Copy)
n1
n2
MICROPROGRAMMA
(su ROM)
Livello firmware
COMANDI ESEGUIBILI
(istruzioni a un indirizzo)
Livello hardware
T
n2
A
n1
T
n2
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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)
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Esempio di subroutine
della Libreria EDSAC:
il caso più semplice di
divisione.
Fonte: [1] nella bibliografia di questa lezione (con adattamenti del docente)
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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).
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Fonte: [1] nella bibliografia di questa lezione
Folclore protoinformatico:
preparazione dei programmi per l’EDSAC.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
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.
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
ARGOMENTI
(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
storia dell'informatica - uniud 200910 - corrado bonfanti - traccia lez. 11-
Scarica

SOFTWARE - Nucleo di Ricerca in Didattica dell`Informatica