19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
2
• Significato 1: [informazione = dati + istruzioni]
insieme dei dati su cui operare e delle istruzioni con cui elaborare tali dati
▶ per esempio, nell’operazione 1+2 sono entità di informazione i numeri 1 e 2 e l’operatore ‘+’
enfasi sulla distinzione tra struttura e descrizione dell’operazione
▶ che si scriva “uno più due” o “1+2” l’informazione è la stessa
• Significato 2: [informazione = dati con significato]
ciò che si ottiene dai dati a cui è stato attribuito un significato
▶ per esempio, i numeri 1 e 2 sono semplici dati; diventano entità di informazione solo quando
si stabilisce che si riferiscono, per esempio, a mele o a portaerei
enfasi sulla distinzione tra forma e contenuto
Come è abituale nelle STIC, adottiamo qui il significato 1
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
3
Le tecnologie di successo sociale producono strumenti utilizzabili
anche da chi non ne conosce i dettagli di funzionamento,
grazie alla presenza di un’appropriata interfaccia utente (user interface,
UI)
Approccio “a scatola chiusa” (black box):
interazione con la scatola (la UI dello strumento) e non con il suo contenuto
• lo strumento è più facilmente usabile
• ma rischia di essere sotto (e in certi casi anche mal) utilizzato
e quindi, in certi casi…
Approccio “dall’alto verso il basso” (top-down):
• aprendo il coperchio della scatola si trovano altre scatole
• si continuano ad aprire coperchi fino a giungere al livello di dettaglio richiesto
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
4
• Molti strumenti sono stati progettati e realizzati per
trattare informazione:
▶ le matite servono per scrivere
(non per trasferire grafite su carta)
▶ i violini servono per suonare
(non per produrre onde acustiche)
• A differenza di questi, i calcolatori sono dispositivi
programmabili
Informatica
e cultura dell’informazione – capitolo 0 – Introduzione a STIC
• Ma cosa significa
programmabile?
19/12/2015
5
le mele
nel cesto
le mele
nel cesto
Ma l’informazione può essere più che indicale…
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
6
• La programmabilità di un dispositivo
attiene alle modalità con cui
esso gestisce informazione
• Per esempio, per risolvere questo
problema,
si può:
▶ provare e riprovare
(= operare direttamente sul sistema da
trasformare)
▶ fare i conti a mente
(= operare senza un supporto fisico)
▶ fare i conti con carta e penna
(= operare con supporti passivi)
▶ fare i conti con una calcolatrice
(= operare con supporti “rigidi”)
▶ oppure …
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
7
Per gestire informazione, si opera su dati mediante istruzioni:
a mente
supporto
materiale
mente
carta e penna
dati
X
dati
istruzioni
X
istruzioni
calcolatore
supporto
materiale
mente
supporto
materiale
mente
X
calcolatrice
X
supporto
materiale
dati
X
dati
X
istruzioni:
X
istruzioni:
X
X
istruzioni:
esecuzione
istruzioni:
controllo
19/12/2015
esecuzione
controllo
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
mente
X
8
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
9
• Blaise Pascal (1623-1662)
dispositivo meccanico (ingranaggi azionati da una
manovella) per l’esecuzione di somme e sottrazioni
• Gottfried Wilhelm von Leibniz (1646-1716)
introduce anche moltiplicazioni e divisioni
(calcolatrice a quattro funzioni)
• Charles Babbage (1792-1871)
progetta e realizza un “difference engine”
▶ calcola tabelle di numeri utili per la navigazione
▶ unico algoritmo: polinomiale alle differenze finite
▶ output: fori su una piastra di rame
(schede perforate)
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
10
• Charles Babbage (1792-1871)
macchina programmabile: “analytical engine”
▶ Formata da quattro parti:




store (memoria: 1000 celle × 50 cifre)
mill (unità di calcolo: 4 operazioni + trasferimento dati)
input (lettore schede)
output (perforatore schede)
▶ Con istruzioni di controllo per cambiare il flusso di esecuzione a
seconda del valore positivo o negativo di un numero
▶ Nasce il ruolo del programmatore: Ada Augusta Lovelace
▶ Troppo avanzata per la tecnologia del tempo: troppi errori hardware
(ruote dentateInformatica
di precisione)
19/12/2015
e cultura dell’informazione – capitolo 0 – Introduzione a STIC
11
• Konrad Zuse (Germania, anni ’30 e ’40)
▶ Realizza macchine calcolatrici automatiche basate su relè elettromagnetici
▶ Distrutte dal bombardamento di Berlino del 1944
• John Atanasoff (Iowa State College, anni ’30)
▶ Macchina basata sull’aritmetica binaria
▶ Memoria basata su condensatori rinfrescati periodicamente
▶ Troppo avanzata per la tecnologia disponibile (problemi HW)
• George Stibbitz (Bell Labs, anni ’30)
▶ Calcolatore più primitivo rispetto a quello di Atanasoff, ma funzionante
(presentato a una conferenza nel 1940)
• Howard Aiken (Harvard, anni ’40)
▶ Riprende il lavoro di Babbage e lo implementa sfruttando la tecnologia dei relè
elettromagnetici. Nel 1944 completa il Mark I:
19/12/2015
 un’istruzione eseguita
ognie cultura
6 secondi
Informatica
dell’informazione – capitolo 0 – Introduzione a STIC
 input e output su/da nastro di carta perforato
12
• Negli anni ’40 si sviluppa una nuova tecnologia:
le valvole termoioniche rendono obsoleti i relè
elettromagnetici
• COLOSSUS (Inghilterra 1943)
▶ Primo calcolatore digitale elettronico
▶ Usato per decifrare i messaggi segreti tedeschi
▶ Segreto militare per 30 anni, perciò ininfluente
• ENIAC (Mauchley ed Eckert - USA 1946)
▶ Electronic Numerical Integrator And Computer
000 valvole
e 1500 relè
per
un peso
complessivo di 30 t
19/12/2015 ▶ Composto da 18
Informatica
e cultura dell’informazione
– capitolo
0 – Introduzione
a STIC
13
• Partecipa al progetto ENIAC
• Due intuizioni fondamentali:
▶ memorizzare i programmi in forma digitale nella stessa memoria dei
dati per rendere più semplice la programmazione
(rispetto all’utilizzo di cavi e interruttori)
▶ utilizzare l’aritmetica binaria invece di quella decimale
(due valvole per bit invece di dieci per cifra)
• Il suo progetto (macchina di von Neumann) è ancora oggi
alla base di quasi tutti i calcolatori digitali
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
14
• Un calcolatore deve essere in grado di:
▶
▶
▶
▶
▶
eseguire istruzioni su dati
controllare il flusso dell’esecuzione
memorizzare i dati su cui operare
memorizzare successioni di istruzioni
interagire con gli utenti e con eventuali altri sistemi
Sottosistema
di interfaccia
Comunica
con utenti
o con altri dispositivi
Sottosistema
di memorizzazione
Memorizza dati
e istruzioni
Sottosistema
Ha
due funzioni:
di elaborazione
1. eseguire le istruzioni
2. controllare il flusso
dell’esecuzione
Sottosistema di interconnessione
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
15
ambiente da
controllare
sensori
attuatori
calcolatore
locale
automazione
rete
interfaccia
utente
calcolatore
remoto
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
16
a
c
b
f
e
d
• Ciclo a-f
▶ interazione tra un utente e un calcolatore
▶ esecuzione locale di un programma o accesso a documentazione locale
• Ciclo a-b-e-f
▶ interazione tra un utente e un calcolatore remoto, mediata da un secondo calcolatore in rete con il primo
▶ esecuzione remota o distribuita di un programma o accesso a documentazione remota
• Ciclo a-b-c-d-e-f
▶ interazione tra utenti mediata da calcolatori
▶ esecuzione distribuita e cooperativa di un programma o scambio di documentazione
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
17
1. Input:
dati e istruzioni
2. Elaborazione
3. Output:
dati (risultati
dell’elaborazione)
e quindi, il calcolatore si può intendere come una black box:
Input
19/12/2015
calcolatore
Output
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
18
Ricevendo una richiesta dall’utente, il calcolatore svolge in successione
due attività:
• controlla di essere in grado di interpretare il comando, cioè di
riconoscere il comando come corretto e corrispondente a un’azione
che è in grado di eseguire
• se il controllo ha dato esito positivo, esegue l’azione associata al
comando e, quando richiesto, presenta il risultato all’utente
Invece di inviare al calcolatore un comando per volta, l’utente può scegliere
di creare una successione di comandi (= programma) e inviarla al calcolatore,
che autonomamente è in grado di interpretare ed eseguire il programma stesso,
un’istruzione per volta
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
19
L’utente-programmatore e il calcolatore
devono parlare uno stesso linguaggio
Un’opzione potrebbe essere di “insegnare al calcolatore” a comprendere
(= interpretare ed eseguire comandi espressi in) una lingua storico-naturale
come l’italiano o l’inglese
• Vantaggi:
▶ lingue semanticamente ricche, e quindi sicuramente in grado di esprimere i comandi
▶ lingue già note all’utente
• Svantaggi:
▶ lingue semanticamente ricche, e quindi a rischio di ambiguità
▶ lingue complesse da insegnare / imparare
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
20
Comando: “nella frase
l'informatica, che in inglese è detta 'computer-science',
è interessante anche se difficile
metti in grassetto la parola X”
• X: “è”  ambiguo: quale delle due “è”?
• X: “in decima posizione”  ambiguo: “computer-science” conta come una o due parole?
Comando: “se la condizione A è vera esegui l’istruzione B e poi esegui l’istruzione C”
•  ambiguo: C deve essere eseguito comunque o solo se A è vera?
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
21
Un’opzione alternativa:
• creare un linguaggio “di programmazione”,
dedicato alla comunicazione con il calcolatore
• Vantaggi:
▶ linguaggio progettato specificamente, e quindi efficiente
▶ linguaggio non ambiguo
• Svantaggi:
▶ linguaggio formalizzato, e quindi strutturalmente diverso dalle lingue storico-naturali
▶ linguaggio non noto all’utente
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
22
Comando: “se la condizione A è vera esegui l’istruzione B e poi esegui l’istruzione C”
•  ambiguo: C deve essere eseguito comunque o solo se A è vera?
Lo stesso comando viene riscritto in un linguaggio di programmazione si disambigua:
if(A) {
B;
}
C;
se A è vero esegui B;
in ogni caso quindi esegui l’istruzione C
19/12/2015
if(A) {
B;
C;
}
se A è vero esegui sia B sia C
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
23
Sebbene si consideri abitualmente che oggetto del calcolo sono numeri,
i calcolatori operano anche su dati non numerici, come testi, immagini, musica…
Un problema di elaborazione di dati non numerici è riconducibile a calcolo
numerico se per prima cosa i dati vengono codificati nella forma di numeri
Per esempio, un testo può essere convertito in una successione di numeri grazie al
Codice ASCII: spazio  32; ‘A’  65; ‘B’  66; …; ‘a’  97; ‘b’  98; …
e quindi: “ciao mondo”  99 105 97 111 32 109 111 110 100 111
Data questa codifica, un problema come:
trasformare una frase scrivendo con l’iniziale maiuscola tutte le parole che la compongono
(per cui “ciao mondo” dovrebbe diventare “Ciao Mondo”)
è effettivamente un problema di calcolo
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
24
Se il linguaggio di programmazione adottato contiene un’istruzione
words_uppercase(),
il problema si risolve semplicemente: words_uppercase(“ciao mondo”)
Altrimenti, è il programmatore a dover “scomporre” il problema in sottoproblemi
più semplici, per esempio:
1. identifica le parole da cui la frase è costituita
2. per ogni parola, metti il suo primo carattere in maiuscolo
Data la successione: 99 105 97 111 32 109 111 110 100 111
•la prima istruzione corrisponde a individuare nella successione le sotto-successioni di
numeri separate dal numero 32
•la seconda istruzione corrisponde sottrarre 32 al primo elemento di ogni sottosuccessione,
Una volta codificati numericamente i dati in ingresso, il problema viene dunque
risolto mediante semplici istruzioni come “se … è uguale a … allora …”, “somma … a
…”, e così via
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
25
Non ogni problema ammette una soluzione calcolabile
• Quali problemi ammettono una soluzione calcolabile?
• Esistono problemi calcolabili che i calcolatori non sono in grado di risolvere?
• Esistono problemi che solo certi calcolatori sono in grado di risolvere?
cioè: esistono tipi diversi di calcolatori in relazione alla loro capacità
di risolvere problemi?
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
26
Ipotesi: il calcolo è una trasformazione di dati,
in cui l’output è determinato univocamente dall’input attraverso una funzione:
input
f
output = f(input)
Per esempio, 1+2*3 e 4+5*6 sono due casi particolari della stessa funzione f(x,y,z)=x+y*z
Ipotesi: le funzioni complesse possono essere scomposte
come successioni di funzioni più semplici
Per esempio:
f
x,y,z
x
+
x+y*z
y
z
19/12/2015
*
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
27
Un sistema di calcolo molto semplice:
• un nastro organizzato in celle in ognuna delle quali è scritta una barra
o nulla
e con codifica “unaria” (1  “ / ”; 2  “ // ”; 3  “ /// ”; …
• un sistema di lettura e scrittura che opera in base a regole della
forma:
se sei nello stato ... e nella cella hai letto ...,
allora nella cella scrivi ..., passa nello stato ...
e spostati nella cella ...
Per esempio, il nastro:
…
/ /
/ / /
…
codifica i numeri 2 e 3, e il calcolo della funzione x+y si può realizzare in questo modo:
…
19/12/2015
/ /
/ / /
…
…
/ / / / /
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
…
28
Intorno al 1930 l’inglese Alan Turing e lo statunitense Alonso Church
proposero la seguente tesi:
ogni funzione “naturalmente considerata calcolabile”
è calcolabile da una macchina di Turing
La conseguenza è sorprendente:
l’insieme delle funzioni calcolabili è lo stesso per tutti i calcolatori;
le differenze di capacità tra calcolatori sono:
• quantitative (= tempo di calcolo)
• e non qualitative (= tipo di funzioni calcolabili)
19/12/2015
Informatica e cultura dell’informazione – capitolo 0 – Introduzione a STIC
29
Scarica

Un`introduzione alla scienza e alle tecnologie dell